{"openapi":"3.0.0","info":{"title":"Public API","version":"3.165.0","description":"The Public API provides server-to-server integration capabilities for your EV charging platform.\n"},"servers":[{"url":"https://{tenantUrl}","variables":{"tenantUrl":{"description":"The tenant identifier","default":"example.com"}}}],"tags":[{"name":"action / certificate","description":"Actions that can be triggered on a Certificate"},{"name":"action / charge point","description":"Actions that can be triggered in a charge point"},{"name":"action / circuit","description":"Actions that can be triggered on a Circuit"},{"name":"action / configuration template","description":"Actions that can be triggered on a Configuration Template"},{"name":"action / electricity meter","description":"Actions that can be triggered on an Electricity meter"},{"name":"action / evse","description":"Actions that can be triggered on a EVSE"},{"name":"action / flexibility asset","description":"Actions that can be triggered on a Flexibility asset"},{"name":"action / installer job","description":"Actions that can be triggered on a Installer job"},{"name":"action / invoice","description":"Actions that can be triggered on an Invoice"},{"name":"action / location","description":"Actions that can be triggered on a Location"},{"name":"action / notifications","description":"Actions that can be triggered on a Notification"},{"name":"action / parking space","description":"Actions that can be triggered on a Parking Space"},{"name":"action / partner settlement report","description":"Actions that can be triggered on a Partner Settlement Report"},{"name":"action / reservation","description":"Actions that can be triggered on a Reservation"},{"name":"action / roaming operator","description":"Actions that can be triggered on а Roaming Operator"},{"name":"action / session","description":"Actions that can be triggered on a Session"},{"name":"action / subscription-plan","description":"Actions that can be triggered on a Subscription Plan"},{"name":"action / tariff","description":"Actions that can be triggered on a Tariff"},{"name":"action / tax","description":"Actions that can be triggered on a Tax"},{"name":"action / transaction","description":"Actions that can be triggered on a Transaction"},{"name":"action / user","description":"Actions that can be triggered on a User"},{"name":"logs / communication","description":"Communication logs"},{"name":"logs / ocpi","description":"OCPI communication logs"},{"name":"notifications","description":"Webhook registration"},{"name":"resource / admins","description":"Admin resources"},{"name":"resource / authorizations","description":"Authorization resources"},{"name":"resource / booking requests","description":"Booking Request resources"},{"name":"resource / bookings","description":"Booking resources"},{"name":"resource / cdrs","description":"Cdr resources"},{"name":"resource / charge point downtime periods","description":"Charge Point Downtime Period resources"},{"name":"resource / charge point models","description":"Charge Point Models"},{"name":"resource / charge point vendors","description":"Charge Point Vendors resource"},{"name":"resource / charge points","description":"Charge Point resources"},{"name":"resource / circuits","description":"Circuit resources"},{"name":"resource / configuration templates","description":"Configuration Template resources"},{"name":"resource / consent-history","description":"Consent History resources"},{"name":"resource / consents","description":"Consent resources"},{"name":"resource / contact details","description":"Contact details resource"},{"name":"resource / currencies","description":"Currency resource"},{"name":"resource / currency rates","description":"Currency Rates resource"},{"name":"resource / custom fees","description":"Custom Fees resource"},{"name":"resource / downtime period notices","description":"Downtime Period Notice resources"},{"name":"resource / electricity meters","description":"Electricity meter resources"},{"name":"resource / electricity rates","description":"Electricity Rate resources"},{"name":"resource / evse downtime periods","description":"EVSE Downtime Period resources"},{"name":"resource / evses","description":"EVSE resources"},{"name":"resource / faqs","description":"FAQs resources"},{"name":"resource / firmware versions","description":"Firmware Version resources"},{"name":"resource / flexibility activation requests","description":"Flexibility Activation Requests resources"},{"name":"resource / flexibility assets","description":"Flexibility Assets resources"},{"name":"resource / id tags","description":"Id Tags resources"},{"name":"resource / installation and maintenance companies","description":"Installation And Maintenance Company resources"},{"name":"resource / installer jobs","description":"Installer Job resources"},{"name":"resource / invoices","description":"Invoice resources"},{"name":"resource / issues","description":"Issue resources"},{"name":"resource / locations","description":"Location resources"},{"name":"resource / operators","description":"Operator resources"},{"name":"resource / parking spaces","description":"Parking spaces resources"},{"name":"resource / partner contracts","description":"Partner Contract resources"},{"name":"resource / partner invites","description":"Partner Invite resources"},{"name":"resource / partner settlement reports","description":"Partner Settlement Report resources"},{"name":"resource / partners","description":"Partners resource"},{"name":"resource / payment terminals","description":"Payment Terminals resources"},{"name":"resource / provisioning certificate","description":"Provisioning Certificate resources"},{"name":"resource / receipts","description":"Receipt resource"},{"name":"resource / reservations","description":"Reservation resources"},{"name":"resource / revenues & expenses","description":"Revenue & Expenses resources"},{"name":"resource / rfids","description":"RFID Tags resources"},{"name":"resource / roaming connections","description":"Roaming Connection resources"},{"name":"resource / roaming operators","description":"Roaming Platform Operators resources"},{"name":"resource / roaming platforms","description":"Roaming Platform resources"},{"name":"resource / roaming providers","description":"Roaming Platform Providers resources"},{"name":"resource / roaming tariffs","description":"Roaming Tariffs resources"},{"name":"resource / security event logs","description":"Security Event Log resource"},{"name":"resource / security events","description":"Security Event resources"},{"name":"resource / sessions","description":"Session resources"},{"name":"resource / settings","description":"Setting resources"},{"name":"resource / sub operators","description":"Sub Operator resources"},{"name":"resource / subscription-plans","description":"Subscription Plan resources"},{"name":"resource / subscriptions","description":"Subscription resources"},{"name":"resource / tariffs","description":"Tariff resources"},{"name":"resource / tax identification numbers","description":"Tax Identification Numbers resource"},{"name":"resource / taxes","description":"Taxes resource"},{"name":"resource / templates","description":"Template resources"},{"name":"resource / terms and policies","description":"Terms and policies"},{"name":"resource / top-up packages","description":"Top-up Packages resource"},{"name":"resource / transactions","description":"Transaction resources"},{"name":"resource / user-groups","description":"User Groups resources"},{"name":"resource / users","description":"User resources"},{"name":"resource / utilities","description":"Utility resource"},{"name":"resource / vendor error codes","description":"Vendor Error Codes resource"},{"name":"resource / vouchers","description":"Vouchers resource"}],"security":[{"bearerAuth":[]}],"paths":{"/public-api/actions/charge-point/v1.0/{chargePoint}/change-availability":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointChangeAvailability","summary":"Charge Point / Change Availability","description":"change the availability to available or unavailable. A Charge Point is considered unavailable when it does not allow any charging.","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"evseNetworkId":{"type":"integer","description":"The id of the connector for which availability needs to change. If missing the availability of the Charge Point and all its connectors needs to change."},"type":{"type":"string","description":"the type of availability change that the Charge Point should perform\n* `Inoperative` Charge point is not available for charging.\n* `Operative` Charge point is available for charging.\n","enum":["Inoperative","Operative"]}},"required":["type"]}}}},"responses":{"202":{"description":"Action accepted"},"204":{"description":"Action scheduled. Request has been accepted and will be executed when transaction(s) in progress have finished."},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/change-owner":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointChangeOwner","summary":"Charge Point / Change Owner","description":"Change the owner of the Charge Point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","nullable":true,"description":"This User would become the owner of the personal charge point. If left empty - no Owner would be assigned."}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/clear-cache":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true,"description":"The system ID of the charge point to clear cache for"}],"post":{"operationId":"chargePointClearCache","summary":"Charge Point / Clear cache","description":"Clear cache of a charge point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","description":"Human-readable reason for clearing the cache. Used for audit logging purposes.","maxLength":255}},"required":["reason"]}}}},"responses":{"202":{"description":"Clear cache request accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the charge point","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing why the charge point rejected the action"}},"required":["message"]}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/clear-charging-profile":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointClearChargingProfile","summary":"Charge Point / Clear Charging Profile","description":"If you are not using networkId and not passing other criteria in the body it will clear the charging profile for the charge point (ChargePointMaxProfile). If you are using evse_network_id you will clear the charging profile just for that evse (TxDefaultProfile)","tags":["action / charge point"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","description":"The ID of the charging profile to clear."},"evseNetworkId":{"type":"string","description":"Specifies the ID of the connector for which to clear charging profiles. A connectorId of zero (0) specifies the charging profile for the overall Charge Point. Absence of this parameter means the clearing applies to all charging profiles that match the other criteria in the request."},"chargingProfilePurpose":{"type":"string","description":"Specifies to purpose of the charging profiles that will be cleared, if they meet the other criteria in the request."},"stackLevel":{"type":"number","description":"Specifies the stackLevel for which charging profiles will be cleared, if they meet the other criteria in the request."}}}}}},"responses":{"202":{"description":"Clear request accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/disconnect":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true,"description":"The system ID of the charge point to disconnect"}],"post":{"operationId":"chargePointDisconnect","summary":"Charge Point / Disconnect","description":"Disconnect a charge point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","description":"Human-readable reason for disconnecting the charge point. Used for audit logging purposes.","maxLength":255}},"required":["reason"]}}}},"responses":{"202":{"description":"Disconnect request accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/get-composite-schedule":{"parameters":[{"name":"chargePoint","in":"path","description":"The numeric ID of the charge point","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointGetCompositeSchedule","summary":"Charge Point / Get Composite Schedule","description":"Request the composite charging schedule from a charge point. When evseNetworkId is omitted, returns the combined schedule at grid connection level (connectorId=0).\n","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["duration"],"properties":{"evseNetworkId":{"type":"integer","description":"Connector to query. When omitted, returns the combined schedule at grid connection level (connectorId=0)."},"duration":{"type":"integer","description":"Length of the requested schedule in seconds."}}},"example":{"evseNetworkId":1,"duration":3600}}}},"responses":{"202":{"description":"Action accepted - returns the composite schedule","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["Accepted"],"description":"Accepted (schedule returned)."},"connectorId":{"type":"integer","description":"The connector the schedule applies to."},"scheduleStart":{"type":"string","format":"date-time","description":"Start time of the composite schedule."},"chargingSchedule":{"type":"object","description":"The schedule details.","properties":{"duration":{"type":"integer","description":"Duration of the schedule in seconds."},"startSchedule":{"type":"string","format":"date-time","description":"Start of the schedule."},"chargingRateUnit":{"type":"string","enum":["A","W"],"description":"Unit of the limit values: A (amperes) or W (watts)."},"minChargingRate":{"type":"number","description":"Minimum charging rate supported, in the unit specified by chargingRateUnit."},"chargingSchedulePeriod":{"type":"array","description":"List of schedule periods.","items":{"type":"object","required":["startPeriod","limit"],"properties":{"startPeriod":{"type":"integer","description":"Offset from scheduleStart in seconds."},"limit":{"type":"number","description":"Power or current limit during this period, in the unit specified by chargingRateUnit."},"numberPhases":{"type":"integer","description":"Number of phases that can be used for charging."}}}}}}}},"example":{"status":"Accepted","connectorId":1,"scheduleStart":"2026-03-26T12:00:00Z","chargingSchedule":{"duration":3600,"startSchedule":"2026-03-26T12:00:00Z","chargingRateUnit":"W","minChargingRate":0,"chargingSchedulePeriod":[{"startPeriod":0,"limit":11000,"numberPhases":3}]}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"The requested operation is not supported by the target device (e.g., the charge point does not implement the required feature)","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"408":{"description":"Request timeout - the target did not respond within the expected time","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"424":{"description":"The requested operation cannot be completed because it depends on communication with an external system (e.g., charge point) that is currently disconnected or unreachable","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/get-diagnostics":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointGetDiagnostics","summary":"Charge Point / Get Diagnostics","description":"Request a get diagnostics upload from the charge point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"FTP address to upload the diagnostics to"},"start":{"type":"string","format":"date-time","description":"Only get diagnostics that are created after this date-time"},"stop":{"type":"string","format":"date-time","description":"Only get diagnostics that are created before that date-time"}},"required":["location"]},"example":{"location":"ftp://user:password@example.com/path/to/store/logs","start":"2020-07-21T00:00:00.000Z"}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"requestId":{"type":"number","description":"The ID of the get status notification request. Notifications about the uplaod status will also contain this identifier"},"fileName":{"type":"string","description":"The file name that will be uploaded to the location you provided"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/get-local-list-version":{"parameters":[{"name":"chargePoint","in":"path","description":"The numeric ID of the charge point","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointGetLocalListVersion","summary":"Charge Point / Get Local List Version","description":"Request the current version number of the local authorization list from a charge point.\n","tags":["action / charge point"],"responses":{"200":{"description":"Success - returns the current local list version (greater than 0)","content":{"application/json":{"schema":{"type":"object","required":["versionNumber"],"properties":{"versionNumber":{"type":"integer","minimum":1,"description":"Current local list version number"}}},"example":{"versionNumber":5}}}},"204":{"description":"The charge point supports local authorization lists, but no list has been set"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"The requested operation is not supported by the target device (e.g., the charge point does not implement the required feature)","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"408":{"description":"Request timeout - the target did not respond within the expected time","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"424":{"description":"The requested operation cannot be completed because it depends on communication with an external system (e.g., charge point) that is currently disconnected or unreachable","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/get-security-log":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointGetSecurityLog","summary":"Charge Point / Get Security Log","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The URL of the location at the remote system where the log should be stored."},"reason":{"type":"string","description":"Reason kept in the action logs for future reference."},"retries":{"type":"integer","minimum":0,"maximum":10,"description":"This specifies how many times the Charge Point must try to upload the log before giving up. If this field is not present, it is left to Charge Point to decide how many times it wants to retry."},"interval":{"type":"integer","minimum":0,"maximum":3600,"description":"The interval in seconds after which a retry may be attempted. If this field is not present, it is left to Charge Point to decide how long to wait between attempts."},"startTime":{"type":"string","description":"This contains the date and time of the oldest logging information to include in the diagnostics. Please provide the value in the following format `Y-m-d H:i:s`."},"stopTime":{"type":"string","description":"This contains the date and time of the latest logging information to include in the diagnostics. Please provide the value in the following format `Y-m-d H:i:s`."}},"required":["url","reason"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string"},"file_name":{"type":"string"},"logType":{"type":"string","enum":["SecurityLog"]},"chargePointId":{"type":"integer"}},"required":["id","logType","chargePointId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action Rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/move-evses-to-satellite":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"summary":"Charge Point / Move EVSEs to Satellite","description":"Move one or more EVSEs from this charge point to a satellite charge point","operationId":"chargePointMoveEvsesToSatellite","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"satelliteChargePointId":{"type":"integer"},"evseIds":{"type":"array","items":{"type":"integer"}}},"required":["satelliteChargePointId","evseIds"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/reserve/{evse}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"The Network ID of the evse to reserve"}],"post":{"operationId":"chargePointReserve","summary":"Charge Point / Reserve","description":"Reserve an evse","tags":["action / charge point"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer"},"reason":{"type":"string","description":"In case reason is empty, following text \"Activated via API\" will be added automatically"}},"required":["userId"]}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"reservationId":{"type":"number","description":"The numeric representation of the reservation id being started"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/reset-security-profile":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointResetSecurityProfile","summary":"Charge Point / Reset Security Profile","description":"Reset the current security profile of the charge point in the backend. The next time the charge point connects, the backend will accept the connection and update the current security profile with the one that the charge point actually used to establish the connection","tags":["action / charge point"],"responses":{"202":{"description":"Action succeeded"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/reset/{type}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"type","in":"path","schema":{"type":"string","enum":["hard","soft"]},"required":true}],"post":{"operationId":"chargePointReset","summary":"Charge Point / Reset","description":"Reset a charge point","tags":["action / charge point"],"responses":{"202":{"description":"Reset request accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/send-custom-ocpp":{"parameters":[{"name":"chargePoint","in":"path","description":"The numeric ID of the charge point","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSendCustomOcpp","summary":"Charge Point / Send Custom OCPP Command","description":"Send a custom OCPP message to a charge point. This is a synchronous endpoint that waits for the charge point response or timeout. The raw response from the charge point is returned without transformation.\n","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"command":{"type":"string","description":"OCPP command name (e.g., \"GetConfiguration\", \"TriggerMessage\", \"SetChargingProfile\")"},"payload":{"type":"object","additionalProperties":true,"description":"JSON payload matching OCPP specification structure"}},"required":["command","payload"]},"example":{"command":"GetConfiguration","payload":{"key":["MeterValueSampleInterval"]}}}}},"responses":{"200":{"description":"Success - returns the raw response from the charge point","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Raw response from the charge point without transformation"},"example":{"configurationKey":[{"key":"MeterValueSampleInterval","readonly":false,"value":"60"}]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"408":{"description":"Request timeout - the target did not respond within the expected time","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"424":{"description":"The requested operation cannot be completed because it depends on communication with an external system (e.g., charge point) that is currently disconnected or unreachable","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/send-data-transfer":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSendDataTransfer","summary":"Charge Point / Send Data Transfer","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vendorId":{"type":"string","description":"The identifier of the vendor specific implementation."},"messageId":{"type":"string","nullable":true,"description":"Additional identification field."},"data":{"type":"string","nullable":true,"description":"Data without specified length or format"}},"required":["vendorId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["Accepted","Rejected","UnknownMessageId","UnknownVendorId"]},"data":{"type":"string","nullable":true}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/set-charging-profile/{evseNetworkId}":{"parameters":[{"name":"evseNetworkId","in":"path","schema":{"type":"integer"},"required":true,"description":"set to 0 to mean \"the charge point itself\""},{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSetChargingProfile","summary":"Charge Point / Set Charging Profile","description":"Set a smart charging profile","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"the smart charging profile to apply. See the OCPP documentation for further explanation on the fields","properties":{"transactionId":{"type":"integer"},"stackLevel":{"type":"integer"},"chargingProfilePurpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"]},"validFrom":{"type":"string","format":"date-time"},"validTo":{"type":"string","format":"date-time"},"chargingSchedule":{"type":"object","properties":{"id":{"type":"number","nullable":true},"duration":{"type":"integer"},"startSchedule":{"type":"string","format":"date-time"},"chargingRateUnit":{"type":"string","additionalProperties":false,"enum":["A","W"]},"chargingSchedulePeriod":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"minChargingRate":{"type":"number","multipleOf":0.1}},"required":["chargingRateUnit","chargingSchedulePeriod"]}},"required":["stackLevel","chargingProfilePurpose","chargingProfileKind","chargingSchedule"]}}}},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the charging profile that was applied"}}}}}}},"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/start":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointStartChargingSessionWithoutEvse","summary":"Charge Point / Start Charging Session Without EVSE","description":"Start a charging session","tags":["action / charge point"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Start session request body","properties":{"userId":{"type":"integer"},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing (User / Payment Method / Listing). When left empty or null, it would be determined by the system - either \"balance\" or \"subscription\" (in case the the user has an active post-paid subscription for home charging sessions and the charge point is a home charger). When it is NOT empty or null, userId is required.","nullable":true},"externalSessionId":{"deprecated":true,"type":"string","nullable":true,"description":"Deprecated: This field will be removed in version 2.0. Use `idTag` parameter instead.\n\nMigration: Replace all occurrences of `externalSessionId` with `idTag` in your start session requests.\nThe `idTag` parameter serves the same purpose and stores the value in the session's `idTag` field.\n\nBackward compatibility: When both `externalSessionId` and `idTag` are provided, `idTag` takes precedence.\n"},"idTag":{"type":"string","description":"Optional identifier tag for the charging session (e.g., RFID UID, authorization token).\nThis value will be stored in the session's `idTag` field and can be used for filtering sessions.\n"},"connectorId":{"type":"integer","nullable":true},"bookingId":{"type":"integer","nullable":true,"description":"The ID of the booking to link the session to. Returns a 422 error if the booking does not exist or if its status is not Accepted or Reserved."},"stopConditions":{"type":"object","nullable":true,"description":"Optional session stop conditions. When set, the session will automatically stop when any of the specified limits is reached.","properties":{"maxEnergyKwh":{"type":"number","nullable":true,"minimum":0.1,"description":"Maximum energy consumption in kWh. Session will stop when this limit is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxDurationMinutes":{"type":"integer","nullable":true,"minimum":1,"description":"Maximum session duration in minutes. Session will stop after this time. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxSocPercent":{"type":"integer","nullable":true,"minimum":1,"maximum":100,"description":"Maximum state of charge percentage. Session will stop when this SoC is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxAmount":{"type":"number","nullable":true,"minimum":0.01,"description":"Maximum cost allowed. Session will stop when charges reach this amount."}}}}}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","required":["success","authorizationId"],"properties":{"success":{"type":"boolean","description":"When the action is successful the value would be true. When the action is rejected the value would be false and additional information would be provided in the message property."},"authorizationId":{"type":"number","nullable":true,"description":"The numeric representation of the authorization. You need this in order to request session details."},"message":{"type":"string","description":"Additional information, only displayed when the action is rejected."},"errorCode":{"type":"string","enum":["BILLING_NOT_ASSOCIATED","BILLING_NOT_PARTNER_ASSOCIATED","INTERNAL_ISSUE","AGILE_STREETS_CALCULATE","AGILE_STREETS_COMMUNICATION","CHARGING_NOT_ALLOWED","LOCATION_IS_CLOSED","USER_VALIDATION_NOT_COMPLETE","TERMS_NOT_ACCEPTED","USER_IS_DISABLED","SUBSCRIPTION_REQUIRED","SESSION_ALREADY_RUNNING","PREVIOUS_SESSION_NOT_PAID","ACCESS_RESTRICTED"],"description":"Reason for the error causing the session to fail starting:\n  * `BILLING_NOT_ASSOCIATED` - The selected corporate billing is not associated with the user\n  * `BILLING_NOT_PARTNER_ASSOCIATED` - The selected corporate billing is allowed on EVSEs that are not associated with the partner\n  * `INTERNAL_ISSUE` - Internal issue\n  * `AGILE_STREETS_CALCULATE` - Agile Streets calculation issue\n  * `AGILE_STREETS_COMMUNICATION` - Could not connect with Agile Streets\n  * `CHARGING_NOT_ALLOWED` - The tariff does not allow to charge on this evse\n  * `LOCATION_IS_CLOSED` - Charge point's location is closed\n  * `USER_VALIDATION_NOT_COMPLETE` - Either your email or phone is not verified or your profile is not completed\n  * `TERMS_NOT_ACCEPTED` - User hasn't accepted latest Terms\n  * `USER_IS_DISABLED` - Your account is disabled\n  * `SUBSCRIPTION_REQUIRED` - You do not have an active subscription for this charging point\n  * `SESSION_ALREADY_RUNNING` - Having another running session is not allowed\n  * `PREVIOUS_SESSION_NOT_PAID` - Cannot start new session before paying the previous one\n  * `ACCESS_RESTRICTED` - You do not have access to this charge point\n"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/start/{evse}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"The networkID of the evse to start a session on"}],"post":{"operationId":"chargePointStartChargingSession","summary":"Charge Point / Start Charging Session","description":"Start a charging session","tags":["action / charge point"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"Start session request body","properties":{"userId":{"type":"integer"},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing (User / Payment Method / Listing). When left empty or null, it would be determined by the system - either \"balance\" or \"subscription\" (in case the the user has an active post-paid subscription for home charging sessions and the charge point is a home charger). When it is NOT empty or null, userId is required.","nullable":true},"externalSessionId":{"deprecated":true,"type":"string","nullable":true,"description":"Deprecated: This field will be removed in version 2.0. Use `idTag` parameter instead.\n\nMigration: Replace all occurrences of `externalSessionId` with `idTag` in your start session requests.\nThe `idTag` parameter serves the same purpose and stores the value in the session's `idTag` field.\n\nBackward compatibility: When both `externalSessionId` and `idTag` are provided, `idTag` takes precedence.\n"},"idTag":{"type":"string","description":"Optional identifier tag for the charging session (e.g., RFID UID, authorization token).\nThis value will be stored in the session's `idTag` field and can be used for filtering sessions.\n"},"connectorId":{"type":"integer","nullable":true},"bookingId":{"type":"integer","nullable":true,"description":"The ID of the booking to link the session to. Returns a 422 error if the booking does not exist or if its status is not Accepted or Reserved."},"stopConditions":{"type":"object","nullable":true,"description":"Optional session stop conditions. When set, the session will automatically stop when any of the specified limits is reached.","properties":{"maxEnergyKwh":{"type":"number","nullable":true,"minimum":0.1,"description":"Maximum energy consumption in kWh. Session will stop when this limit is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxDurationMinutes":{"type":"integer","nullable":true,"minimum":1,"description":"Maximum session duration in minutes. Session will stop after this time. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxSocPercent":{"type":"integer","nullable":true,"minimum":1,"maximum":100,"description":"Maximum state of charge percentage. Session will stop when this SoC is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxAmount":{"type":"number","nullable":true,"minimum":0.01,"description":"Maximum cost allowed. Session will stop when charges reach this amount."}}}}},{"type":"object","properties":{"chargingProfile":{"type":"object","description":"the smart charging profile to apply. See the OCPP documentation for further explanation on the fields","properties":{"transactionId":{"type":"integer"},"stackLevel":{"type":"integer"},"chargingProfilePurpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"]},"validFrom":{"type":"string","format":"date-time"},"validTo":{"type":"string","format":"date-time"},"chargingSchedule":{"type":"object","properties":{"id":{"type":"number","nullable":true},"duration":{"type":"integer"},"startSchedule":{"type":"string","format":"date-time"},"chargingRateUnit":{"type":"string","additionalProperties":false,"enum":["A","W"]},"chargingSchedulePeriod":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"minChargingRate":{"type":"number","multipleOf":0.1}},"required":["chargingRateUnit","chargingSchedulePeriod"]}},"required":["stackLevel","chargingProfilePurpose","chargingProfileKind","chargingSchedule"]}}}]}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","required":["success","sessionId","authorizationId"],"properties":{"success":{"type":"boolean","description":"When the action is successful the value would be true. When the action is rejected the value would be false and additional information would be provided in the message property."},"sessionId":{"type":"number","nullable":true,"description":"The numeric representation of the session id being started. You need this in order to request session stop."},"authorizationId":{"type":"number","nullable":true,"description":"The numeric representation of the authorization. You need this in order to request session details."},"message":{"type":"string","description":"Additional information, only displayed when the action is rejected."},"errorCode":{"type":"string","enum":["BILLING_NOT_ASSOCIATED","BILLING_NOT_PARTNER_ASSOCIATED","INTERNAL_ISSUE","SESSION_EXISTS","AGILE_STREETS_CALCULATE","AGILE_STREETS_COMMUNICATION","CHARGING_NOT_ALLOWED","LOCATION_IS_CLOSED","USER_VALIDATION_NOT_COMPLETE","TERMS_NOT_ACCEPTED","USER_IS_DISABLED","SUBSCRIPTION_REQUIRED","SESSION_ALREADY_RUNNING","PREVIOUS_SESSION_NOT_PAID","ACCESS_RESTRICTED","PAYMENT_METHOD_REQUIRED","CANNOT_BILL_PAYMENT_METHOD","CORPORATE_ACCOUNT_LIMIT_REACHED","CANNOT_USE_EXPIRED_PAYMENT_METHOD","CANNOT_USE_PAYMENT_METHOD","PAYMENT_NO_FUNDS"],"description":"Reason for the error causing the session to fail starting:\n  * `BILLING_NOT_ASSOCIATED` - The selected corporate billing is not associated with the user\n  * `BILLING_NOT_PARTNER_ASSOCIATED` - The selected corporate billing is allowed on EVSEs that are not associated with the partner\n  * `INTERNAL_ISSUE` - Internal issue\n  * `SESSION_EXISTS` - Session already exists\n  * `AGILE_STREETS_CALCULATE` - Agile Streets calculation issue\n  * `AGILE_STREETS_COMMUNICATION` - Could not connect with Agile Streets\n  * `CHARGING_NOT_ALLOWED` - The tariff does not allow to charge on this evse\n  * `LOCATION_IS_CLOSED` - Charge point's location is closed\n  * `USER_VALIDATION_NOT_COMPLETE` - Either your email or phone is not verified or your profile is not completed\n  * `TERMS_NOT_ACCEPTED` - User hasn't accepted latest Terms\n  * `USER_IS_DISABLED` - Your account is disabled\n  * `SUBSCRIPTION_REQUIRED` - You do not have an active subscription for this charging point\n  * `SESSION_ALREADY_RUNNING` - Having another running session is not allowed\n  * `PREVIOUS_SESSION_NOT_PAID` - Cannot start new session before paying the previous one\n  * `ACCESS_RESTRICTED` - You do not have access to this charge point\n  * `PAYMENT_METHOD_REQUIRED` - Cannot start a session without a payment method\n  * `CANNOT_BILL_PAYMENT_METHOD` - The payment method either is invalid or the partner does not allow billing\n  * `CORPORATE_ACCOUNT_LIMIT_REACHED` - Corporate billing is not allowed, corporate billing is not set up, corporate billing limit is reached or your payment method has insufficient funds.\n  * `CANNOT_USE_EXPIRED_PAYMENT_METHOD` - The payment method has expired\n  * `CANNOT_USE_PAYMENT_METHOD` - Payment method is not allowed or your subscription is cancelled\n  * `PAYMENT_NO_FUNDS` - The current balance is below the needed minimum amount or there are not enough funds in the credit card (works only if you use Stripe)\n"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/stop/{session}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"session","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointStopChargingSession","summary":"Charge Point / Stop Charging Session","description":"Stop a charging session","tags":["action / charge point"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"force":{"type":"boolean","default":false,"description":"Use force=true when you want to end the session reguardless of the CP response"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/sync-configuration":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSyncConfiguration","summary":"Charge Point / Sync Configuration","description":"Send a partial or full sync configuration request to the chargepoint. You will get back a requerstId that you can monitor the status of using the ChargePointSyncConfigurationNotification. Please note that calling this action should not be required, as each time the charge point boots the configuration is automatically synced. Under normal conditions it should be impossible for a configuration key to change at runtime without the central systems request.","tags":["action / charge point"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","description":"List of keys to request a get configuration for. Omit or pass empty array to request all available configuration keys.","default":[],"items":{"oneOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]}}}}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"requestId":{"type":"number","description":"The ID of the sync configuration notification request. Notifications about the synced configuration will also contain this identifier"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/trigger-message":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointTriggerMessageChargePoint","summary":"Charge Point / Trigger Message Charge Point","description":"Trigger message to given Charge Point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of the message to be triggered. Messages available only for 2.0.1 chargers - LogStatusNotification, PublishFirmwareStatusNotification, SignChargingStationCertificate, SignCombinedCertificate, TransactionEvent","enum":["BootNotification","DiagnosticsStatusNotification","LogStatusNotification","FirmwareStatusNotification","PublishFirmwareStatusNotification","Heartbeat","MeterValues","StatusNotification","SignV2GCertificate","SignChargingStationCertificate","SignCombinedCertificate","TransactionEvent"]}},"required":["type"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v1.0/{chargePoint}/unlock/{evse}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"The networkID of the evse to be unlocked"}],"post":{"operationId":"chargePointEvseUnlock","summary":"Charge Point / EVSE / Unlock","description":"Unlock an EVSE","tags":["action / charge point"],"responses":{"202":{"description":"Unlock request accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid or problem with processing the request has occurred","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"errors":{"type":"object","nullable":true}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/change-sharing-code":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointChangeSharingCode","summary":"Charge Point / Change sharing code","description":"Change sharing code for the Charge Point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sharingCode":{"type":"string","description":"The sharing code which provides access to the personal charge point for other users aside from the owner. If left empty the current code will be deleted"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/delete-certificate":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the charge point"}],"post":{"summary":"Charge Point / Delete Certificate","description":"Delete certificate","operationId":"chargePointDeleteCertificate","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"certificateType":{"type":"string","enum":["ChargingStationCertificate","V2GCertificate","V2GRootCertificate","MORootCertificate","CSMSRootCertificate","ManufacturerRootCertificate","V2GCertificateChain"],"description":"Indicates the type of certificate that is to be installed on the CP."}},"required":["certificateType"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/install-certificate":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"summary":"Charge Point / Install Certificate","operationId":"chargePointInstallCertificate","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"certificateType":{"type":"string","enum":["V2GRootCertificate","MORootCertificate","CSMSRootCertificate","ManufacturerRootCertificate","CentralSystemRootCertificate"],"description":"Indicates the type of certificate that is to be installed on the CP."}},"required":["certificateType"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/set-configuration":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSetConfiguration","summary":"Charge Point / Set Configuration","description":"Set Configuration for the Charge Point","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Value to be assigned to specific configuration key"},"name":{"type":"string","description":"Name of the variable of the configuration key"},"instance":{"type":"string","description":"Specify instance for OCPP 2.0.1 configuration keys"},"componentName":{"type":"string","description":"Required in order to specify component name for OCPP 2.0.1 configuration keys"},"evseId":{"type":"integer","description":"ID of the EVSE. Only for OCPP 2.0.1 configuration keys"}},"required":["value","name"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/set-security-profile":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointSetSecurityProfile","summary":"Charge Point / Set Security Profile","description":"Set the security profile of the charge point. This operation installs Amazon root certificates (RSA & EC) and attempts to raise the security profile to the specified level. Only allows raising the profile (transitions 0→1, 0→2, 1→2), not lowering it.","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["setSecurityProfile","reason"],"properties":{"setSecurityProfile":{"type":"integer","enum":[1,2],"description":"Target security profile level:\n- 1: Unsecured transport with basic authentication (plain-text authentication)\n- 2: TLS with basic authentication (encrypted authentication)\n"},"reason":{"type":"string","maxLength":500,"description":"Free text reason for changing the security profile"}}}}}},"responses":{"202":{"description":"Action accepted and is being processed asynchronously","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates whether the operation was accepted"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Invalid transition - occurs when:\n- Attempting to lower the security profile (e.g., 2→1, 2→0, 1→0)\n- Attempting to set the same security profile level (e.g., 1→1, 2→2)\n- Charge point does not support security profiles (max_security_profile is null)\n- Requested level exceeds the charge point's maximum supported security profile\n","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string","description":"Descriptive error message explaining why the transition failed. Possible messages include:\n- Cannot transition from security profile 2 to 1. Only raising the profile is allowed.\n- Cannot set security profile to 2. Charge point does not support security profiles.\n- Cannot set security profile to 2. Charge point's maximum supported level is 1.\n","example":"Cannot transition from security profile 2 to 1. Only raising the profile is allowed."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/sync-certificates":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"summary":"Charge Point / Get Installed Certificate IDs","operationId":"chargePointGetInstalledCertificateIds","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"certificateType":{"type":"string","nullable":true,"enum":["V2GRootCertificate","MORootCertificate","CSMSRootCertificate","V2GCertificateChain","ManufacturerRootCertificate"],"description":"Indicates the type of certificates requested. Default value to be empty - the system should interpret the Null/empty value that all certificate types are requested."}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/charge-point/v2.0/{chargePoint}/update-firmware":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointUpdateFirmware","summary":"Charge Point / Update Firmware","tags":["action / charge point"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Location (URL) from which to retrieve the firmware. Either this or `firmwareVersionId` must be provided."},"firmwareVersionId":{"type":"integer","description":"ID of a Firmware Version. Either this or `url` must be provided."},"retrieveAfter":{"type":"string","format":"date-time","description":"Specifies the date and time after which the Charge Point should retrieve the new firmware. If not provided, the current *datetime* will be used."},"retries":{"type":"integer","minimum":0,"maximum":10,"description":"Specifies how many times the Charge Point must try to retrieve the (new) firmware before giving up."},"interval":{"type":"integer","minimum":0,"maximum":3600,"description":"The interval in seconds between each retry."},"signed":{"type":"boolean","description":"Indicates a Signed Firmware Update."},"signingCertificate":{"type":"string","description":"Required if \"signed\" is true."},"signature":{"type":"string","description":"Required if \"signed\" is true."},"downloadUrlProtocol":{"type":"string","enum":["http","https"],"description":"Protocol to use for the firmware download URL when using firmware repository. Use HTTP only if the charge point does not support encrypted connections."}},"required":["signed"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/attach-charge-point":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitAttachChargePoint","summary":"Circuit / Attach Charge Point","description":"To maintain safety and compatibility, only charge points with an identical electrical configuration to the circuit can be added.","tags":["action / circuit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chargePointId":{"type":"integer"},"priority":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float"}},"required":["chargePointId"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/detach-charge-point/{chargePoint}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitDetachChargePoint","summary":"Circuit / Detach Charge Point","tags":["action / circuit"],"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/set-charge-point-priority/{chargePoint}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitSetChargePointPriority","summary":"Circuit / Set Charge Point Priority","tags":["action / circuit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priority":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float"}},"required":["priority"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/set-charge-point-priority/{chargePoint}/evse/{evse}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitSetChargePointEvsePriority","summary":"Circuit / Set Charge Point EVSE Priority","tags":["action / circuit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priority":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float"}},"required":["priority"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/set-circuit-soc-priorities":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitSetCircuitSocPriority","summary":"Circuit / Set Circuit SoC Priority","description":"Set DLM priority based on the session's state of charge (SoC). The active priority will be used to either decrease or increase the energy used by the session's EVSE.\n- If the SoC exceeds the `upperThresholdPercent`, then the `highSoCPriority` will be applied.\n- If the SoC is below the `lowerThresholdPercent`, then the `lowSoCPriority` will be applied.\n- If neither of the above conditions is true, then the priority is set to 1.\n\nYou can provide either the `upperThresholdPercent` with the `highSoCPriority` or the `lowerThresholdPercent` with the `lowSoCPriority` or both pairs. When a lower or upper threshold is not set, the default priority of 1 will be used.\n","tags":["action / circuit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/circuit/v2.0/{circuit}/set-session-priority/{session}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"session","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"circuitSetSessionPriority","summary":"Circuit / Set Session Priority","tags":["action / circuit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priority":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float"}},"required":["priority"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/configuration-template/v1.0/{template}/apply-to-charge-points":{"parameters":[{"name":"template","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"configurationTemplateApplyToChargePoints","summary":"Configuration Template / Apply to Charge Points","description":"Apply a configuration template to charge points.","tags":["action / configuration template"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chargePointIds":{"type":"array","description":"Array of charge point IDs the template will be applied to.","items":{"type":"integer"}},"shouldPersist":{"type":"boolean","description":"Specifies whether the configuration template will be enforced each time the charge point boots.","default":false}}}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Invalid request parameters"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/actions/configuration-template/v1.0/{template}/insert-bulk-variables":{"parameters":[{"name":"template","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"configurationTemplateBulkCreateVariables","summary":"Configuration Template / Bulk Create Variables","description":"Create multiple variables for a specific configuration template, adds them to the already existing keys and validates if there are duplicates.","tags":["action / configuration template"],"parameters":[{"name":"template","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"title":"Configuration variable for OCPP 1.6","required":["keyName","value"],"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","required":["value","variableName","component"],"type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}}}}},"responses":{"200":{"description":"Configuration Template Variables created successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/actions/electricity-meter/v1.0/{electricityMeter}/report-consumption":{"parameters":[{"name":"electricityMeter","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"electricityMeterReportConsumption","summary":"Electricity Meter / Report Consumption","description":"Add an electricity meter report for the meter readings at the current moment","tags":["action / electricity meter"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"The timestamp of the measurements. ISO 8601 formatted date."},"currentL1":{"type":"integer","minimum":0,"maximum":5000000,"description":"The current on L1 in milliamperes (mA)"},"currentL2":{"type":"integer","minimum":0,"maximum":5000000,"description":"The current on L2 in milliamperes (mA)"},"currentL3":{"minimum":0,"maximum":5000000,"type":"integer","description":"The current on L3 in milliamperes (mA)"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/evse/v1.0/bulk-assign-tariff-group":{"post":{"operationId":"evseBulkAssignTariffGroups","summary":"EVSEs / Bulk Assign Tariff Groups","description":"Bulk assign tariff groups for multiple EVSEs. This action allows you to assign or unassign tariff groups\nto multiple EVSEs at once, filtered by location, partner, evses and tariff groups.\n\nThe update is processed synchronously and there is a limit of max 1000 EVSEs per request.\n","tags":["action / evse"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tariffGroupId"],"properties":{"filters":{"type":"object","description":"Optional filters to select EVSEs for bulk update","properties":{"locationIds":{"type":"array","description":"Filter EVSEs by location IDs","items":{"type":"integer"},"example":[1,2,3]},"partnerIds":{"type":"array","description":"Filter EVSEs by partner IDs","items":{"type":"integer"},"example":[10,20]},"evseIds":{"type":"array","description":"Filter EVSEs by EVSE IDs","items":{"type":"integer"},"example":[10,20]},"chargePointIds":{"type":"array","description":"Filter EVSEs by Charge point IDs","items":{"type":"integer"},"example":[10,20]},"tariffGroupIds":{"type":"array","description":"Filter EVSEs by tariff group IDs","items":{"type":"integer"},"example":[10,20]}}},"tariffGroupId":{"type":"integer","nullable":true,"description":"The tariff group ID to assign (null to unassign)","example":42}},"example":{"filters":{"locationIds":[1,2],"partnerIds":[10],"evseIds":[10,20],"chargePointIds":[10,20],"tariffGroupIds":[10]},"tariffGroupId":42}}}}},"responses":{"202":{"description":"Action accepted"},"204":{"description":"Action scheduled. Request has been accepted and will be executed when transaction(s) in progress have finished."},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/evse/v1.0/{evse}/start":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the evse to start a session on"}],"post":{"operationId":"evseStartChargingWithEvseId","summary":"EVSE / Start Charging with EVSE ID","description":"Start a charging session","tags":["action / evse"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"Start session request body","properties":{"userId":{"type":"integer"},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing (User / Payment Method / Listing). When left empty or null, it would be determined by the system - either \"balance\" or \"subscription\" (in case the the user has an active post-paid subscription for home charging sessions and the charge point is a home charger). When it is NOT empty or null, userId is required.","nullable":true},"externalSessionId":{"deprecated":true,"type":"string","nullable":true,"description":"Deprecated: This field will be removed in version 2.0. Use `idTag` parameter instead.\n\nMigration: Replace all occurrences of `externalSessionId` with `idTag` in your start session requests.\nThe `idTag` parameter serves the same purpose and stores the value in the session's `idTag` field.\n\nBackward compatibility: When both `externalSessionId` and `idTag` are provided, `idTag` takes precedence.\n"},"idTag":{"type":"string","description":"Optional identifier tag for the charging session (e.g., RFID UID, authorization token).\nThis value will be stored in the session's `idTag` field and can be used for filtering sessions.\n"},"connectorId":{"type":"integer","nullable":true},"bookingId":{"type":"integer","nullable":true,"description":"The ID of the booking to link the session to. Returns a 422 error if the booking does not exist or if its status is not Accepted or Reserved."},"stopConditions":{"type":"object","nullable":true,"description":"Optional session stop conditions. When set, the session will automatically stop when any of the specified limits is reached.","properties":{"maxEnergyKwh":{"type":"number","nullable":true,"minimum":0.1,"description":"Maximum energy consumption in kWh. Session will stop when this limit is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxDurationMinutes":{"type":"integer","nullable":true,"minimum":1,"description":"Maximum session duration in minutes. Session will stop after this time. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxSocPercent":{"type":"integer","nullable":true,"minimum":1,"maximum":100,"description":"Maximum state of charge percentage. Session will stop when this SoC is reached. When both session-level and tariff-level limits exist, the lower value is enforced."},"maxAmount":{"type":"number","nullable":true,"minimum":0.01,"description":"Maximum cost allowed. Session will stop when charges reach this amount."}}}}},{"type":"object","properties":{"chargingProfile":{"type":"object","description":"the smart charging profile to apply. See the OCPP documentation for further explanation on the fields","properties":{"transactionId":{"type":"integer"},"stackLevel":{"type":"integer"},"chargingProfilePurpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"]},"validFrom":{"type":"string","format":"date-time"},"validTo":{"type":"string","format":"date-time"},"chargingSchedule":{"type":"object","properties":{"id":{"type":"number","nullable":true},"duration":{"type":"integer"},"startSchedule":{"type":"string","format":"date-time"},"chargingRateUnit":{"type":"string","additionalProperties":false,"enum":["A","W"]},"chargingSchedulePeriod":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"minChargingRate":{"type":"number","multipleOf":0.1}},"required":["chargingRateUnit","chargingSchedulePeriod"]}},"required":["stackLevel","chargingProfilePurpose","chargingProfileKind","chargingSchedule"]}}}]}}}},"responses":{"202":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","required":["success","sessionId","authorizationId"],"properties":{"success":{"type":"boolean","description":"When the action is successful the value would be true. When the action is rejected the value would be false and additional information would be provided in the message property."},"sessionId":{"type":"number","nullable":true,"description":"The numeric representation of the session id being started. You need this in order to request session stop."},"authorizationId":{"type":"number","nullable":true,"description":"The numeric representation of the authorization. You need this in order to request session details."},"message":{"type":"string","description":"Additional information, only displayed when the action is rejected."},"errorCode":{"type":"string","enum":["BILLING_NOT_ASSOCIATED","BILLING_NOT_PARTNER_ASSOCIATED","INTERNAL_ISSUE","SESSION_EXISTS","AGILE_STREETS_CALCULATE","AGILE_STREETS_COMMUNICATION","CHARGING_NOT_ALLOWED","LOCATION_IS_CLOSED","USER_VALIDATION_NOT_COMPLETE","TERMS_NOT_ACCEPTED","USER_IS_DISABLED","SUBSCRIPTION_REQUIRED","SESSION_ALREADY_RUNNING","PREVIOUS_SESSION_NOT_PAID","ACCESS_RESTRICTED","PAYMENT_METHOD_REQUIRED","CANNOT_BILL_PAYMENT_METHOD","CORPORATE_ACCOUNT_LIMIT_REACHED","CANNOT_USE_EXPIRED_PAYMENT_METHOD","CANNOT_USE_PAYMENT_METHOD","PAYMENT_NO_FUNDS"],"description":"Reason for the error causing the session to fail starting:\n  * `BILLING_NOT_ASSOCIATED` - The selected corporate billing is not associated with the user\n  * `BILLING_NOT_PARTNER_ASSOCIATED` - The selected corporate billing is allowed on EVSEs that are not associated with the partner\n  * `INTERNAL_ISSUE` - Internal issue\n  * `SESSION_EXISTS` - Session already exists\n  * `AGILE_STREETS_CALCULATE` - Agile Streets calculation issue\n  * `AGILE_STREETS_COMMUNICATION` - Could not connect with Agile Streets\n  * `CHARGING_NOT_ALLOWED` - The tariff does not allow to charge on this evse\n  * `LOCATION_IS_CLOSED` - Charge point's location is closed\n  * `USER_VALIDATION_NOT_COMPLETE` - Either your email or phone is not verified or your profile is not completed\n  * `TERMS_NOT_ACCEPTED` - User hasn't accepted latest Terms\n  * `USER_IS_DISABLED` - Your account is disabled\n  * `SUBSCRIPTION_REQUIRED` - You do not have an active subscription for this charging point\n  * `SESSION_ALREADY_RUNNING` - Having another running session is not allowed\n  * `PREVIOUS_SESSION_NOT_PAID` - Cannot start new session before paying the previous one\n  * `ACCESS_RESTRICTED` - You do not have access to this charge point\n  * `PAYMENT_METHOD_REQUIRED` - Cannot start a session without a payment method\n  * `CANNOT_BILL_PAYMENT_METHOD` - The payment method either is invalid or the partner does not allow billing\n  * `CORPORATE_ACCOUNT_LIMIT_REACHED` - Corporate billing is not allowed, corporate billing is not set up, corporate billing limit is reached or your payment method has insufficient funds.\n  * `CANNOT_USE_EXPIRED_PAYMENT_METHOD` - The payment method has expired\n  * `CANNOT_USE_PAYMENT_METHOD` - Payment method is not allowed or your subscription is cancelled\n  * `PAYMENT_NO_FUNDS` - The current balance is below the needed minimum amount or there are not enough funds in the credit card (works only if you use Stripe)\n"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/evse/v1.0/{evse}/trigger-message":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"evseTriggerMessage","summary":"EVSE / Trigger Message","description":"Trigger message to given EVSE","tags":["action / evse"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of the message to be triggered. Messages available only for 2.0.1 chargers - LogStatusNotification, PublishFirmwareStatusNotification, SignChargingStationCertificate, SignCombinedCertificate, TransactionEvent","enum":["BootNotification","DiagnosticsStatusNotification","LogStatusNotification","FirmwareStatusNotification","PublishFirmwareStatusNotification","Heartbeat","MeterValues","StatusNotification","SignV2GCertificate","SignChargingStationCertificate","SignCombinedCertificate","TransactionEvent"]}},"required":["type"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/flexibility-asset/v1.0/{flexibilityAsset}/change-status":{"post":{"summary":"Flexibility Asset / Change Status","description":"Change the status of the Flexibility Asset","operationId":"changeFlexibilityAssetStatus","tags":["action / flexibility asset"],"parameters":[{"name":"flexibilityAsset","in":"path","required":true,"description":"ID of the Flexibility Asset","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}},"required":["status"]}}}},"responses":{"201":{"description":"The status of the Asset is changed","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}},"required":["status"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/flexibility-asset/v1.0/{flexibilityAsset}/create-activation-request":{"post":{"summary":"Flexibility Asset / Create Activation Request","description":"Create Flexibility Activation Request for a specific Asset","operationId":"flexibilityAssetCreateActivationRequest","tags":["action / flexibility asset"],"parameters":[{"name":"flexibilityAsset","in":"path","required":true,"description":"ID of the Flexibility Asset","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"periods":{"type":"array","items":{"allOf":[{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"energy":{"type":"integer","format":"int64","description":"The target energy (Wh) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n"},"maxPower":{"type":"integer","format":"int64","description":"The target power (W) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n"}}}],"required":["startTime","endTime"]}}}}}}},"responses":{"201":{"description":"Flexibility Activation Request created for the Asset","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Activation Request","readOnly":true},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the request creation","readOnly":true},"assetId":{"type":"number","description":"ID of the Flexibility Asset related to the request","readOnly":true},"periods":{"type":"array","items":{"allOf":[{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"energy":{"type":"integer","format":"int64","description":"The target energy (Wh) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true},"maxPower":{"type":"integer","format":"int64","description":"The target power (W) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true}}}]}}},"required":["id","assetId","timestamp","periods"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/id-tag/v1.0/{idTag}/reissue-emaid":{"parameters":[{"name":"idTag","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"certificateReissueAnEmaid","summary":"Certificate / Reissue an EMAID","tags":["action / certificate"],"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/installer-job/v1.0/{installerJob}/assign-charge-points":{"parameters":[{"name":"installerJob","in":"path","schema":{"type":"integer"},"required":true}],"post":{"summary":"Actions / Assign Charge Points","description":"Assign charge points to an installer job","operationId":"assignInstallerJobChargePoints","tags":["action / installer job"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chargePointIds":{"type":"array","items":{"type":"integer"},"description":"List of charge point IDs to be assigned to the installer job, if passed chargingZoneId and locationId will be ignored"},"chargingZoneId":{"type":"integer","description":"The ID of the charging zone, if passed and chargePointIds are not provided, all the charge points in the specified charging zone will be assigned to the installer job and locationId will be ignored"},"locationId":{"type":"integer","description":"The ID of the location, if passed and neither chargePointIds nor chargingZoneId are provided, all charge points in the specified location will be assigned to the installer job"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected, possible reason could be if none of locationId, chargingZoneId or chargePointIds is provided"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/installer-job/v1.0/{installerJob}/change-status":{"parameters":[{"name":"installerJob","in":"path","schema":{"type":"integer"},"required":true}],"post":{"summary":"Actions / Change Status","description":"Change the status of an installer job","operationId":"changeInstallerJobStatus","tags":["action / installer job"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, ignored if the status is not \"completed\" or \"failed\""}},"required":["status"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected, possible reason could be if if the existing status is already the same as provided"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/invoice/v1.0/{invoice}/update-external-id":{"parameters":[{"name":"invoice","in":"path","schema":{"type":"integer"},"required":true,"description":"The invoice ID to update"}],"post":{"operationId":"invoiceUpdateExternalId","summary":"Invoice / Update External ID","description":"Update the external ID reference for an invoice. This allows linking the invoice to an external accounting or ERP system.","tags":["action / invoice"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"maxLength":255,"description":"Reference identifier from external accounting or ERP system. Set to null or empty string to clear."}},"required":["externalId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["invoice","pro_forma","credit_note"],"description":"The type of the invoice"},"number":{"type":"string","description":"The unique number presented on the invoice"},"date":{"type":"string","format":"date-time","description":"The date on which the invoice was issued"},"userId":{"type":"integer","description":"The id of the user in the backend, to whom the invoice is being issued. Can be -1 in case the invoice is issued to no particular user"},"periodFrom":{"type":"string","format":"date-time","description":"The timestamp of the first transaction included in the invoice","nullable":true},"periodTo":{"type":"string","format":"date-time","description":"The timestamp of the last transaction included in the invoice","nullable":true},"totalEnergy":{"type":"number","description":"The total energy accounted by the sessions that the invoice transactions correspond to"},"totalAmount":{"type":"number","description":"The total amount (including tax) of the invoice"},"taxRate":{"type":"integer","description":"The tax percent applied to the invoice"},"taxAmount":{"type":"number","description":"The amount of tax applied to the invoice"},"service":{"type":"string","description":"The service for which the invoice is being issued"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"subtotal":{"type":"number","description":"Total price for the service"},"downloadUrl":{"type":"string","description":"The invoice can be downloaded from here. The link expires in 24 hours."},"paymentStatus":{"type":"string","enum":["paid","partially_paid","pending"]},"externalId":{"type":"string","description":"Reference identifier from external accounting or ERP system."},"client":{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"email":{"oneOf":[{"title":"Email Address","type":"string","format":"email"},{"title":"Empty Email","type":"string","minLength":0,"maxLength":0}]},"id":{"type":"string","description":"The ID identifying the client (personal id or company id)"},"taxId":{"type":"string"},"taxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"}},"required":["type","name","country"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","number","date","totalAmount","taxRate","taxAmount","service","quantity","unitPrice","subtotal"]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/locations/v2.0/{location}/check-booking-availability":{"post":{"operationId":"locationCheckBookingAvailability","tags":["action / location"],"summary":"Location / Check Booking Availability","description":"Get a consolidated view of EVSEs availability for a given location and time frame.\nReturns available time slots for each bookable EVSE at the location.\n","parameters":[{"in":"path","name":"location","schema":{"type":"integer"},"required":true,"description":"Location ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request for checking booking availability at a location","properties":{"startAfter":{"type":"string","format":"date-time","description":"Start of the time frame to check"},"endBefore":{"type":"string","format":"date-time","description":"End of the time frame to check. Time-frame is limited to 7 days."}},"required":["startAfter","endBefore"]}}}},"responses":{"200":{"description":"Availability check successful","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Availability information for a specific EVSE","properties":{"evseId":{"type":"integer"},"availableSlots":{"type":"array","items":{"type":"object","description":"Time slot representing an available booking period","properties":{"startAt":{"type":"string","format":"date-time","description":"Start time of the available slot"},"endAt":{"type":"string","format":"date-time","description":"End time of the available slot"}},"required":["startAt","endAt"]},"description":"Array of available time slots"}},"required":["evseId","availableSlots"]},"description":"Array of EVSE availability information for a location"}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/notifications/v1.0/{notification}/resend":{"parameters":[{"name":"notification","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"notificationsResendFailed","summary":"Notifications / Resend Failed","description":"Resend failed webhook notifications.\n\n- Resend for a specific notification ID can be requested once every 15 minutes.\n- Notifications that are disabled cannot be resent.\n- Each failed notification will be resent only once. If it fails again, it will be added back to the failed notifications list.\n","tags":["action / notifications"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"startTime":{"type":"string","format":"datetime","description":"Resend all failed notifications from this date onwards."},"endTime":{"type":"string","format":"datetime","description":"Resend all failed notifications up to this date."}},"required":["notifications"]}}}},"responses":{"202":{"description":"Action accepted"},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/parking-spaces/v1.0/{parkingSpace}/update-occupancy-status":{"parameters":[{"name":"parkingSpace","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"parkingSpaceUpdateOccupancyStatus","summary":"Parking Space / Update occupancy status","tags":["action / parking space"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["available","occupied"]}},"required":["status"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/partner-settlement-report/v1.0/{partnerSettlementReport}/update-external-id":{"parameters":[{"name":"partnerSettlementReport","in":"path","schema":{"type":"integer"},"required":true,"description":"The partner settlement report ID to which the action will be applied"}],"post":{"operationId":"partnerSettlementReportUpdateExternalId","summary":"Partner Settlement Report / Update External ID","description":"Update or clear the external invoice reference ID for a partner settlement report. Used for integration with external accounting systems.","tags":["action / partner settlement report"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string","nullable":true,"maxLength":255,"description":"External invoice or reference ID for integration with external accounting systems. Set to null or empty string to clear."}},"required":["externalId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"Unique settlement report identifier."},"partnerId":{"type":"integer","description":"Unique identifier of the partner involved in the settlement."},"number":{"type":"string","description":"Settlement report reference number."},"date":{"type":"string","format":"date","description":"Date the settlement report was generated."},"periodStart":{"type":"string","format":"date","description":"Start date of the period covered by the report."},"periodEnd":{"type":"string","format":"date","description":"End date of the period covered by the report."},"currencyCode":{"type":"string","description":"Currency used in the settlement (e.g., USD, EUR)."},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"}},"required":["withoutTax"],"description":"Total settlement amount."},"totalExpenses":{"type":"number","description":"Total expenses incurred during the settlement period."},"totalRevenue":{"type":"number","description":"Total revenue generated during the settlement period."},"totalAwaitedRevenue":{"type":"number","description":"Revenue expected but not yet collected."},"totalCollectedRevenue":{"type":"number","description":"Revenue collected during the settlement period."},"totalCollectedRevenueFromPreviousPeriod":{"type":"number","description":"Revenue collected during this period, but related to a previous periods."},"totalEnergyCpoWh":{"type":"number","description":"Total amount of energy (in Wh) delivered by the Charge Point Operator."},"totalEnergyEmspWh":{"type":"number","description":"Total amount of energy (in Wh) consumed by the EMSP."},"supplier":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]}],"description":"Company details for the entity supplying the service - the CPO."},"customer":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]},{"type":"object","properties":{"bankIban":{"type":"string","nullable":true},"bankName":{"type":"string","nullable":true},"bankAddress":{"type":"string","nullable":true},"bankCode":{"type":"string","nullable":true},"bankAccountNumber":{"type":"string","nullable":true},"bankAccountType":{"type":"string","nullable":true}},"required":["bankIban","bankName","bankAddress","bankCode","bankAccountNumber","bankAccountType"]}],"description":"Company details for the entity receiving the service - the Partner/EMSP."},"downloadUrl":{"type":"string","format":"url","description":"Link to download the full settlement report document."},"externalId":{"type":"string","description":"External invoice or reference ID for integration with external accounting systems."},"deductedFees":{"description":"Aggregated deducted fees for the settlement period. Included only when at least one fee is non-zero.","type":"object","properties":{"feePerSessionAc":{"type":"number","description":"Total fixed fee for AC sessions in the settlement period."},"feePerSessionDc":{"type":"number","description":"Total fixed fee for DC sessions in the settlement period."},"feePerKwhAc":{"type":"number","description":"Total fee per AC kWh delivered in the settlement period."},"feePerKwhDc":{"type":"number","description":"Total fee per DC kWh delivered in the settlement period."},"handlingFee":{"type":"number","description":"Total percentage-based handling fee for the settlement period."}},"required":["feePerSessionAc","feePerSessionDc","feePerKwhAc","feePerKwhDc","handlingFee"]}},"required":["id","partnerId","number","date","periodStart","periodEnd","currencyCode","totalAmount","totalExpenses","totalRevenue","totalAwaitedRevenue","totalCollectedRevenue","totalCollectedRevenueFromPreviousPeriod","totalEnergyCpoWh","totalEnergyEmspWh","supplier","customer","downloadUrl"]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/provisioning-certificate/v1.0/{provisioningCertificate}/issue-emaid":{"parameters":[{"name":"provisioningCertificate","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"certificateIssueAnEmaid","summary":"Certificate / Issue an EMAID","tags":["action / certificate"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethod":{"type":"string","nullable":true,"description":"The payment method that will be associated with the EMAID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"501":{"description":"Action not implemented"}}}},"/public-api/actions/reservation/v1.0/{reservation}/cancel":{"parameters":[{"name":"reservation","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"reservationCancel","summary":"Reservation / Cancel","description":"Cancel a reservation","tags":["action / reservation"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"force":{"type":"boolean","default":false,"description":"Use force=true when you want to end the reservation regardless of the CP response"},"reason":{"type":"string","nullable":true,"description":"In case reason is empty, following text \"Activated via API\" will be added automatically"}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected by the Charge Point"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/roaming-operator/v2.0/{roamingOperator}/custom-tariff-filter/{customTariffFilter}/set-pricing-data":{"post":{"operationId":"updateCustomTariffFilterTariff","summary":"Custom Tariff Filters / Set Pricing Data","description":"Set the pricing data for a custom tariff filter.\nThis action will update the underling roaming tariff and create a pricing based on it.\nThe pricing can then be utilized by attaching a markup tariff to the tariff map of the custom tariff filter.\nThe pricing data must follow the OCPI 2.2.1 Tariff object specification.\n","tags":["action / roaming operator"],"parameters":[{"name":"roamingOperator","in":"path","description":"The ID of the roaming operator","required":true,"schema":{"type":"integer","example":123}},{"name":"customTariffFilter","in":"path","description":"The ID of the custom tariff filter","required":true,"schema":{"type":"integer","example":456}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","currency","elements","last_updated"],"properties":{"country_code":{"type":"string","minLength":2,"maxLength":2,"description":"ISO-3166 alpha-2 country code of the CPO that owns this Tariff.","example":"NL"},"party_id":{"type":"string","minLength":3,"maxLength":3,"description":"ID of the CPO that owns this Tariff (following the ISO-15118 standard).","example":"ANY"},"id":{"type":"string","maxLength":36,"description":"Uniquely identifies the tariff within the CPO's platform.","example":"12345"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 code of the currency of this tariff.","example":"EUR"},"type":{"type":"string","enum":["AD_HOC_PAYMENT","PROFILE_CHEAP","PROFILE_FAST","PROFILE_GREEN","REGULAR"],"description":"Type of this tariff."},"tariff_alt_text":{"type":"array","description":"List of multi-language alternative texts for this tariff.","items":{"type":"object","required":["language","text"],"properties":{"language":{"type":"string","minLength":2,"maxLength":2,"description":"Language Code ISO 639-1.","example":"en"},"text":{"type":"string","maxLength":512,"description":"Alternative tariff text in this language.","example":"Standard charging tariff"}}}},"tariff_alt_url":{"type":"string","format":"uri","maxLength":255,"description":"URL to a web page that contains an explanation of the tariff information.","example":"https://www.example.com/tariff-info"},"min_price":{"type":"object","description":"Price with VAT excluded and included.","properties":{"excl_vat":{"type":"number","format":"float","minimum":0,"description":"Price excluding VAT.","example":10},"incl_vat":{"type":"number","format":"float","minimum":0,"description":"Price including VAT.","example":12.1}}},"max_price":{"type":"object","description":"Price with VAT excluded and included.","properties":{"excl_vat":{"type":"number","format":"float","minimum":0,"description":"Price excluding VAT.","example":10},"incl_vat":{"type":"number","format":"float","minimum":0,"description":"Price including VAT.","example":12.1}}},"elements":{"type":"array","minItems":1,"description":"List of Tariff Elements.","items":{"type":"object","required":["price_components"],"properties":{"price_components":{"type":"array","minItems":1,"description":"List of price components that describe the pricing of this tariff element.","items":{"type":"object","required":["type","price","step_size"],"properties":{"type":{"type":"string","enum":["ENERGY","FLAT","PARKING_TIME","TIME"],"description":"Type of tariff dimension."},"price":{"type":"number","format":"float","minimum":0,"description":"Price per unit (excluding VAT) for this tariff dimension.","example":0.25},"vat":{"type":"number","format":"float","minimum":0,"maximum":100,"description":"Applicable VAT percentage for this tariff dimension. If omitted, no VAT is applicable.","example":21},"step_size":{"type":"integer","minimum":1,"description":"Minimum amount to be billed. This unit will be billed in this step_size.","example":1}}}},"restrictions":{"type":"object","description":"Restrictions that apply to this tariff element.","properties":{"start_time":{"type":"string","pattern":"^([01]?[0-9]|2[0-3]):[0-5][0-9]$","description":"Start time of day in local time, the time zone is defined in the location.","example":"08:00"},"end_time":{"type":"string","pattern":"^([01]?[0-9]|2[0-3]):[0-5][0-9]$","description":"End time of day in local time, the time zone is defined in the location.","example":"18:00"},"start_date":{"type":"string","format":"date","description":"Start date in local time, the time zone is defined in the location.","example":"2024-01-01"},"end_date":{"type":"string","format":"date","description":"End date in local time, the time zone is defined in the location.","example":"2024-12-31"},"min_kwh":{"type":"number","format":"float","minimum":0,"description":"Minimum consumed energy in kWh.","example":0},"max_kwh":{"type":"number","format":"float","minimum":0,"description":"Maximum consumed energy in kWh.","example":50},"min_current":{"type":"number","format":"float","minimum":0,"description":"Sum of the minimum current (in Amperes) over all phases.","example":16},"max_current":{"type":"number","format":"float","minimum":0,"description":"Sum of the maximum current (in Amperes) over all phases.","example":32},"min_power":{"type":"number","format":"float","minimum":0,"description":"Minimum power in kW.","example":0},"max_power":{"type":"number","format":"float","minimum":0,"description":"Maximum power in kW.","example":22},"min_duration":{"type":"integer","minimum":0,"description":"Minimum duration in seconds.","example":0},"max_duration":{"type":"integer","minimum":0,"description":"Maximum duration in seconds.","example":3600},"day_of_week":{"type":"array","description":"Which day(s) of the week this tariff element is active.","items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]}},"reservation":{"type":"string","enum":["RESERVATION","RESERVATION_EXPIRES"],"description":"When this restriction is present, the tariff element applies to a reservation."}}}}}},"start_date_time":{"type":"string","format":"date-time","description":"The time when this tariff becomes active. Format ISO 8601 UTC.","example":"2024-01-01T00:00:00Z"},"end_date_time":{"type":"string","format":"date-time","description":"The time after which this tariff is no longer valid. Format ISO 8601 UTC.","example":"2024-12-31T23:59:59Z"},"energy_mix":{"type":"object","description":"Details about the energy mix.","properties":{"is_green_energy":{"type":"boolean","description":"True if 100% from regenerative sources.","example":true},"energy_sources":{"type":"array","description":"Energy sources of this energy mix.","items":{"type":"object","required":["source","percentage"],"properties":{"source":{"type":"string","enum":["NUCLEAR","GENERAL_FOSSIL","COAL","GAS","GENERAL_GREEN","SOLAR","WIND","WATER"],"description":"Type of energy source."},"percentage":{"type":"number","format":"float","minimum":0,"maximum":100,"description":"Percentage of this source in the mix.","example":40}}}},"environ_impact":{"type":"array","description":"Environmental impact of this energy mix.","items":{"type":"object","required":["category","amount"],"properties":{"category":{"type":"string","enum":["NUCLEAR_WASTE","CARBON_DIOXIDE"],"description":"Environmental impact category."},"amount":{"type":"number","format":"float","minimum":0,"description":"Amount of this impact in g/kWh.","example":120}}}},"supplier_name":{"type":"string","maxLength":64,"description":"Name of the energy supplier.","example":"Green Energy Co"},"energy_product_name":{"type":"string","maxLength":64,"description":"Name of the energy product.","example":"100% Wind Power"}}},"last_updated":{"type":"string","format":"date-time","description":"Timestamp when this Tariff was last updated. Format ISO 8601 UTC.","example":"2024-01-15T10:30:00Z"}}}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/session/v1.0/{session}/assign-user":{"parameters":[{"name":"session","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"sessionAssignToUser","summary":"Session / Assign to user","description":"Assign a user to a session. This action is only applicable to sessions with Completed billing status that have no user associated with them. This operation can be done only once and is not reversible.","tags":["action / session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer"}},"required":["userId"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict - The request cannot be completed due to a conflict with the current state of the resource. Possible errors:\n  * Session billing status is not Completed\n  * Session is not anonymous\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/session/v1.0/{session}/change-tariff":{"parameters":[{"name":"session","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the session"}],"post":{"operationId":"sessionChangeTariff","summary":"Session / Change tariff","description":"Change the tariff for a session and trigger recalculation of charging periods.\nThis action supports loyalty program integrations where discounts need to be applied mid-session.\n\nThe tariff change is only available when:\n- Billing status is NOT \"Completed\"\n- For running sessions: duration is under 3 hours\n- For roaming sessions (Ampeco as eMSP): session must be finished and have a CDR received\n- No recalculation is already in progress\n- For local charge point sessions: a StartTransaction message must exist\n","tags":["action / session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tariffId":{"type":"integer","description":"The ID of the tariff to apply to the session"}},"required":["tariffId"]}}}},"responses":{"202":{"description":"Action accepted. The tariff has been changed and charging periods are being recalculated."},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict - The request cannot be completed due to a conflict with the current state of the resource.\nPossible errors:\n  * Billing is already completed for this session\n  * Session duration exceeds 3 hours (running sessions only)\n  * Roaming session without a CDR\n  * Recalculation already in progress\n  * StartTransaction message missing (local CP sessions)\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/session/v1.0/{session}/retry-payment":{"parameters":[{"name":"session","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"sessionRetryPayment","summary":"Session / Retry Payment","description":"Retry failed payment for a session","tags":["action / session"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"integer","nullable":true}}}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict - The request cannot be completed due to a conflict with the current state of the resource. Possible errors:\n  * Session payment cannot be retried - Payment status must be either 'failed' or 'partially paid'\n  * Session total amount is below the minimum transaction amount required by the payment provider\n  * Session billing status is not completed\n  * Session is not finalized\n","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/subscription-plans/v1.0/{subscriptionPlan}/replace":{"parameters":[{"name":"subscriptionPlan","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the subscription plan to be replaced"}],"post":{"operationId":"subscriptionPlanReplace","summary":"Subscription plan / Replace","description":"Replace a subscription plan with another one.","tags":["action / subscription-plan"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"integer","description":"The ID of the subscription plan that replaces the current one. The new Subscription plan will be added to the Subscription plans Restrictions for the Tariffs, where the old plan is present. Also it will be added to all Charge points that require the current Subscription plan."},"replaceAt":{"type":"string","format":"date-time","nullable":true,"description":"The date from which the new Subscription Plan replaces the current one. If left empty, it is replaced immediately."},"reason":{"type":"string","description":"Internal note for tracking changes and the reasons for those changes."}},"required":["planId","reason"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/tariffs/v2.0/{tariff}/set-tariff-display-information":{"parameters":[{"name":"tariff","in":"path","schema":{"type":"integer"},"required":true,"description":"The ID of the tariff to which detailed display information should be added."}],"post":{"operationId":"tariffSetDisplayInformation","summary":"Tariff / Set Display Information","description":"Create or update tariff display information. This action supports both first-time creation and subsequent updates.\n\n**Field replacement behavior:** Every call fully replaces all four display text fields. Fields not included in the request body, or sent as `null`, are reset to empty. To retain an existing value, you must re-supply it in the request.\n\n**Base tariff restriction:** The `defaultPriceInformation` and `defaultPriceInformationOffline` fields can only be set on base tariffs.\n","tags":["action / tariff"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"It could be set only for base tariff. The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"It could be set only for base tariff. The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}}}}},"responses":{"200":{"description":"Tariff display information updated successfully"},"201":{"description":"Tariff display information created successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/tax/v1.0/validate-vat":{"post":{"operationId":"validateTaxNumber","summary":"Taxes / Validate VAT number","description":"Validate an EU VAT ID against the official VIES (VAT Information Exchange System) API from the European Commission.\nReturns validation status along with company name and address when available.\n\nThe service strips the country code prefix from the VAT number before validation if present\n(e.g., 'PL5252678750' becomes '5252678750' when validating for country 'PL').\n","tags":["action / tax"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["countryCode","vatNumber"],"properties":{"countryCode":{"type":"string","minLength":2,"maxLength":2,"description":"Two-letter ISO country code (e.g., 'PL', 'DE', 'RO')","example":"PL"},"vatNumber":{"type":"string","description":"VAT number to validate (may or may not include country code prefix)","example":"5252678750"}}},"example":{"countryCode":"PL","vatNumber":"5252678750"}}}},"responses":{"200":{"description":"VAT number is valid","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Company name (when available from VIES)"},"address":{"type":"string","description":"Company address (when available from VIES)"}}},"example":{"name":"GOOGLE POLAND SP. Z O.O.","address":"UL. EMILII PLATER 53, 00-113 WARSZAWA"}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"VAT number is invalid or does not exist","content":{"application/json":{"schema":{"type":"object","maxProperties":0}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"424":{"description":"VIES service is temporarily unavailable (external dependency failure)","content":{"application/json":{"schema":{"type":"object","maxProperties":0}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/transactions/v1.0/{transaction}/issue-invoice":{"parameters":[{"name":"transaction","in":"path","schema":{"type":"integer"},"required":true,"description":"The transaction ID to which the action will be applied"}],"post":{"operationId":"transactionIssueInvoice","summary":"Transaction / Issue Invoice","description":"Issue ad-hoc invoice for the transaction (only if the platform's native invoice integration is used). For Számlázz.hu integration in Hungary, if a fiscalized receipt exists for the transaction, it will be automatically canceled and both the invoice and storno receipt will be sent to the user.","tags":["action / transaction"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Conditionally required based on the Email field configuration in the operator's invoice integration. When omitted, the invoice is issued without sending an email notification."},"locale":{"type":"string","description":"ISO language code (e.g., \"en\", \"bg\", \"de\") for bilingual invoice generation.\nWhen \"Issue bilingual invoices\" is enabled for the operator, the invoice is generated\nin both the operator's configured invoice language (primary) and this locale (secondary).\nIf not provided, falls back to: user's preferred locale → operator default → tenant default → English.\n","example":"en"},"invoiceDetails":{"type":"object","description":"Create user invoice details","properties":{"invoiceType":{"type":"string","enum":["individual","company"]},"individualName":{"type":"string"},"individualPersonalId":{"type":"string"},"individualTaxId":{"type":"string"},"companyName":{"type":"string"},"companyRegNo":{"type":"string"},"companyTaxId":{"type":"string"},"companyTaxAdministrationOfficeName":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"city":{"type":"string"},"postCode":{"type":"string"},"address":{"type":"string"}},"required":["invoiceType"]}},"required":["invoiceDetails"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Invoice already issued. Use the `Resend Invoice` action to send the invoice again","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"412":{"description":"The criteria for issuing an invoice have not been met - the transaction's user must be ad-hoc, the transaction's session must have been paid, and the on-demand window must not be overdue","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/transactions/v1.0/{transaction}/resend-invoice":{"parameters":[{"name":"transaction","in":"path","schema":{"type":"integer"},"required":true,"description":"The transaction ID to which the action will be applied"}],"post":{"operationId":"transactionResendInvoice","summary":"Transaction / Resend Invoice","description":"Resend already issued invoice. If the transaction has an associated fiscalized receipt that was automatically canceled (Hungary compliance), both the invoice and the storno receipt will be sent together.","tags":["action / transaction"],"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Invoice not issued yet. Use the `Issue Invoice` action to issue an invoice","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/transactions/v1.0/{transaction}/update-payment-reference":{"parameters":[{"name":"transaction","in":"path","schema":{"type":"integer"},"required":true,"description":"the transaction ID to which the action will be applied"}],"post":{"operationId":"transactionUpdatePaymentReference","summary":"Transaction / Update Payment Reference","description":"Link the transaction to external resource where the payment took place.","tags":["action / transaction"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","description":"Reference to the payment processor or payment terminal where more information about the transaction could be checked."}},"additionalProperties":false,"required":["ref"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/activate-subscription":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID to activate the subscription to"}],"post":{"operationId":"userActivateSubscription","summary":"User / Activate subscription","description":"Activate a subscription to a user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"integer"},"endDate":{"type":"string","format":"date","example":"2022-05-30","nullable":true,"description":"The subscription will be valid until this end date"},"autoRenewal":{"type":"boolean","description":"Enable the auto-renewal of the subscription after the end date"},"reason":{"type":"string","nullable":true,"description":"In case reason is empty, following text \"Activated via API\" will be added automatically"}},"required":["planId"]}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/add-balance":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID to add to balance to"}],"post":{"operationId":"userAddBalance","summary":"User / Add Balance","description":"Add to the current balance of the user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","multipleOf":0.001},"reason":{"type":"string"},"app_info":{"type":"string","maxLength":2000}},"additionalProperties":false,"required":["amount","reason"]}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Currency is not set."},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/apply-custom-fee":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID to apply custom fee to"}],"post":{"operationId":"userApplyCustomFee","summary":"User / Apply Custom Fee","description":"Apply custom fee for a user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","format":"decimal","multipleOf":0.001,"description":"The amount entered is tax-inclusive. The tax rate will be based on the EV driver’s operator default tax rate."},"description":{"type":"string","description":"Shown to the user and also added to the user's bank statement (if the payment method is a bank card)."},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing (User / Payment Method / Listing). When left empty or null, it would take the balance and if the balance is insufficient, would reject the action. Corporate billing is not supported as a payment method.","nullable":true}},"additionalProperties":false,"required":["amount","description"]}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Currency is not set, Your card was declined or User has insufficient balance"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/cancel-subscription":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID for whom to cancel the subscription"}],"post":{"operationId":"userCancelSubscription","summary":"User / Cancel subscription","description":"Cancel a subscription to a user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","description":"The reason for the cancellation. It would be included in the Audit logs."}},"required":["reason"]}}}},"responses":{"202":{"description":"Action accepted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/change-status":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID to change the status of"}],"post":{"operationId":"userChangeStatus","summary":"User / Change Status","description":"Set the status for a user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"reason":{"type":"string"}},"additionalProperties":false,"required":["status","reason"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/clear-subscription-amount-due":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID for whom to clear amount due"}],"post":{"operationId":"userClearSubscriptionAmountDue","summary":"User / Clear subscription amount due","description":"Clear a user's subscription amount due. Any unsettled transactions related to the user's current subscription — such as fees and charging sessions will be set to an amount of 0.This operation is irreversible.","tags":["action / user"],"responses":{"202":{"description":"Action accepted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v1.0/{user}/subscription-billing-period/{billingPeriod}/retry-payment":{"parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"path","name":"billingPeriod","schema":{"type":"integer"},"required":true,"description":"The subscription billing period ID"}],"post":{"operationId":"subscriptionBillingPeriodRetryPayment","summary":"Subscription billing period / Retry payment","description":"Retry failed payment for a subscription billing period","tags":["action / user"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"integer","description":"ID of a tokenized payment method (type `tokenized`) belonging to the user. If omitted, uses the user's default payment method."}}}}}},"responses":{"202":{"description":"Payment retry initiated"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Billing period has no failed payment","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"423":{"description":"A payment is awaiting 3D Secure confirmation","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"A payment is already in progress for this billing period","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v2.0/{user}/export-all-private-data":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"The user ID for whom the private data to be exported."}],"get":{"operationId":"userExportAllPrivateData","summary":"User / Export All Private Data","description":"Export all private data","tags":["action / user"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"The private data can be downloaded from here. The link expires in 24 hours."}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/actions/users/v2.0/{user}/redeem-voucher":{"parameters":[{"name":"user","in":"path","schema":{"type":"integer"},"required":true,"description":"the user ID to redeem a voucher to"}],"post":{"operationId":"userRedeemVoucher","summary":"User / Redeem Voucher","description":"Apply a voucher to a user","tags":["action / user"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The code of the voucher that should be redeemed."}},"required":["code"]}}}},"responses":{"202":{"description":"Action accepted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"Action rejected"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/logs/communication/v1.0":{"get":{"operationId":"communicationLogsListing","tags":["logs / communication"],"summary":"Communication logs / Listing","description":"Get all communication logs with optional filtering and pagination.\n\nReturns raw communication payloads including request/response data.\nFor optimal performance, always specify `filter[createdAfter]` and `filter[createdBefore]` to limit the time range.\n","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","description":"Filters for communication logs listing. For optimal performance, use createdAfter/createdBefore to limit the time range of your queries.\n\n\nIf neither `filter[createdAfter]` nor `filter[createdBefore]` is provided, results are limited to logs from the last 30 days relative to the request time.\nThe maximum allowed interval between `filter[createdAfter]` and `filter[createdBefore]` is 30 days.\n\n\n**Filter Precedence:**\nWhen multiple entity filters are provided, more specific filters take precedence over less specific ones:\n- If `sessionId` is provided, `evseId`, `chargePointId`, and `locationId` are ignored.\n- If `evseId` is provided (without `sessionId`), `chargePointId` and `locationId` are ignored.\n- If `chargePointId` is provided (without `sessionId` or `evseId`), `locationId` is ignored.\n","properties":{"sessionId":{"type":"integer","description":"Filter by specific session ID. Takes precedence over evseId, chargePointId, and locationId filters.\n"},"evseId":{"type":"integer","description":"Filter by specific EVSE ID. Takes precedence over chargePointId and locationId filters. Ignored when sessionId is provided.\n"},"chargePointId":{"type":"integer","description":"Filter by specific charge point ID. Takes precedence over locationId filter. Ignored when sessionId or evseId is provided.\n"},"locationId":{"type":"integer","description":"Filter by specific location ID. Returns logs from charge points assigned to the location. Ignored when sessionId, evseId, or chargePointId is provided.\n"},"direction":{"description":"Filter by message direction","type":"string","enum":["in","out"],"example":"in"},"command":{"type":"array","items":{"type":"string"},"description":"Filter by specific command names (e.g., [\"Authorize\", \"StartTransaction\"])"},"partnerId":{"type":"integer","description":"Filter by the ID of the partner that owns the charge point."},"createdAfter":{"type":"string","format":"date-time","description":"Return logs created after this timestamp (ISO 8601 format).\n\nIf omitted, `filter[createdAfter]` defaults to 30 days before the value of `filter[createdBefore]`.\n"},"createdBefore":{"type":"string","format":"date-time","description":"Return logs created before this timestamp (ISO 8601 format)\n\nDefaults to the current time if not provided. If omitted and `filter[createdAfter]` is provided, `filter[createdBefore]` defaults to 30 days after the value of `filter[createdAfter]`.\n"}}}},{"schema":{"type":"integer","default":500,"minimum":1,"maximum":500},"in":"query","name":"per_page","description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Communication log entry","properties":{"id":{"type":"string","description":"Unique identifier of the log entry","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the message was logged","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point that sent/received the message","readOnly":true},"evseId":{"type":"integer","description":"ID of the EVSE if applicable","readOnly":true},"locationId":{"type":"integer","description":"ID of the location associated with the charge point","readOnly":true},"sessionId":{"type":"integer","description":"ID of the charging session if applicable","readOnly":true},"direction":{"type":"string","enum":["in","out"],"description":"Direction of the communication:\n- **in**: Message received from charge point\n- **out**: Message sent to charge point\n","example":"in"},"command":{"type":"string","description":"Name of the command sent or received in OCPP communication. Can be any of the standard OCPP 1.6 and OCPP 2.0.1 commands, as well as custom commands. Examples include:\n`Authenticate`, `Authorize`, `BootNotification`, `CancelReservation`, `ChangeAvailability`, `ChangeConfiguration`, `ClearCache`, `ClearChargingProfile`, `ClearDisplayMessage`, `Connect`, `Connection throttling`, `CostUpdated`, `DataTransfer`, `DeleteCertificateRequest`, `DiagnosticsStatusNotification`, `Disconnect`, `FirmwareStatusNotification`, `Get15118EVCertificate`, `GetBaseReport`, `GetCertificateStatus`, `GetCompositeSchedule`, `GetConfiguration`, `GetDiagnostics`, `GetDisplayMessages`, `GetLocalListVersion`, `GetLog`, `GetVariables`, `Heartbeat`, `InstallCertificate`, `LogStatusNotification`, `MeterValues`, `NotifyDisplayMessages`, `NotifyEVChargingNeeds`, `NotifyReport`, `RemoteStartTransaction`, `RemoteStopTransaction`, `RequestStartTransaction`, `RequestStopTransaction`, `ReservationStatusUpdate`, `ReserveNow`, `Reset`, `RFID Authorization throttling`, `SecurityEventNotification`, `SendLocalList`, `SetChargingProfile`, `SetDisplayMessage`, `SetNetworkProfile`, `SetVariables`, `SignCertificate`, `SignedUpdateFirmware`, `StartTransaction`, `StatusNotification`, `StopTransaction`, `TransactionEvent`, `TriggerMessage`, `UnlockConnector`, `UpdateFirmware`.\n"},"commandParameters":{"type":"string","description":"JSON-encoded message payload sent with the command. Truncated to 50,000 characters if longer.","readOnly":true},"communicationError":{"type":"string","description":"JSON-encoded error details from internal backend communication failure. Truncated to 50,000 characters if longer.\nOnly present when a communication error occurred. When this field is present, `responseBody` will not be included in the response.\n","readOnly":true},"responseBody":{"type":"string","description":"JSON-encoded message response payload. Truncated to 50,000 characters if longer.\nOnly present when communication was successful (i.e., when `communicationError` is not present).\n","readOnly":true}},"required":["id","createdAt","chargePointId","direction","command","commandParameters"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/logs/communication/v1.0/{id}":{"get":{"operationId":"communicationLogRead","tags":["logs / communication"],"summary":"Communication log / Read","description":"Get a single communication log entry by ID.","parameters":[{"in":"path","name":"id","description":"The communication log entry ID","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Communication log entry","properties":{"id":{"type":"string","description":"Unique identifier of the log entry","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the message was logged","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point that sent/received the message","readOnly":true},"evseId":{"type":"integer","description":"ID of the EVSE if applicable","readOnly":true},"locationId":{"type":"integer","description":"ID of the location associated with the charge point","readOnly":true},"sessionId":{"type":"integer","description":"ID of the charging session if applicable","readOnly":true},"direction":{"type":"string","enum":["in","out"],"description":"Direction of the communication:\n- **in**: Message received from charge point\n- **out**: Message sent to charge point\n","example":"in"},"command":{"type":"string","description":"Name of the command sent or received in OCPP communication. Can be any of the standard OCPP 1.6 and OCPP 2.0.1 commands, as well as custom commands. Examples include:\n`Authenticate`, `Authorize`, `BootNotification`, `CancelReservation`, `ChangeAvailability`, `ChangeConfiguration`, `ClearCache`, `ClearChargingProfile`, `ClearDisplayMessage`, `Connect`, `Connection throttling`, `CostUpdated`, `DataTransfer`, `DeleteCertificateRequest`, `DiagnosticsStatusNotification`, `Disconnect`, `FirmwareStatusNotification`, `Get15118EVCertificate`, `GetBaseReport`, `GetCertificateStatus`, `GetCompositeSchedule`, `GetConfiguration`, `GetDiagnostics`, `GetDisplayMessages`, `GetLocalListVersion`, `GetLog`, `GetVariables`, `Heartbeat`, `InstallCertificate`, `LogStatusNotification`, `MeterValues`, `NotifyDisplayMessages`, `NotifyEVChargingNeeds`, `NotifyReport`, `RemoteStartTransaction`, `RemoteStopTransaction`, `RequestStartTransaction`, `RequestStopTransaction`, `ReservationStatusUpdate`, `ReserveNow`, `Reset`, `RFID Authorization throttling`, `SecurityEventNotification`, `SendLocalList`, `SetChargingProfile`, `SetDisplayMessage`, `SetNetworkProfile`, `SetVariables`, `SignCertificate`, `SignedUpdateFirmware`, `StartTransaction`, `StatusNotification`, `StopTransaction`, `TransactionEvent`, `TriggerMessage`, `UnlockConnector`, `UpdateFirmware`.\n"},"commandParameters":{"type":"string","description":"JSON-encoded message payload sent with the command. Truncated to 50,000 characters if longer.","readOnly":true},"communicationError":{"type":"string","description":"JSON-encoded error details from internal backend communication failure. Truncated to 50,000 characters if longer.\nOnly present when a communication error occurred. When this field is present, `responseBody` will not be included in the response.\n","readOnly":true},"responseBody":{"type":"string","description":"JSON-encoded message response payload. Truncated to 50,000 characters if longer.\nOnly present when communication was successful (i.e., when `communicationError` is not present).\n","readOnly":true}},"required":["id","createdAt","chargePointId","direction","command","commandParameters"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/logs/ocpi/v1.0":{"get":{"operationId":"listOcpiLogs","summary":"OCPI Logs / Listing","description":"Get paginated list of OCPI communication logs with optional filtering and pagination.\n\nReturns raw OCPI communication payloads including request/response data.\nFor optimal performance, always specify `filter[createdAfter]` and `filter[createdBefore]` to limit the time range.\nThe maximum allowed date range is 30 days. If no date range is specified, the last 30 days will be returned.\n","tags":["logs / ocpi"],"parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","description":"Filters for OCPI logs listing. For optimal performance, use createdAfter/createdBefore to limit the time range of your queries.\n\n\nIf neither `filter[createdAfter]` nor `filter[createdBefore]` is provided, results are limited to logs from the last 30 days relative to the request time.\nThe maximum allowed interval between `filter[createdAfter]` and `filter[createdBefore]` is 30 days.\n\n\n**Filter Precedence:**\nWhen multiple entity filters are provided, more specific filters take precedence:\n- If `sessionId` is provided, `evseId` and `locationId` filters are ignored\n- If `evseId` is provided (without `sessionId`), `locationId` filter is ignored\n","properties":{"roamingConnectionId":{"type":"integer","description":"Filter by specific roaming connection ID"},"sessionId":{"type":"integer","description":"Filter by internal system charging session ID. Returns only log entries tied to the given session (e.g., session operations, CDR operations, start/stop commands). See sessionId in the response for details."},"evseId":{"type":"integer","description":"Filter by internal system EVSE ID. Returns only log entries tied to the given EVSE (e.g., session and CDR operations, EVSE/connector location operations, commands). See evseId in the response for details. Ignored when sessionId is provided."},"locationId":{"type":"integer","description":"Filter by internal system location ID. Returns only log entries tied to the given location (e.g., session and CDR operations, location operations, commands). See locationId in the response for details. Ignored when sessionId or evseId is provided."},"direction":{"description":"Filter by message direction","type":"string","enum":["in","out"],"example":"out"},"module":{"type":"array","items":{"type":"string","enum":["locations","sessions","cdrs","tariffs","tokens","commands","versions","credentials","hubclient","chargingpreferences","smartcharging","payments"],"description":"OCPI module name:\n- **locations**: Location/EVSE data sync\n- **sessions**: Charging session data\n- **cdrs**: Charge Detail Records\n- **tariffs**: Pricing information\n- **tokens**: Authorization tokens\n- **commands**: Remote commands (start/stop/unlock)\n- **versions**: OCPI version negotiation\n- **credentials**: Authentication credentials\n- **hubclient**: Hub client communication\n- **chargingpreferences**: Smart charging preferences\n- **smartcharging**: Smart charging profiles\n- **payments**: Payment processing\n","example":"locations"},"description":"Filter by OCPI module names"},"method":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"description":"HTTP method used for the request","example":"GET"},"description":"Filter by HTTP methods"},"createdAfter":{"type":"string","format":"date-time","description":"Return logs created after this timestamp (ISO 8601 format).\n\nIf omitted, `filter[createdAfter]` defaults to 30 days before the value of `filter[createdBefore]`.\n"},"createdBefore":{"type":"string","format":"date-time","description":"Return logs created before this timestamp (ISO 8601 format)\n\nDefaults to the current time if not provided. If omitted and `filter[createdAfter]` is provided, `filter[createdBefore]` defaults to 30 days after the value of `filter[createdAfter]`.\n"}}}},{"schema":{"type":"integer","default":500,"minimum":1,"maximum":500},"in":"query","name":"per_page","description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"List of OCPI logs returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","createdAt","roamingConnectionId","direction","module","method","requestUrl","ocpiStatus"],"properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123xyz"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the OCPI message was logged (ISO 8601)","example":"2026-02-10T14:27:33.506505Z"},"roamingConnectionId":{"type":"integer","description":"ID of the roaming connection involved in the communication","example":42},"direction":{"description":"Direction of the OCPI communication","type":"string","enum":["in","out"],"example":"out"},"module":{"type":"string","enum":["locations","sessions","cdrs","tariffs","tokens","commands","versions","credentials","hubclient","chargingpreferences","smartcharging","payments"],"description":"OCPI module name:\n- **locations**: Location/EVSE data sync\n- **sessions**: Charging session data\n- **cdrs**: Charge Detail Records\n- **tariffs**: Pricing information\n- **tokens**: Authorization tokens\n- **commands**: Remote commands (start/stop/unlock)\n- **versions**: OCPI version negotiation\n- **credentials**: Authentication credentials\n- **hubclient**: Hub client communication\n- **chargingpreferences**: Smart charging preferences\n- **smartcharging**: Smart charging profiles\n- **payments**: Payment processing\n","example":"locations"},"method":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"description":"HTTP method used for the request","example":"GET"},"requestUrl":{"type":"string","description":"The full request URL","example":"https://foo.com/ocpi/cpo/2.2/locations"},"requestBody":{"type":"string","description":"JSON-encoded HTTP request payload. Truncated to 50,000 characters if longer. Not included for GET or DELETE requests, or when an error occurs."},"httpStatusCode":{"type":"integer","description":"HTTP response status code. Not included when an error occurs.","example":200},"responseBody":{"type":"string","description":"JSON-encoded HTTP response payload. Truncated to 50,000 characters if longer. Not included when an error occurs."},"ocpiStatus":{"description":"Operation status derived from the OCPI status_code in the response body.\n\n- **success**: Status code 1xxx - request handled successfully\n- **clientError**: Status code 2xxx - client-side error\n- **serverError**: Status code 3xxx - server-side error\n- **hubError**: Status code 4xxx - hub/roaming error\n- **unknown**: No status code present in the response body (e.g. error/non-OCPI responses, empty bodies)\n","type":"string","enum":["success","clientError","serverError","hubError","unknown"],"example":"success"},"errorType":{"description":"Type of error that occurred during OCPI communication. Only present when the request failed due to an exception. When this field is present, responseBody and httpStatusCode are not included.","type":"string","enum":["connection","internal"],"example":"connection"},"sessionId":{"type":"integer","description":"Internal system charging session ID (not the OCPI session `id` value). Present on log entries for requests tied to a specific session, such as session operations, CDR operations, and start/stop session commands. Not present on logs entries for fetching a list of objects.","example":12345},"evseId":{"type":"integer","description":"Internal system EVSE ID (not the OCPI `evse_id` value). Present on log entries for requests tied to a specific EVSE, such as session and CDR operations, EVSE/connector location operations, and commands. Not present on logs entries for fetching a list of objects.","example":678},"locationId":{"type":"integer","description":"Internal system location ID (not the OCPI location `id` value). Present on log entries for requests tied to specific charging infrastructure, such as session and CDR operations, location operations, and commands. Not present on logs entries for fetching a list of objects.","example":101}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/logs/ocpi/v1.0/{id}":{"get":{"operationId":"readOcpiLog","tags":["logs / ocpi"],"summary":"OCPI Log / Read","description":"Get a single OCPI log entry by ID.","parameters":[{"in":"path","name":"id","description":"The OCPI log entry ID","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","createdAt","roamingConnectionId","direction","module","method","requestUrl","ocpiStatus"],"properties":{"id":{"type":"string","description":"Unique identifier for the log entry","example":"abc123xyz"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the OCPI message was logged (ISO 8601)","example":"2026-02-10T14:27:33.506505Z"},"roamingConnectionId":{"type":"integer","description":"ID of the roaming connection involved in the communication","example":42},"direction":{"description":"Direction of the OCPI communication","type":"string","enum":["in","out"],"example":"out"},"module":{"type":"string","enum":["locations","sessions","cdrs","tariffs","tokens","commands","versions","credentials","hubclient","chargingpreferences","smartcharging","payments"],"description":"OCPI module name:\n- **locations**: Location/EVSE data sync\n- **sessions**: Charging session data\n- **cdrs**: Charge Detail Records\n- **tariffs**: Pricing information\n- **tokens**: Authorization tokens\n- **commands**: Remote commands (start/stop/unlock)\n- **versions**: OCPI version negotiation\n- **credentials**: Authentication credentials\n- **hubclient**: Hub client communication\n- **chargingpreferences**: Smart charging preferences\n- **smartcharging**: Smart charging profiles\n- **payments**: Payment processing\n","example":"locations"},"method":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"description":"HTTP method used for the request","example":"GET"},"requestUrl":{"type":"string","description":"The full request URL","example":"https://foo.com/ocpi/cpo/2.2/locations"},"requestBody":{"type":"string","description":"JSON-encoded HTTP request payload. Truncated to 50,000 characters if longer. Not included for GET or DELETE requests, or when an error occurs."},"httpStatusCode":{"type":"integer","description":"HTTP response status code. Not included when an error occurs.","example":200},"responseBody":{"type":"string","description":"JSON-encoded HTTP response payload. Truncated to 50,000 characters if longer. Not included when an error occurs."},"ocpiStatus":{"description":"Operation status derived from the OCPI status_code in the response body.\n\n- **success**: Status code 1xxx - request handled successfully\n- **clientError**: Status code 2xxx - client-side error\n- **serverError**: Status code 3xxx - server-side error\n- **hubError**: Status code 4xxx - hub/roaming error\n- **unknown**: No status code present in the response body (e.g. error/non-OCPI responses, empty bodies)\n","type":"string","enum":["success","clientError","serverError","hubError","unknown"],"example":"success"},"errorType":{"description":"Type of error that occurred during OCPI communication. Only present when the request failed due to an exception. When this field is present, responseBody and httpStatusCode are not included.","type":"string","enum":["connection","internal"],"example":"connection"},"sessionId":{"type":"integer","description":"Internal system charging session ID (not the OCPI session `id` value). Present on log entries for requests tied to a specific session, such as session operations, CDR operations, and start/stop session commands. Not present on logs entries for fetching a list of objects.","example":12345},"evseId":{"type":"integer","description":"Internal system EVSE ID (not the OCPI `evse_id` value). Present on log entries for requests tied to a specific EVSE, such as session and CDR operations, EVSE/connector location operations, and commands. Not present on logs entries for fetching a list of objects.","example":678},"locationId":{"type":"integer","description":"Internal system location ID (not the OCPI location `id` value). Present on log entries for requests tied to specific charging infrastructure, such as session and CDR operations, location operations, and commands. Not present on logs entries for fetching a list of objects.","example":101}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/notifications/v1.0":{"post":{"operationId":"notificationsSubscribeDeprecated","tags":["notifications"],"summary":"Notifications / Subscribe","deprecated":true,"description":"Subscribe for a webhook. Each notification sent to the webhook will be retried\na number of times and will be rate limited. The rate limits, retries and retry\nintervals will be configured by the platform administrator.\n\nEach notification callback will contain a signature in the `X-Signature` request\nheader which can be verified using SHA256-HMAC on the body of the request using\nthe access token that was used when creating the notification as key.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl","notifications"]}}}},"callbacks":{"AuthorizationNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"Authorization Notification Callback","summary":"Authorization Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}},{"in":"header","name":"X-Webhook-Id","description":"The notification id of the subscription","schema":{"type":"string"}},{"in":"header","name":"X-Webhook-Type","description":"The notification type","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["AuthorizationNotification"]},"chargePointId":{"type":"integer"},"authorizationId":{"type":"integer"},"idTag":{"type":"string"},"status":{"type":"string","enum":["Accepted","Blocked","Expired","Invalid","ConcurrentTx"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","idTag","status","lastUpdatedAt","authorizationId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"BootNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Boot Notification Callback","summary":"Boot Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["BootNotification"]},"chargePointId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"bootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}}}}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"ChargePointChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"summary":"Charge point | EVSE | Connector Changed Notification Callback","description":"Charge point | EVSE | Connector Changed Notification Callback\n\n**DEPRECATED**: This notification has been deprecated in favor of the more specific notifications:\n- `chargePoint.changed` for charge point master data changes\n- `evse.changed` for EVSE and connector changes\n\nThis notification will continue to work but should not be used for new integrations.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["ChargePointChangedNotification"]},"chargePoint":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","charge-point","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargePoint.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Charge Point Changed Notification Callback","description":"Lightweight notification for charge point master data and configuration changes.\n\nThis notification is triggered when the charge point itself has been edited (including configuration changes such as uptime tracking enabled/disabled) but NOT when:\n- The network or hardware status have changed (use NetworkStatusNotification and HardwareStatusNotification instead)\n- EVSEs of the charge point have changed (use evse.changed notification instead)\n\nThe notification only contains minimal information: notification type, charge point ID, action taken, and timestamp.\nTo get the full charge point details, use the charge point API endpoint with the provided ID.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargePoint.changed"]},"chargePointId":{"type":"integer","description":"The ID of the charge point that was changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The action that was performed:\n- `created`: A new charge point was created\n- `updated`: An existing charge point's master data or configuration was modified\n- `deleted`: A charge point was deleted\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"evse.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"EVSE Changed Notification Callback","description":"Lightweight notification for EVSE and connector changes.\n\nThis notification is triggered when an EVSE has been edited, including changes to its own properties or its connectors.\nThe notification is NOT triggered when the hardware status changes (use HardwareStatusNotification instead).\n\nThe notification only contains minimal information: notification type, EVSE ID, action taken, and timestamp.\nTo get the full EVSE details, use the EVSE API endpoint with the provided ID.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["evse.changed"]},"evseId":{"type":"integer","description":"The ID of the EVSE that was changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The action that was performed:\n- `created`: A new EVSE was created\n- `updated`: An existing EVSE or its connectors were modified\n- `deleted`: An EVSE was deleted\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","evseId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"ChargePointSyncConfigurationNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Sync Configuration Notification Callback","description":"For each action/sync-configuration, you will get one notification callback.\nYou will also get a notification in case the an automatic sync is done (after charge point boot). In that case there will be no requestId.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["ChargePointSyncConfigurationNotification"]},"chargePointId":{"type":"integer"},"requestId":{"type":"integer"},"configuration":{"type":"array","items":{"type":"object","properties":{"key":{"allOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]},"value":{"type":"string"},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"description":"If there is no error this holds list of Charge Point's configuration properties.\nIn case the request was for full load or there was no request but an automatic full load, all keys will be present.\nIn case the request only wanted some keys, only those keys will be present.\n"},"error":{"type":"string","description":"If sync configuration failed this will hold the error message description."}},"required":["chargePointId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"CircuitConsumptionNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Circuit Consumption Notification Callback","description":"Circuit Consumption Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["CircuitConsumptionNotification"]},"circuitId":{"type":"integer"},"maxCurrent":{"type":"number"},"minChargePointCurrent":{"type":"number"},"currentConsumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"circuit.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Circuit Changed Notification Callback","description":"Circuit Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["circuit.changed"]},"circuitId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","circuitId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"DiagnosticsStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Diagnostics Status Notification Callback","summary":"Diagnostics Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["DiagnosticsStatusNotification"]},"chargePointId":{"type":"integer"},"requestId":{"type":"integer"},"status":{"type":"string","enum":["idle","uploaded","uploadfailed","uploading"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","requestId","status","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"FirmwareStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Firmware Status Notification Callback.\n\nThe payload structure varies based on the OCPP protocol version.\n","summary":"Firmware Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 1.5"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","InstallationFailed","Installed"],"description":"The firmware status for OCPP 1.5 charge points"}},"required":["protocol","firmwareStatus"]}]},{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 1.6"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","Downloading","Idle","InstallationFailed","Installing","Installed"],"description":"The firmware status for OCPP 1.6 charge points"}},"required":["protocol","firmwareStatus"]}]},{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 2.0.1"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","Downloading","DownloadScheduled","DownloadPaused","Idle","InstallationFailed","Installing","Installed","InstallRebooting","InstallScheduled","InstallVerificationFailed","InvalidSignature","SignatureVerified"],"description":"The firmware status for OCPP 2.0.1 charge points"},"requestId":{"type":"integer","description":"Populated only if the firmware status is not requested using TriggerMessage. Helps correlate firmware updates with status notifications."}},"required":["protocol","firmwareStatus"]}]}],"discriminator":{"propertyName":"protocol"}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"HardwareStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Hardware Status Notification Callback","description":"Hardware Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["HardwareStatusNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"},"errorCode":{"type":"string","nullable":true},"info":{"type":"string","nullable":true},"vendorId":{"type":"string","nullable":true},"vendorErrorCode":{"type":"string","nullable":true}},"required":["notification","chargePointId","timestamp","hardwareStatus"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"LocationChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Location Changed Notification Callback","summary":"Location Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["LocationChangedNotification"]},"location":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","location","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"NetworkStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Network Status Notification Callback","summary":"Network Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["NetworkStatusNotification"]},"chargePointId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"}},"required":["notification","chargePointId","networkStatus","timestamp"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SecurityEventNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Security Event Notification Callback","summary":"Security Event Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SecurityEventNotification"]},"chargePointId":{"type":"integer"},"type":{"type":"string","enum":["FirmwareUpdated","FailedToAuthenticateAtCentralSystem","CentralSystemFailedToAuthenticate","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","ReconfigurationOfSecurityParameters","MemoryExhaustion","InvalidMessages","AttemptedReplayAttacks","TamperDetectionActivated","InvalidFirmwareSignature","InvalidFirmwareSigningCertificate","InvalidCentralSystemCertificate","InvalidChargePointCertificate","InvalidTLSVersion","InvalidTLSCipherSuite"]},"timestamp":{"type":"string","format":"date-time"},"techInfo":{"type":"string"},"critical":{"type":"boolean"}},"required":["notification","chargePointId","type","timestamp","critical"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionMeterValuesNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Meter Values Notification Callback","description":"Session Meter Values Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionMeterValuesNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionId":{"type":"integer"},"externalSessionId":{"type":"string"},"meterValues":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"measurand":{"type":"string","description":"A parameter related to the charging process. Possible measurand values are based on OCPP standard and any custom hardware parameters (config keys).","enum":["Energy Consumed","Energy Active Import Register","State Of Charge","Current Import","Current Offered","Voltage","Power Active Import","Temperature","Power Offered"]},"value":{"type":"number"},"unit":{"type":"string","enum":["Wh","A","V","Percent","Celsius"]}}}}},"required":["notification","chargePointId","evseId","sessionId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionStartStopNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"Session Start and Stop Notification Callback","summary":"Session Start and Stop Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionStartStopNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"action":{"type":"string","enum":["start","stop"]},"sessionId":{"type":"integer"},"idTag":{"type":"string"},"startedAtTimestamp":{"type":"string","format":"date-time"},"stoppedAtTimestamp":{"type":"string","format":"date-time"},"energyConsumed":{"type":"number","description":"Total energy consumend during the session in Wh"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","description":"In case of start action it will contain the user id if there is one. It will be null for anonumous sessions. In case of stop transaction it will always be null."},"externalSessionId":{"type":"string"},"meterStart":{"type":"integer","description":"Meter value in Wh when the session is started."},"meterStop":{"type":"integer","description":"Meter value in Wh when the session is stopped."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalAppData":{"type":"object","nullable":true,"additionalProperties":true,"description":"Used to hold any external application data related to the session."}},"required":["notification","chargePointId","evseId","sessionId","startedAtTimestamp","lastUpdatedAt","meterStart","meterStop"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"session.start.stop.notification":{"{$request.body#/callbackUrl}":{"post":{"description":"Session Start and Stop Notification Callback","summary":"Session Start and Stop Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["session.start.stop.notification"]},"sessionId":{"type":"integer"},"userId":{"type":"integer","description":"The ID of the user associated with the session. Omitted for anonymous sessions."},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"action":{"type":"string","enum":["start","stop"]},"idTag":{"type":"string"},"externalSessionId":{"type":"string"},"startedAtTimestamp":{"type":"string","format":"date-time"},"meterStart":{"type":"integer","description":"Meter value in Wh when the session is started."},"meterStop":{"type":"integer","description":"Meter value in Wh when the session is stopped."},"startedAtTimestampLocal":{"type":"string","format":"date-time","description":"Local timestamp when the session started (when multi-timezone is enabled)."},"stoppedAtTimestamp":{"type":"string","format":"date-time"},"stoppedAtTimestampLocal":{"type":"string","format":"date-time","description":"Local timestamp when the session stopped (when multi-timezone is enabled)."},"energyConsumed":{"type":"number","description":"Total energy consumed during the session in Wh"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalAppData":{"type":"object","nullable":true,"additionalProperties":true,"description":"Used to hold any external application data related to the session."}},"required":["notification","sessionId","chargePointId","evseId","action","startedAtTimestamp","meterStart","meterStop","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionUpdateNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Update Notification Callback","description":"Session Update Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionUpdateNotification"]},"session":{"type":"object","description":"Charging session","properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"connectorId":{"type":"integer","nullable":true},"status":{"type":"string","enum":["unknown","pending","active","finished","failed","expired"]},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","nullable":true,"description":"The id of the user that started the session"},"bookingId":{"type":"integer","description":"The ID of the linked booking (if any)"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"energy":{"deprecated":true,"type":"number","description":"Delivered energy in Wh"},"powerKw":{"deprecated":true,"type":"number","description":"This field representing the current charging speed in kilowatts is deprecated. Use the `power.latest` property instead for charging power information."},"socPercent":{"type":"number","description":"State of charge (in %). Optional."},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"nullable":true,"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"tax":{"type":"object","nullable":true,"deprecated":true,"properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"paymentType":{"type":"string","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"paymentMethodId":{"type":"string","description":"The ID of the payment method. Mind that this is actually a string. It can be, for example `corporate:1234` - for corporate billing, or `balance`, or `subscription` - when the session is to be paid with the user's post-paid subscription.","nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used.","nullable":true},"nonBillableEnergy":{"type":"number","description":"The energy that is included as an allowance for pre-paid and post subscriptions."},"paymentStatus":{"type":"string","nullable":true,"enum":["pending","paid","partially","failed",null]},"authorizationId":{"nullable":true,"type":"integer"},"idTag":{"type":"string","description":"The idTag defines the authentication source for the session (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"idTagLabel":{"type":"string","description":"Additional information about the idTag that differs depending on the type of the idTag or could be something else, related to the car or the user."},"idTagType":{"type":"string","nullable":true,"enum":["rfid","emaid","mac_address"],"description":"The type of identifier used for authentication. Returns 'rfid' for standard RFID card identifiers, 'emaid' for E-Mobility Account Identifiers used by ISO15118 Plug&Charge, or 'mac_address' for MAC addresses used by Autocharge."},"extendingSessionId":{"deprecated":true,"type":"integer","nullable":true,"description":"When a session is finished (because connectivity was lost for a long time) and more data is received, the\nadditional data is stored in an extending session. If this property is set, then this is an extending session.\n"},"originalSessionId":{"type":"integer","description":"ID of the session that the current session is extending."},"extendedBySessionId":{"type":"integer","description":"ID of the session that extends this session."},"reimbursementEligibility":{"type":"boolean"},"externalSessionId":{"deprecated":true,"nullable":true,"type":"string","description":"Deprecated: Use `idTag` field instead. This field will be removed in a future version.\nPreviously used for admin-started sessions, this value is now available in the `idTag` field.\n"},"authorization":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]},"chargingPeriods":{"type":"array","items":{"type":"object","description":"Describes a period in the session that is billed separately, for example charging@night (for time of day tariffs) or idle (for tariffs that charge separately idle time)","properties":{"id":{"type":"integer"},"energy":{"type":"integer","description":"Delivered energy in Wh"},"energyPrecise":{"type":"number","nullable":true,"description":"Delivered energy in Wh with decimal precision"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"state":{"deprecated":true,"type":"string","example":["charging","charging@night","charging@day","idle","idle@day","idle@night","charging@boosted","charging@optimised"],"description":"The state of the period. A non exhaustive list of possible values:\n  * `charging` - the vehicle was charging\n  * `charging@night` - a ToD tariff was selected and the vehicle was charging during the nighttime period of the tariff\n  * `charging@day` - a ToD tariff was selected and the vehicle was charging during the daytime period of the tariff\n  * `idle` - a tariff with separate pricing for idle time was selected and the charging was idle in that period\n  * `idle@night` - a ToD tariff was selected and the vehicle was idling during the nighttime period of the tariff\n  * `idle@day` - a ToD tariff was selected and the vehicle was idling during the daytime period of the tariff\n  * `charging@boosted` - Optimised dynamic pricing was applied and charging was performed with full available power\n  * `charging@optimised` - Optimised dynamic pricing was applied and charging was performed with lower price and limited power during peak hours\n"},"chargingState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the period."},"graceTimeEndAt":{"type":"string","format":"date-time","description":"When the idle fee grace period expires for this charging period. Present only on idle charging periods that have a grace period configured."},"pricingDetails":{"description":"Optional pricing details specific to this charging period, dependent on the tariff.","type":"object","properties":{"chargingType":{"type":"string","enum":["boosted","optimised"],"nullable":true,"description":"Power delivery strategy used during this period.\n  * `boosted` - maximum available power delivery\n  * `optimised` - reduced power during peak hours for cost efficiency\n"},"dayPeriod":{"type":"string","nullable":true,"enum":["day","night"],"description":"The period of the day.\n  * `day` - daytime period of the tariff\n  * `night` - nighttime period of the tariff\n"},"pricingMethod":{"type":"string","nullable":true,"enum":["duration","energy","durationAndEnergy","free"],"description":"The method used for calculating price in standard tariffs.\n  * `duration` - pricing based on duration\n  * `energy` - pricing based on energy consumption\n  * `durationAndEnergy` - pricing based on both duration and energy\n  * `free` - free period with no charge\n"},"price":{"type":"number","format":"decimal","description":"Base price rate for Energy Time of Usage tariffs"},"markup":{"type":"number","format":"decimal","description":"Additional percentage or fixed amount added to the base price"},"initialEnergyPrice":{"type":"number","format":"decimal","description":"Starting price rate for energy-based charging"},"initialDurationPrice":{"type":"number","format":"decimal","description":"Starting price rate for time-based charging"},"startHour":{"type":"string","description":"The start hour for the charging period"},"endHour":{"type":"string","description":"The end hour for the charging period"},"day":{"type":"string","description":"The day being used"}}},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"priceBreakdown":{"type":"array","items":{"description":"Charging period price breakdown","type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},"description":"A breakdown of the different tariff elements that create the total amount of the charging period. Only sent when `withChargingPeriodsPriceBreakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."}},"required":["id","energy","startedAt","state"]}},"priceBreakdown":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},{"type":"object","properties":{"totalPrice":{"type":"number","format":"decimal","description":"The `unitPrice` multiplied by the `quantity`.","deprecated":true},"unitPrice":{"type":"number","format":"decimal","description":"The price of a single unit of the tariff element.","deprecated":true}},"required":["totalPrice","unitPrice"]}]},"description":"A breakdown of the different tariff elements that create the total amount of the charging session. Only sent when `session_with_price_breakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."},"tariffSnapshotId":{"type":"integer","nullable":true,"description":"At the start of the charging session the tariff will be snapshotted and that snapshot will not be changed ever. That snapshot is used to determine the price of the charging session. This is the ID of that snapshot.\n"},"electricityCost":{"type":"number","format":"decimal","nullable":true},"evsePhysicalReference":{"type":"string","description":"This could be either the identifier that is presented to the user, so they can identify the EVSE at the location. Or for roaming EVSEs - it is the roaming evse_id.\n","nullable":true},"paymentStatusUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"chargePointOperatorRoamingId":{"type":"string","description":"The roaming operator identifier (e.g., \"DE*ENA\", \"LT*IGN\") of the operator who owns the charge point where the session occurred. Only returned for roaming sessions."},"roaming":{"type":"object","properties":{"cdrIds":{"type":"array","description":"The CDRs that are generated for roaming sessions.","items":{"type":"integer"}},"sessionId":{"type":"string","description":"The unique id that identifies the charging session in the CPO platform."},"roamingOperatorCpoId":{"type":"integer","description":"The id of the roaming operator that owns the charge point at which the session occurred."},"cpoLastUpdatedAt":{"type":"string","format":"date-time","description":"Applicable only for OCPI sessions and populated with the most recent shared `last_updated` value from the CPO roaming operator. ISO 8601 formatted date","readOnly":true}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"randomisedDelay":{"type":"integer","description":"Number of seconds by which current offering is being delayed at the start of the session. The field is omitted when randomised delay is not enabled in the Personal Charging settings or when there is no randomised delay."},"receiptId":{"deprecated":true,"type":"integer","nullable":true},"externalAppData":{"description":"Used to hold any external application data related to the session.","type":"object","nullable":true,"additionalProperties":true},"clockAlignedEnergyConsumption":{"type":"array","items":{"type":"object","description":"Session Clock aligned consumption period","properties":{"start":{"type":"string","format":"date-time","description":"The beginning of the clock-aligned consumption period."},"end":{"type":"string","format":"date-time","description":"The end of the clock-aligned consumption period."},"energyConsumed":{"deprecated":true,"type":"integer","description":"The amount of total consumed energy(Wh) during the clock-aligned consumption period."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"The amount of total consumed energy (Wh) during the clock-aligned consumption period."},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for the specified clock-aligned consumption period."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for the specified clock-aligned consumption period."}},"required":["total","grid"]},"totalCost":{"type":"object","description":"The total cost of energy consumption during the clock-aligned period.","properties":{"withTax":{"type":"number","description":"Total cost including tax."},"withoutTax":{"type":"number","description":"Total cost excluding tax."}},"required":["withTax"]}},"required":["start","end","energyConsumed","energyConsumption"]},"description":"Energy consumption during time intervals (15, 30 or 60 minutes) in the charging session. The start of the first interval is the start of the session then the intervals are defined by the exact minute of the hour. Clock-aligned consumption periods are included in the response only when the query param 'withClockAlignedEnergyConsumption' is set to 'true'."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"Delivered energy (Wh)"},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for all clock-aligned consumption periods in the charging session."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for all clock-aligned consumption periods in the charging session."}},"required":["total","grid"]},"estimatedSavings":{"type":"number","description":"The sum of savings that could be achieved if the consumed energy was not locally generated but delivered from the grid for all clock-aligned consumption periods in the charging session."},"billingStatus":{"type":"string","description":"The status of the billing process for the session.","nullable":true,"enum":["pending","suspended","completed",null]},"billingCompletedAt":{"type":"string","format":"date-time","description":"The timestamp when session billing was completed. Only present when billing has completed, omitted otherwise."},"power":{"type":"object","properties":{"latest":{"type":"number","nullable":true,"description":"The current charging power (in watts)"},"peak":{"type":"number","nullable":true,"description":"The maximum charging power (in watts) reached during the session"},"average":{"type":"number","nullable":true,"description":"The average charging power (in watts) maintained during the session"}}}},"required":["id","operatorId","status","userId","authorizationId","energy","energyConsumption","chargePointId","evseId","startedAt","billingStatus"]}},"required":["notification","session"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"session.chargingPeriod.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Charging Period Changed Notification Callback","description":"Notification sent when a session's charging period state changes.\n\nThis notification fires in two scenarios:\n1. **First charging period created** - when the session's first charging period is created. In this case, `previousChargingPeriodId` and `previousState` are null.\n2. **Charging period state transition** - when a session transitions to a different charging period state (e.g., charging → idle, idle → charging).\n\nThe notification does NOT fire:\n- When a charging period is extended without state change\n- On pricing or metering updates\n\nUse the session ID to fetch additional session details via the Public API if needed.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["session.chargingPeriod.changed"]},"sessionId":{"type":"integer","description":"The ID of the session"},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"evseId":{"type":"integer","description":"The ID of the EVSE"},"previousChargingPeriodId":{"type":"integer","nullable":true,"description":"The ID of the previous charging period. Null when this is the first charging period of the session."},"currentChargingPeriodId":{"type":"integer","description":"The ID of the current charging period"},"previousState":{"type":"string","nullable":true,"description":"The state of the previous charging period. Null when this is the first charging period of the session."},"currentState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the current charging period"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the transition occurred"}},"required":["notification","sessionId","chargePointId","evseId","currentChargingPeriodId","currentState","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"UserChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Changed Notification Callback","description":"User Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["UserChangedNotification"]},"user":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}},"action":{"type":"string","enum":["created","updated","deleted","permanently deleted"],"description":"When the user requests their account to be removed, the action results into \"permanently deleted\"."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","user","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.invoiceDetails.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Invoice Details Changed Notification Callback","description":"User Invoice Details Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.invoiceDetails.changed"]},"userId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"PartnerChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"summary":"Partner Created or Deleted Notification Callback","description":"Partner Created or Deleted Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["PartnerChangedNotification"]},"user":{"type":"object","properties":{"id":{"type":"string"}}},"action":{"type":"string","enum":["created","deleted"]}},"required":["notification","user","action"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"parkingSpace.occupancyStatus.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Parking Space Occupancy Status Changed","description":"Parking Space Occupancy Status Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["parkingSpace.occupancyStatus.changed"]},"parkingSpaceId":{"type":"integer","description":"Id of the parking space that changed occupancy."},"occupancyStatus":{"type":"string","description":"The parking space changed occupancy to this status.","enum":["available","occupied"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","parkingSpaceId","occupancyStatus","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"partner.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Partner Changed","description":"Partner Changed notification is sent when a partner is created, updated, or deleted.\n\n**Field behavior by action:**\n- **created/updated**: Only includes core fields (notification, partnerId, action, lastUpdatedAt)\n- **deleted**: Includes core fields plus additional partner details (only non-null fields are included)\n\nWhen a partner is deleted, identifying fields with non-null values are included in the payload\nto enable external systems to clean up their records properly.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["partner.changed"]},"partnerId":{"type":"integer","description":"The unique identifier of the partner"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The type of change that occurred"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalId":{"type":"string","description":"The external ID of the partner (only present for 'deleted' action when value exists)"},"companyName":{"type":"string","description":"The name of the company as per the legal registration (only present for 'deleted' action when value exists)"},"businessName":{"type":"string","description":"The operational name of the business if different from company name (only present for 'deleted' action when value exists)"},"regNo":{"type":"string","description":"National company registration number (only present for 'deleted' action when value exists)"},"vatNo":{"type":"string","description":"The partner's VAT registration number (only present for 'deleted' action when value exists)"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., DE, BG, US) (only present for 'deleted' action when value exists)"}},"required":["notification","partnerId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"authorization.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Authorization Changed","summary":"Authorization Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["authorization.changed"]},"authorizationId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"chargePointId":{"type":"integer"},"idTag":{"type":"string"},"status":{"type":"string","enum":["accepted","rejected","pending"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","authorizationId","action","lastUpdatedAt","status"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SubOperatorChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Sub-operator Notification Callback","summary":"Sub-operator Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SubOperatorChangedNotification"]},"subOperator":{"type":"object","properties":{"id":{"type":"integer"}}},"action":{"type":"string","enum":["created","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","subOperator","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"TariffChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Tariff Changed Notification Callback","description":"Tariff Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["TariffChangedNotification"]},"tariff":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","tariff","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"reservation.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Reservation Status Changed","description":"Reservation Status Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["reservation.changed"]},"reservationId":{"type":"integer"},"status":{"type":"string","enum":["active","expired","canceled","done"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","reservationId","status","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.paymentMethod.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Payment Method Changed","description":"User Payment Method Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.paymentMethod.changed"]},"paymentMethodId":{"type":"string"},"userId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","paymentMethodId","userId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"partnerInvite.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Partner Invite Changed","summary":"Partner Invite Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["partnerInvite.changed"]},"partnerInviteId":{"type":"integer"},"userId":{"type":"integer","nullable":true},"email":{"type":"string","nullable":true,"description":"Email used for the association to the User."},"action":{"type":"string","enum":["created","updated","deleted"]},"allowCorporateAccountBilling":{"type":"boolean"},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean"},"allowAccessToPrivateChargePoints":{"type":"boolean"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","partnerInviteId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.subscriptionChanged":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"User Subscription Changed. Deprecated - use user.subscription.changed notification instead.","summary":"User Subscription Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.subscriptionChanged"]},"userId":{"type":"integer"},"planId":{"type":"integer"},"status":{"type":"string","enum":["active","cancelled","expired"]},"endDate":{"type":"string","format":"date-time","example":"2020-11-26 10:00:00"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","planId","status","endDate","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.subscription.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"User Subscription Changed","summary":"User Subscription Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.subscription.changed"]},"userId":{"type":"integer"},"planId":{"type":"integer"},"status":{"type":"string","enum":["active","canceled","expired","pending","suspended"]},"endsAt":{"type":"string","format":"date-time","example":"2020-11-26 10:00:00"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","planId","status","endsAt","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"idTag.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Id Tag Changed","summary":"Id Tag Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["idTag.changed"]},"idTagsId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","action","idTagsId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"roamingPlatform.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Roaming Platform Changed","summary":"Roaming Platform Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["roamingPlatform.changed"]},"roamingPlatformId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","roamingPlatformId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"userBalance.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"User Balance Changed","summary":"User Balance Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["userBalance.changed"]},"debit":{"type":"number"},"credit":{"type":"number"},"updatedBalance":{"type":"number"},"userId":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"type":{"type":"string","enum":["transaction","user_top_up","api_top_up","operator_top_up","voucher","top_up","auto_top_up","add_to_balance","promo_code","subscribe_to_plan","custom_fee"]},"transactionId":{"type":"integer","nullable":true},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","debit","credit","updatedBalance","userId","currency","type","timestamp","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"transaction.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Transaction Changed","summary":"Transaction Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["transaction.changed"]},"transactionId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","transactionId","action"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"settlementReport.created":{"{$request.body#/callbackUrl}":{"post":{"description":"Settlement report created","summary":"Settlement report created","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["settlementReport.created"]},"id":{"type":"integer"},"reportUid":{"type":"string"},"partnerId":{"type":"integer"},"issueDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"period":{"type":"string","description":"The exact period for which the Settlement report is issued."},"totalKwhDeliveredAsCPO":{"type":"number"},"totalKwhDeliveredAsEmsp":{"type":"number"},"totalRevenueCollectedCurrentPeriod":{"type":"number","description":"The collected revenue within the period of the settlement report for sessions that happened within the same period."},"totalRevenueCollectedPreviousPeriods":{"type":"number","description":"The revenue collected within the period of the settlement report for sessions that happened in previous periods."},"totalCollectedBalanceCurrentPeriod":{"type":"number","description":"= totalRevenueCollectedCurrentPeriod - totalExpenses"},"totalCollectedBalancePreviousPeriods":{"type":"number","description":"= (totalRevenueCollectedCurrentPeriod + totalRevenueCollectedPreviousPeriods) - totalExpenses"},"totalRevenue":{"type":"number","description":"The revenue generated for the period of the settlement report."},"totalExpenses":{"type":"number","description":"The expenses generated for the period of the settlement report."},"totalAmount":{"type":"number","description":"= totalRevenue - totalExpenses"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","id","reportUid","partnerId","issueDate","period","totalKwhDeliveredAsCPO","totalKwhDeliveredAsEmsp","totalRevenueCollectedCurrentPeriod","totalCollectedBalanceCurrentPeriod","totalRevenue","totalExpenses","totalAmount","currency","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargePoint.dataTransferReceived":{"{$request.body#/callbackUrl}":{"post":{"summary":"Data Transfer recieved","description":"Data Transfer recieved","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargePoint.dataTransferReceived"]},"chargePointId":{"type":"integer"},"vendorId":{"type":"string"},"messageId":{"type":"string"},"data":{"type":"string"}},"required":["notification","chargePointId","vendorId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"cdr.received":{"{$request.body#/callbackUrl}":{"post":{"summary":"Cdr received","description":"Cdr received","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["cdr.received"]},"id":{"type":"string","description":"Uniquely identifies the CDR within the CPO’s platform (and sub operator platforms). Can use this to get the CDR resource by calling the CDR listing endpoint and filtering by roamingId."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","id","createdAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargingProfile.applied":{"{$request.body#/callbackUrl}":{"post":{"summary":"Applied Charging Profile","description":"For each charging schedule that is sent to the charge point you will get one notification callback.","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargingProfile.applied"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer","nullable":true},"sessionId":{"type":"integer","nullable":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"appliedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","evseId","sessionId","chargingProfile","appliedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"installerJob.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Installer Job Changed","summary":"Installer Job Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["installerJob.changed"]},"action":{"type":"string","enum":["created","updated"]}},"required":["notification","action"]},{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"chargePoints":{"description":"List of charge points assigned to the installer job","type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true}}}}}}]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"issue.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Issue Changed Notification Callback","description":"Notification sent when an issue is created, updated, or deleted.\n\n**Field behavior by action:**\n- **created/updated**: Includes status and workflowState fields\n- **deleted**: Only includes core fields (notification, issueId, action, updatedAt)\n\nUse this notification to track issue lifecycle changes and synchronize issue data with external systems.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Webhook notification payload sent when an issue is created, updated, or deleted","properties":{"notification":{"type":"string","enum":["issue.changed"],"description":"Webhook notification type"},"issueId":{"type":"integer","description":"ID of the issue that changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"Type of change that occurred"},"status":{"allOf":[{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"}],"description":"Current status of the issue. Not present when action is deleted."},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"description":"Current workflow state of the issue. Not present when action is deleted."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of the last update to the issue"}},"required":["notification","issueId","action","updatedAt"],"example":{"notification":"issue.changed","issueId":123,"action":"updated","status":"investigating","workflowState":"open","updatedAt":"2025-01-15T10:00:00+00:00"}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"corporateBilling.limitReached":{"{$request.body#/callbackUrl}":{"post":{"summary":"Corporate Billing Limit Reached","description":"Notification sent when a corporate billing limit is reached.\n\nThis notification is triggered when usage reaches or exceeds 100% of the configured limit.\nIt is sent once per billing period for each limit breach.\n\nBoth Partner-level and individual user-level limits trigger notifications.\nThe `limitType` field indicates whether the limit is the Partner's overall limit or an individual user's limit.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["corporateBilling.limitReached"]},"partnerId":{"type":"integer","description":"The Partner whose billing limit was reached"},"userId":{"type":"integer","nullable":true,"description":"The specific user if this is an individual limit; null if Partner-level limit"},"currentUsage":{"type":"number","description":"The current billing usage amount"},"limit":{"type":"number","description":"The configured billing limit"},"limitType":{"type":"string","enum":["partner","individual"],"description":"Whether this is a Partner-level limit or an individual per-user limit"},"billingPeriod":{"type":"string","enum":["monthly","quarterly","semi_annually","annually"],"description":"The billing period"},"periodStartsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"periodEndsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","partnerId","userId","currentUsage","limit","limitType","billingPeriod","periodStartsAt","periodEndsAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}}},"responses":{"201":{"description":"Webhook created","content":{"application/json":{"schema":{"type":"object","properties":{"webhookId":{"type":"number"},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","example":"https://myserver.com/send/callback/here"}},"required":["webhookId","notifications","callbackUrl"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"notificationsListingDeprecated","tags":["notifications"],"summary":"Notifications / Listing","deprecated":true,"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"webhookId":{"type":"number"},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","example":"https://myserver.com/send/callback/here"}},"required":["webhookId","notifications","callbackUrl"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/notifications/v1.0/{notification}":{"parameters":[{"name":"notification","in":"path","schema":{"type":"string"},"required":true}],"get":{"operationId":"notificationsReadDeprecated","tags":["notifications"],"summary":"Notifications / Read","deprecated":true,"description":"Get a notification","responses":{"200":{"description":"Get a notification","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"webhookId":{"type":"number"},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","example":"https://myserver.com/send/callback/here"}},"required":["webhookId","notifications","callbackUrl"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"notificationsUpdateDeprecated","tags":["notifications"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl","notifications"]}}}},"summary":"Notifications / Update","description":"Update a notification","deprecated":true,"responses":{"200":{"description":"Update a notification","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"webhookId":{"type":"number"},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"callbackUrl":{"type":"string","format":"uri","example":"https://myserver.com/send/callback/here"}},"required":["webhookId","notifications","callbackUrl"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"notificationsUnsubscribeDeprecated","tags":["notifications"],"summary":"Notifications / Unsubscribe","description":"Unsubscribe for a webhook","deprecated":true,"responses":{"204":{"description":"Webhook deleted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/notifications/v2.0":{"post":{"tags":["notifications"],"summary":"Notifications / Subscribe","operationId":"notificationsSubscribe","description":"Subscribe for a webhook or kafka events. Each notification sent to the webhook/kafka will be retried\na number of times and will be rate limited. The rate limits, retries and retry\nintervals will be configured by the platform administrator.\n\nEach notification callback will contain a signature in the `X-Signature` request\nheader which can be verified using SHA256-HMAC on the body of the request using\nthe access token that was used when creating the notification as key.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}}}},"callbacks":{"AuthorizationNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"Authorization Notification Callback","summary":"Authorization Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}},{"in":"header","name":"X-Webhook-Id","description":"The notification id of the subscription","schema":{"type":"string"}},{"in":"header","name":"X-Webhook-Type","description":"The notification type","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["AuthorizationNotification"]},"chargePointId":{"type":"integer"},"authorizationId":{"type":"integer"},"idTag":{"type":"string"},"status":{"type":"string","enum":["Accepted","Blocked","Expired","Invalid","ConcurrentTx"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","idTag","status","lastUpdatedAt","authorizationId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"BootNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Boot Notification Callback","summary":"Boot Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["BootNotification"]},"chargePointId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"bootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}}}}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"ChargePointChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"summary":"Charge point | EVSE | Connector Changed Notification Callback","description":"Charge point | EVSE | Connector Changed Notification Callback\n\n**DEPRECATED**: This notification has been deprecated in favor of the more specific notifications:\n- `chargePoint.changed` for charge point master data changes\n- `evse.changed` for EVSE and connector changes\n\nThis notification will continue to work but should not be used for new integrations.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["ChargePointChangedNotification"]},"chargePoint":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","charge-point","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargePoint.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Charge Point Changed Notification Callback","description":"Lightweight notification for charge point master data and configuration changes.\n\nThis notification is triggered when the charge point itself has been edited (including configuration changes such as uptime tracking enabled/disabled) but NOT when:\n- The network or hardware status have changed (use NetworkStatusNotification and HardwareStatusNotification instead)\n- EVSEs of the charge point have changed (use evse.changed notification instead)\n\nThe notification only contains minimal information: notification type, charge point ID, action taken, and timestamp.\nTo get the full charge point details, use the charge point API endpoint with the provided ID.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargePoint.changed"]},"chargePointId":{"type":"integer","description":"The ID of the charge point that was changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The action that was performed:\n- `created`: A new charge point was created\n- `updated`: An existing charge point's master data or configuration was modified\n- `deleted`: A charge point was deleted\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"evse.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"EVSE Changed Notification Callback","description":"Lightweight notification for EVSE and connector changes.\n\nThis notification is triggered when an EVSE has been edited, including changes to its own properties or its connectors.\nThe notification is NOT triggered when the hardware status changes (use HardwareStatusNotification instead).\n\nThe notification only contains minimal information: notification type, EVSE ID, action taken, and timestamp.\nTo get the full EVSE details, use the EVSE API endpoint with the provided ID.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["evse.changed"]},"evseId":{"type":"integer","description":"The ID of the EVSE that was changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The action that was performed:\n- `created`: A new EVSE was created\n- `updated`: An existing EVSE or its connectors were modified\n- `deleted`: An EVSE was deleted\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","evseId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"ChargePointSyncConfigurationNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Sync Configuration Notification Callback","description":"For each action/sync-configuration, you will get one notification callback.\nYou will also get a notification in case the an automatic sync is done (after charge point boot). In that case there will be no requestId.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["ChargePointSyncConfigurationNotification"]},"chargePointId":{"type":"integer"},"requestId":{"type":"integer"},"configuration":{"type":"array","items":{"type":"object","properties":{"key":{"allOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]},"value":{"type":"string"},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"description":"If there is no error this holds list of Charge Point's configuration properties.\nIn case the request was for full load or there was no request but an automatic full load, all keys will be present.\nIn case the request only wanted some keys, only those keys will be present.\n"},"error":{"type":"string","description":"If sync configuration failed this will hold the error message description."}},"required":["chargePointId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"CircuitConsumptionNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Circuit Consumption Notification Callback","description":"Circuit Consumption Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["CircuitConsumptionNotification"]},"circuitId":{"type":"integer"},"maxCurrent":{"type":"number"},"minChargePointCurrent":{"type":"number"},"currentConsumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"circuit.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Circuit Changed Notification Callback","description":"Circuit Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["circuit.changed"]},"circuitId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","circuitId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"DiagnosticsStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Diagnostics Status Notification Callback","summary":"Diagnostics Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["DiagnosticsStatusNotification"]},"chargePointId":{"type":"integer"},"requestId":{"type":"integer"},"status":{"type":"string","enum":["idle","uploaded","uploadfailed","uploading"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","requestId","status","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"FirmwareStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Firmware Status Notification Callback.\n\nThe payload structure varies based on the OCPP protocol version.\n","summary":"Firmware Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 1.5"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","InstallationFailed","Installed"],"description":"The firmware status for OCPP 1.5 charge points"}},"required":["protocol","firmwareStatus"]}]},{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 1.6"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","Downloading","Idle","InstallationFailed","Installing","Installed"],"description":"The firmware status for OCPP 1.6 charge points"}},"required":["protocol","firmwareStatus"]}]},{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["FirmwareStatusNotification"]},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"externalId":{"type":"string","description":"The external ID of the charge point if set"},"firmwareUpdateExecutionId":{"type":"integer","description":"The ID of the automated firmware update execution if the firmware update was done using the internal firmware automation"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","protocol","firmwareStatus","lastUpdatedAt"]},{"type":"object","properties":{"protocol":{"type":"string","enum":["ocpp 2.0.1"],"description":"The OCPP protocol version used by the charge point"},"firmwareStatus":{"type":"string","enum":["Downloaded","DownloadFailed","Downloading","DownloadScheduled","DownloadPaused","Idle","InstallationFailed","Installing","Installed","InstallRebooting","InstallScheduled","InstallVerificationFailed","InvalidSignature","SignatureVerified"],"description":"The firmware status for OCPP 2.0.1 charge points"},"requestId":{"type":"integer","description":"Populated only if the firmware status is not requested using TriggerMessage. Helps correlate firmware updates with status notifications."}},"required":["protocol","firmwareStatus"]}]}],"discriminator":{"propertyName":"protocol"}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"HardwareStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Hardware Status Notification Callback","description":"Hardware Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["HardwareStatusNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"},"errorCode":{"type":"string","nullable":true},"info":{"type":"string","nullable":true},"vendorId":{"type":"string","nullable":true},"vendorErrorCode":{"type":"string","nullable":true}},"required":["notification","chargePointId","timestamp","hardwareStatus"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"LocationChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Location Changed Notification Callback","summary":"Location Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["LocationChangedNotification"]},"location":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","location","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"NetworkStatusNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Network Status Notification Callback","summary":"Network Status Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["NetworkStatusNotification"]},"chargePointId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"}},"required":["notification","chargePointId","networkStatus","timestamp"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SecurityEventNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Security Event Notification Callback","summary":"Security Event Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SecurityEventNotification"]},"chargePointId":{"type":"integer"},"type":{"type":"string","enum":["FirmwareUpdated","FailedToAuthenticateAtCentralSystem","CentralSystemFailedToAuthenticate","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","ReconfigurationOfSecurityParameters","MemoryExhaustion","InvalidMessages","AttemptedReplayAttacks","TamperDetectionActivated","InvalidFirmwareSignature","InvalidFirmwareSigningCertificate","InvalidCentralSystemCertificate","InvalidChargePointCertificate","InvalidTLSVersion","InvalidTLSCipherSuite"]},"timestamp":{"type":"string","format":"date-time"},"techInfo":{"type":"string"},"critical":{"type":"boolean"}},"required":["notification","chargePointId","type","timestamp","critical"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionMeterValuesNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Meter Values Notification Callback","description":"Session Meter Values Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionMeterValuesNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionId":{"type":"integer"},"externalSessionId":{"type":"string"},"meterValues":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"measurand":{"type":"string","description":"A parameter related to the charging process. Possible measurand values are based on OCPP standard and any custom hardware parameters (config keys).","enum":["Energy Consumed","Energy Active Import Register","State Of Charge","Current Import","Current Offered","Voltage","Power Active Import","Temperature","Power Offered"]},"value":{"type":"number"},"unit":{"type":"string","enum":["Wh","A","V","Percent","Celsius"]}}}}},"required":["notification","chargePointId","evseId","sessionId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionStartStopNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"Session Start and Stop Notification Callback","summary":"Session Start and Stop Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionStartStopNotification"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"action":{"type":"string","enum":["start","stop"]},"sessionId":{"type":"integer"},"idTag":{"type":"string"},"startedAtTimestamp":{"type":"string","format":"date-time"},"stoppedAtTimestamp":{"type":"string","format":"date-time"},"energyConsumed":{"type":"number","description":"Total energy consumend during the session in Wh"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","description":"In case of start action it will contain the user id if there is one. It will be null for anonumous sessions. In case of stop transaction it will always be null."},"externalSessionId":{"type":"string"},"meterStart":{"type":"integer","description":"Meter value in Wh when the session is started."},"meterStop":{"type":"integer","description":"Meter value in Wh when the session is stopped."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalAppData":{"type":"object","nullable":true,"additionalProperties":true,"description":"Used to hold any external application data related to the session."}},"required":["notification","chargePointId","evseId","sessionId","startedAtTimestamp","lastUpdatedAt","meterStart","meterStop"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"session.start.stop.notification":{"{$request.body#/callbackUrl}":{"post":{"description":"Session Start and Stop Notification Callback","summary":"Session Start and Stop Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["session.start.stop.notification"]},"sessionId":{"type":"integer"},"userId":{"type":"integer","description":"The ID of the user associated with the session. Omitted for anonymous sessions."},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"action":{"type":"string","enum":["start","stop"]},"idTag":{"type":"string"},"externalSessionId":{"type":"string"},"startedAtTimestamp":{"type":"string","format":"date-time"},"meterStart":{"type":"integer","description":"Meter value in Wh when the session is started."},"meterStop":{"type":"integer","description":"Meter value in Wh when the session is stopped."},"startedAtTimestampLocal":{"type":"string","format":"date-time","description":"Local timestamp when the session started (when multi-timezone is enabled)."},"stoppedAtTimestamp":{"type":"string","format":"date-time"},"stoppedAtTimestampLocal":{"type":"string","format":"date-time","description":"Local timestamp when the session stopped (when multi-timezone is enabled)."},"energyConsumed":{"type":"number","description":"Total energy consumed during the session in Wh"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalAppData":{"type":"object","nullable":true,"additionalProperties":true,"description":"Used to hold any external application data related to the session."}},"required":["notification","sessionId","chargePointId","evseId","action","startedAtTimestamp","meterStart","meterStop","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SessionUpdateNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Update Notification Callback","description":"Session Update Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SessionUpdateNotification"]},"session":{"type":"object","description":"Charging session","properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"connectorId":{"type":"integer","nullable":true},"status":{"type":"string","enum":["unknown","pending","active","finished","failed","expired"]},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","nullable":true,"description":"The id of the user that started the session"},"bookingId":{"type":"integer","description":"The ID of the linked booking (if any)"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"energy":{"deprecated":true,"type":"number","description":"Delivered energy in Wh"},"powerKw":{"deprecated":true,"type":"number","description":"This field representing the current charging speed in kilowatts is deprecated. Use the `power.latest` property instead for charging power information."},"socPercent":{"type":"number","description":"State of charge (in %). Optional."},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"nullable":true,"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"tax":{"type":"object","nullable":true,"deprecated":true,"properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"paymentType":{"type":"string","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"paymentMethodId":{"type":"string","description":"The ID of the payment method. Mind that this is actually a string. It can be, for example `corporate:1234` - for corporate billing, or `balance`, or `subscription` - when the session is to be paid with the user's post-paid subscription.","nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used.","nullable":true},"nonBillableEnergy":{"type":"number","description":"The energy that is included as an allowance for pre-paid and post subscriptions."},"paymentStatus":{"type":"string","nullable":true,"enum":["pending","paid","partially","failed",null]},"authorizationId":{"nullable":true,"type":"integer"},"idTag":{"type":"string","description":"The idTag defines the authentication source for the session (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"idTagLabel":{"type":"string","description":"Additional information about the idTag that differs depending on the type of the idTag or could be something else, related to the car or the user."},"idTagType":{"type":"string","nullable":true,"enum":["rfid","emaid","mac_address"],"description":"The type of identifier used for authentication. Returns 'rfid' for standard RFID card identifiers, 'emaid' for E-Mobility Account Identifiers used by ISO15118 Plug&Charge, or 'mac_address' for MAC addresses used by Autocharge."},"extendingSessionId":{"deprecated":true,"type":"integer","nullable":true,"description":"When a session is finished (because connectivity was lost for a long time) and more data is received, the\nadditional data is stored in an extending session. If this property is set, then this is an extending session.\n"},"originalSessionId":{"type":"integer","description":"ID of the session that the current session is extending."},"extendedBySessionId":{"type":"integer","description":"ID of the session that extends this session."},"reimbursementEligibility":{"type":"boolean"},"externalSessionId":{"deprecated":true,"nullable":true,"type":"string","description":"Deprecated: Use `idTag` field instead. This field will be removed in a future version.\nPreviously used for admin-started sessions, this value is now available in the `idTag` field.\n"},"authorization":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]},"chargingPeriods":{"type":"array","items":{"type":"object","description":"Describes a period in the session that is billed separately, for example charging@night (for time of day tariffs) or idle (for tariffs that charge separately idle time)","properties":{"id":{"type":"integer"},"energy":{"type":"integer","description":"Delivered energy in Wh"},"energyPrecise":{"type":"number","nullable":true,"description":"Delivered energy in Wh with decimal precision"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"state":{"deprecated":true,"type":"string","example":["charging","charging@night","charging@day","idle","idle@day","idle@night","charging@boosted","charging@optimised"],"description":"The state of the period. A non exhaustive list of possible values:\n  * `charging` - the vehicle was charging\n  * `charging@night` - a ToD tariff was selected and the vehicle was charging during the nighttime period of the tariff\n  * `charging@day` - a ToD tariff was selected and the vehicle was charging during the daytime period of the tariff\n  * `idle` - a tariff with separate pricing for idle time was selected and the charging was idle in that period\n  * `idle@night` - a ToD tariff was selected and the vehicle was idling during the nighttime period of the tariff\n  * `idle@day` - a ToD tariff was selected and the vehicle was idling during the daytime period of the tariff\n  * `charging@boosted` - Optimised dynamic pricing was applied and charging was performed with full available power\n  * `charging@optimised` - Optimised dynamic pricing was applied and charging was performed with lower price and limited power during peak hours\n"},"chargingState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the period."},"graceTimeEndAt":{"type":"string","format":"date-time","description":"When the idle fee grace period expires for this charging period. Present only on idle charging periods that have a grace period configured."},"pricingDetails":{"description":"Optional pricing details specific to this charging period, dependent on the tariff.","type":"object","properties":{"chargingType":{"type":"string","enum":["boosted","optimised"],"nullable":true,"description":"Power delivery strategy used during this period.\n  * `boosted` - maximum available power delivery\n  * `optimised` - reduced power during peak hours for cost efficiency\n"},"dayPeriod":{"type":"string","nullable":true,"enum":["day","night"],"description":"The period of the day.\n  * `day` - daytime period of the tariff\n  * `night` - nighttime period of the tariff\n"},"pricingMethod":{"type":"string","nullable":true,"enum":["duration","energy","durationAndEnergy","free"],"description":"The method used for calculating price in standard tariffs.\n  * `duration` - pricing based on duration\n  * `energy` - pricing based on energy consumption\n  * `durationAndEnergy` - pricing based on both duration and energy\n  * `free` - free period with no charge\n"},"price":{"type":"number","format":"decimal","description":"Base price rate for Energy Time of Usage tariffs"},"markup":{"type":"number","format":"decimal","description":"Additional percentage or fixed amount added to the base price"},"initialEnergyPrice":{"type":"number","format":"decimal","description":"Starting price rate for energy-based charging"},"initialDurationPrice":{"type":"number","format":"decimal","description":"Starting price rate for time-based charging"},"startHour":{"type":"string","description":"The start hour for the charging period"},"endHour":{"type":"string","description":"The end hour for the charging period"},"day":{"type":"string","description":"The day being used"}}},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"priceBreakdown":{"type":"array","items":{"description":"Charging period price breakdown","type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},"description":"A breakdown of the different tariff elements that create the total amount of the charging period. Only sent when `withChargingPeriodsPriceBreakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."}},"required":["id","energy","startedAt","state"]}},"priceBreakdown":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},{"type":"object","properties":{"totalPrice":{"type":"number","format":"decimal","description":"The `unitPrice` multiplied by the `quantity`.","deprecated":true},"unitPrice":{"type":"number","format":"decimal","description":"The price of a single unit of the tariff element.","deprecated":true}},"required":["totalPrice","unitPrice"]}]},"description":"A breakdown of the different tariff elements that create the total amount of the charging session. Only sent when `session_with_price_breakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."},"tariffSnapshotId":{"type":"integer","nullable":true,"description":"At the start of the charging session the tariff will be snapshotted and that snapshot will not be changed ever. That snapshot is used to determine the price of the charging session. This is the ID of that snapshot.\n"},"electricityCost":{"type":"number","format":"decimal","nullable":true},"evsePhysicalReference":{"type":"string","description":"This could be either the identifier that is presented to the user, so they can identify the EVSE at the location. Or for roaming EVSEs - it is the roaming evse_id.\n","nullable":true},"paymentStatusUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"chargePointOperatorRoamingId":{"type":"string","description":"The roaming operator identifier (e.g., \"DE*ENA\", \"LT*IGN\") of the operator who owns the charge point where the session occurred. Only returned for roaming sessions."},"roaming":{"type":"object","properties":{"cdrIds":{"type":"array","description":"The CDRs that are generated for roaming sessions.","items":{"type":"integer"}},"sessionId":{"type":"string","description":"The unique id that identifies the charging session in the CPO platform."},"roamingOperatorCpoId":{"type":"integer","description":"The id of the roaming operator that owns the charge point at which the session occurred."},"cpoLastUpdatedAt":{"type":"string","format":"date-time","description":"Applicable only for OCPI sessions and populated with the most recent shared `last_updated` value from the CPO roaming operator. ISO 8601 formatted date","readOnly":true}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"randomisedDelay":{"type":"integer","description":"Number of seconds by which current offering is being delayed at the start of the session. The field is omitted when randomised delay is not enabled in the Personal Charging settings or when there is no randomised delay."},"receiptId":{"deprecated":true,"type":"integer","nullable":true},"externalAppData":{"description":"Used to hold any external application data related to the session.","type":"object","nullable":true,"additionalProperties":true},"clockAlignedEnergyConsumption":{"type":"array","items":{"type":"object","description":"Session Clock aligned consumption period","properties":{"start":{"type":"string","format":"date-time","description":"The beginning of the clock-aligned consumption period."},"end":{"type":"string","format":"date-time","description":"The end of the clock-aligned consumption period."},"energyConsumed":{"deprecated":true,"type":"integer","description":"The amount of total consumed energy(Wh) during the clock-aligned consumption period."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"The amount of total consumed energy (Wh) during the clock-aligned consumption period."},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for the specified clock-aligned consumption period."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for the specified clock-aligned consumption period."}},"required":["total","grid"]},"totalCost":{"type":"object","description":"The total cost of energy consumption during the clock-aligned period.","properties":{"withTax":{"type":"number","description":"Total cost including tax."},"withoutTax":{"type":"number","description":"Total cost excluding tax."}},"required":["withTax"]}},"required":["start","end","energyConsumed","energyConsumption"]},"description":"Energy consumption during time intervals (15, 30 or 60 minutes) in the charging session. The start of the first interval is the start of the session then the intervals are defined by the exact minute of the hour. Clock-aligned consumption periods are included in the response only when the query param 'withClockAlignedEnergyConsumption' is set to 'true'."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"Delivered energy (Wh)"},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for all clock-aligned consumption periods in the charging session."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for all clock-aligned consumption periods in the charging session."}},"required":["total","grid"]},"estimatedSavings":{"type":"number","description":"The sum of savings that could be achieved if the consumed energy was not locally generated but delivered from the grid for all clock-aligned consumption periods in the charging session."},"billingStatus":{"type":"string","description":"The status of the billing process for the session.","nullable":true,"enum":["pending","suspended","completed",null]},"billingCompletedAt":{"type":"string","format":"date-time","description":"The timestamp when session billing was completed. Only present when billing has completed, omitted otherwise."},"power":{"type":"object","properties":{"latest":{"type":"number","nullable":true,"description":"The current charging power (in watts)"},"peak":{"type":"number","nullable":true,"description":"The maximum charging power (in watts) reached during the session"},"average":{"type":"number","nullable":true,"description":"The average charging power (in watts) maintained during the session"}}}},"required":["id","operatorId","status","userId","authorizationId","energy","energyConsumption","chargePointId","evseId","startedAt","billingStatus"]}},"required":["notification","session"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"session.chargingPeriod.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Session Charging Period Changed Notification Callback","description":"Notification sent when a session's charging period state changes.\n\nThis notification fires in two scenarios:\n1. **First charging period created** - when the session's first charging period is created. In this case, `previousChargingPeriodId` and `previousState` are null.\n2. **Charging period state transition** - when a session transitions to a different charging period state (e.g., charging → idle, idle → charging).\n\nThe notification does NOT fire:\n- When a charging period is extended without state change\n- On pricing or metering updates\n\nUse the session ID to fetch additional session details via the Public API if needed.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["session.chargingPeriod.changed"]},"sessionId":{"type":"integer","description":"The ID of the session"},"chargePointId":{"type":"integer","description":"The ID of the charge point"},"evseId":{"type":"integer","description":"The ID of the EVSE"},"previousChargingPeriodId":{"type":"integer","nullable":true,"description":"The ID of the previous charging period. Null when this is the first charging period of the session."},"currentChargingPeriodId":{"type":"integer","description":"The ID of the current charging period"},"previousState":{"type":"string","nullable":true,"description":"The state of the previous charging period. Null when this is the first charging period of the session."},"currentState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the current charging period"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the transition occurred"}},"required":["notification","sessionId","chargePointId","evseId","currentChargingPeriodId","currentState","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"UserChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Changed Notification Callback","description":"User Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["UserChangedNotification"]},"user":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}},"action":{"type":"string","enum":["created","updated","deleted","permanently deleted"],"description":"When the user requests their account to be removed, the action results into \"permanently deleted\"."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","user","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.invoiceDetails.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Invoice Details Changed Notification Callback","description":"User Invoice Details Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.invoiceDetails.changed"]},"userId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"PartnerChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"summary":"Partner Created or Deleted Notification Callback","description":"Partner Created or Deleted Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["PartnerChangedNotification"]},"user":{"type":"object","properties":{"id":{"type":"string"}}},"action":{"type":"string","enum":["created","deleted"]}},"required":["notification","user","action"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"parkingSpace.occupancyStatus.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Parking Space Occupancy Status Changed","description":"Parking Space Occupancy Status Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["parkingSpace.occupancyStatus.changed"]},"parkingSpaceId":{"type":"integer","description":"Id of the parking space that changed occupancy."},"occupancyStatus":{"type":"string","description":"The parking space changed occupancy to this status.","enum":["available","occupied"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","parkingSpaceId","occupancyStatus","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"partner.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Partner Changed","description":"Partner Changed notification is sent when a partner is created, updated, or deleted.\n\n**Field behavior by action:**\n- **created/updated**: Only includes core fields (notification, partnerId, action, lastUpdatedAt)\n- **deleted**: Includes core fields plus additional partner details (only non-null fields are included)\n\nWhen a partner is deleted, identifying fields with non-null values are included in the payload\nto enable external systems to clean up their records properly.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["partner.changed"]},"partnerId":{"type":"integer","description":"The unique identifier of the partner"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"The type of change that occurred"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"externalId":{"type":"string","description":"The external ID of the partner (only present for 'deleted' action when value exists)"},"companyName":{"type":"string","description":"The name of the company as per the legal registration (only present for 'deleted' action when value exists)"},"businessName":{"type":"string","description":"The operational name of the business if different from company name (only present for 'deleted' action when value exists)"},"regNo":{"type":"string","description":"National company registration number (only present for 'deleted' action when value exists)"},"vatNo":{"type":"string","description":"The partner's VAT registration number (only present for 'deleted' action when value exists)"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., DE, BG, US) (only present for 'deleted' action when value exists)"}},"required":["notification","partnerId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"authorization.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Authorization Changed","summary":"Authorization Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["authorization.changed"]},"authorizationId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"chargePointId":{"type":"integer"},"idTag":{"type":"string"},"status":{"type":"string","enum":["accepted","rejected","pending"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","authorizationId","action","lastUpdatedAt","status"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"SubOperatorChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"description":"Sub-operator Notification Callback","summary":"Sub-operator Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["SubOperatorChangedNotification"]},"subOperator":{"type":"object","properties":{"id":{"type":"integer"}}},"action":{"type":"string","enum":["created","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","subOperator","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"TariffChangedNotification":{"{$request.body#/callbackUrl}":{"post":{"summary":"Tariff Changed Notification Callback","description":"Tariff Changed Notification Callback","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["TariffChangedNotification"]},"tariff":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","tariff","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"reservation.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Reservation Status Changed","description":"Reservation Status Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["reservation.changed"]},"reservationId":{"type":"integer"},"status":{"type":"string","enum":["active","expired","canceled","done"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","reservationId","status","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.paymentMethod.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"User Payment Method Changed","description":"User Payment Method Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.paymentMethod.changed"]},"paymentMethodId":{"type":"string"},"userId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","paymentMethodId","userId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"partnerInvite.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Partner Invite Changed","summary":"Partner Invite Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["partnerInvite.changed"]},"partnerInviteId":{"type":"integer"},"userId":{"type":"integer","nullable":true},"email":{"type":"string","nullable":true,"description":"Email used for the association to the User."},"action":{"type":"string","enum":["created","updated","deleted"]},"allowCorporateAccountBilling":{"type":"boolean"},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean"},"allowAccessToPrivateChargePoints":{"type":"boolean"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","partnerInviteId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.subscriptionChanged":{"{$request.body#/callbackUrl}":{"post":{"deprecated":true,"description":"User Subscription Changed. Deprecated - use user.subscription.changed notification instead.","summary":"User Subscription Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.subscriptionChanged"]},"userId":{"type":"integer"},"planId":{"type":"integer"},"status":{"type":"string","enum":["active","cancelled","expired"]},"endDate":{"type":"string","format":"date-time","example":"2020-11-26 10:00:00"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","planId","status","endDate","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"user.subscription.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"User Subscription Changed","summary":"User Subscription Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["user.subscription.changed"]},"userId":{"type":"integer"},"planId":{"type":"integer"},"status":{"type":"string","enum":["active","canceled","expired","pending","suspended"]},"endsAt":{"type":"string","format":"date-time","example":"2020-11-26 10:00:00"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","userId","planId","status","endsAt","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"idTag.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Id Tag Changed","summary":"Id Tag Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["idTag.changed"]},"idTagsId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","action","idTagsId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"roamingPlatform.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Roaming Platform Changed","summary":"Roaming Platform Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["roamingPlatform.changed"]},"roamingPlatformId":{"type":"integer"},"action":{"type":"string","enum":["created","updated","deleted"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","roamingPlatformId","action","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"userBalance.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"User Balance Changed","summary":"User Balance Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["userBalance.changed"]},"debit":{"type":"number"},"credit":{"type":"number"},"updatedBalance":{"type":"number"},"userId":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"type":{"type":"string","enum":["transaction","user_top_up","api_top_up","operator_top_up","voucher","top_up","auto_top_up","add_to_balance","promo_code","subscribe_to_plan","custom_fee"]},"transactionId":{"type":"integer","nullable":true},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","debit","credit","updatedBalance","userId","currency","type","timestamp","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"transaction.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Transaction Changed","summary":"Transaction Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["transaction.changed"]},"transactionId":{"type":"integer"},"action":{"type":"string","enum":["created","updated"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","transactionId","action"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"settlementReport.created":{"{$request.body#/callbackUrl}":{"post":{"description":"Settlement report created","summary":"Settlement report created","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["settlementReport.created"]},"id":{"type":"integer"},"reportUid":{"type":"string"},"partnerId":{"type":"integer"},"issueDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"period":{"type":"string","description":"The exact period for which the Settlement report is issued."},"totalKwhDeliveredAsCPO":{"type":"number"},"totalKwhDeliveredAsEmsp":{"type":"number"},"totalRevenueCollectedCurrentPeriod":{"type":"number","description":"The collected revenue within the period of the settlement report for sessions that happened within the same period."},"totalRevenueCollectedPreviousPeriods":{"type":"number","description":"The revenue collected within the period of the settlement report for sessions that happened in previous periods."},"totalCollectedBalanceCurrentPeriod":{"type":"number","description":"= totalRevenueCollectedCurrentPeriod - totalExpenses"},"totalCollectedBalancePreviousPeriods":{"type":"number","description":"= (totalRevenueCollectedCurrentPeriod + totalRevenueCollectedPreviousPeriods) - totalExpenses"},"totalRevenue":{"type":"number","description":"The revenue generated for the period of the settlement report."},"totalExpenses":{"type":"number","description":"The expenses generated for the period of the settlement report."},"totalAmount":{"type":"number","description":"= totalRevenue - totalExpenses"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","id","reportUid","partnerId","issueDate","period","totalKwhDeliveredAsCPO","totalKwhDeliveredAsEmsp","totalRevenueCollectedCurrentPeriod","totalCollectedBalanceCurrentPeriod","totalRevenue","totalExpenses","totalAmount","currency","lastUpdatedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargePoint.dataTransferReceived":{"{$request.body#/callbackUrl}":{"post":{"summary":"Data Transfer recieved","description":"Data Transfer recieved","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargePoint.dataTransferReceived"]},"chargePointId":{"type":"integer"},"vendorId":{"type":"string"},"messageId":{"type":"string"},"data":{"type":"string"}},"required":["notification","chargePointId","vendorId"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"cdr.received":{"{$request.body#/callbackUrl}":{"post":{"summary":"Cdr received","description":"Cdr received","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["cdr.received"]},"id":{"type":"string","description":"Uniquely identifies the CDR within the CPO’s platform (and sub operator platforms). Can use this to get the CDR resource by calling the CDR listing endpoint and filtering by roamingId."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","id","createdAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"chargingProfile.applied":{"{$request.body#/callbackUrl}":{"post":{"summary":"Applied Charging Profile","description":"For each charging schedule that is sent to the charge point you will get one notification callback.","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["chargingProfile.applied"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer","nullable":true},"sessionId":{"type":"integer","nullable":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"appliedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","chargePointId","evseId","sessionId","chargingProfile","appliedAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"installerJob.changed":{"{$request.body#/callbackUrl}":{"post":{"description":"Installer Job Changed","summary":"Installer Job Changed","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"notification":{"type":"string","enum":["installerJob.changed"]},"action":{"type":"string","enum":["created","updated"]}},"required":["notification","action"]},{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"chargePoints":{"description":"List of charge points assigned to the installer job","type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true}}}}}}]}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"issue.changed":{"{$request.body#/callbackUrl}":{"post":{"summary":"Issue Changed Notification Callback","description":"Notification sent when an issue is created, updated, or deleted.\n\n**Field behavior by action:**\n- **created/updated**: Includes status and workflowState fields\n- **deleted**: Only includes core fields (notification, issueId, action, updatedAt)\n\nUse this notification to track issue lifecycle changes and synchronize issue data with external systems.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Webhook notification payload sent when an issue is created, updated, or deleted","properties":{"notification":{"type":"string","enum":["issue.changed"],"description":"Webhook notification type"},"issueId":{"type":"integer","description":"ID of the issue that changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"Type of change that occurred"},"status":{"allOf":[{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"}],"description":"Current status of the issue. Not present when action is deleted."},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"description":"Current workflow state of the issue. Not present when action is deleted."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of the last update to the issue"}},"required":["notification","issueId","action","updatedAt"],"example":{"notification":"issue.changed","issueId":123,"action":"updated","status":"investigating","workflowState":"open","updatedAt":"2025-01-15T10:00:00+00:00"}}}}},"responses":{"202":{"description":"webhook accepted"}}}}},"corporateBilling.limitReached":{"{$request.body#/callbackUrl}":{"post":{"summary":"Corporate Billing Limit Reached","description":"Notification sent when a corporate billing limit is reached.\n\nThis notification is triggered when usage reaches or exceeds 100% of the configured limit.\nIt is sent once per billing period for each limit breach.\n\nBoth Partner-level and individual user-level limits trigger notifications.\nThe `limitType` field indicates whether the limit is the Partner's overall limit or an individual user's limit.\n","parameters":[{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"notification":{"type":"string","enum":["corporateBilling.limitReached"]},"partnerId":{"type":"integer","description":"The Partner whose billing limit was reached"},"userId":{"type":"integer","nullable":true,"description":"The specific user if this is an individual limit; null if Partner-level limit"},"currentUsage":{"type":"number","description":"The current billing usage amount"},"limit":{"type":"number","description":"The configured billing limit"},"limitType":{"type":"string","enum":["partner","individual"],"description":"Whether this is a Partner-level limit or an individual per-user limit"},"billingPeriod":{"type":"string","enum":["monthly","quarterly","semi_annually","annually"],"description":"The billing period"},"periodStartsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"periodEndsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["notification","partnerId","userId","currentUsage","limit","limitType","billingPeriod","periodStartsAt","periodEndsAt"]}}}},"responses":{"202":{"description":"webhook accepted"}}}}}},"responses":{"201":{"description":"Webhook created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"tags":["notifications"],"summary":"Notifications / Listing","operationId":"notificationsListing","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/notifications/v2.0/{notification}":{"parameters":[{"name":"notification","in":"path","schema":{"type":"string"},"required":true}],"get":{"tags":["notifications"],"summary":"Notification / Read","description":"Get a notification","operationId":"notificationRead","responses":{"200":{"description":"Get a notification","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"tags":["notifications"],"operationId":"notificationsCreate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}}}},"summary":"Notifications / Update","description":"Update a notification","responses":{"200":{"description":"Update a notification","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","readOnly":true},"via":{"type":"string","enum":["webhook","kafka"]},"notifications":{"type":"array","items":{"type":"string","enum":["AuthorizationNotification","authorization.changed","BootNotification","ChargePointChangedNotification","chargePoint.changed","evse.changed","ChargePointSyncConfigurationNotification","CircuitConsumptionNotification","circuit.changed","DiagnosticsStatusNotification","FirmwareStatusNotification","HardwareStatusNotification","LocationChangedNotification","NetworkStatusNotification","SecurityEventNotification","SessionMeterValuesNotification","SessionStartStopNotification","session.start.stop.notification","SessionUpdateNotification","session.chargingPeriod.changed","UserChangedNotification","SubOperatorChangedNotification","TariffChangedNotification","user.subscriptionChanged","user.subscription.changed","ReservationChangedNotification","PaymentMethodChangedNotification","PartnerInviteChangedNotification","reservation.changed","user.paymentMethod.changed","userBalance.changed","partnerInvite.changed","roamingPlatform.changed","parkingSpace.occupancyStatus.changed","partner.changed","transaction.changed","settlementReport.created","idTag.changed","issue.changed","chargePoint.dataTransferReceived","subscriptionPlan.changed","user.invoiceDetails.changed","cdr.received","chargingProfile.applied","installerJob.changed","corporateBilling.limitReached"]}},"webhook":{"type":"object","description":"Webhook configuration. Only present and required in case via = webhook","properties":{"callbackUrl":{"type":"string","format":"uri","maxLength":500,"example":"https://myserver.com/send/callback/here"}},"required":["callbackUrl"]},"kafka":{"type":"object","description":"Kafka configuration. Only present and required in case via = kafka","properties":{"topic":{"type":"string","example":"my-topic"},"brokers":{"type":"array","items":{"type":"string"},"example":["localhost:9092"]},"compressionCodec":{"type":"string","enum":["none","gzip","snappy","lz4"],"default":"gzip"},"securityProtocol":{"type":"string","enum":["PLAINTEXT","SASL_SSL"],"default":"PLAINTEXT"},"saslMechanism":{"type":"string","enum":["PLAIN","SCRAM-SHA-256","SCRAM-SHA-512"],"default":"PLAIN","nullable":true},"saslUsername":{"type":"string","nullable":true},"saslPassword":{"type":"string","nullable":true}},"required":["topic","brokers"]}},"required":["id","notifications","via"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"tags":["notifications"],"summary":"Notifications / Unsubscribe","description":"Unsubscribe for a notification","operationId":"notificationsUnsubscribe","responses":{"204":{"description":"Webhook deleted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/admins/v1.0":{"get":{"operationId":"adminList","tags":["resource / admins"],"summary":"Admins / Listing","description":"Get a list of administrators.\n\nReturns administrators belonging to the same operator as the API token.\nResults are paginated using cursor-based pagination.\n","parameters":[{"in":"query","name":"filter","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["permissions"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","operatorId","email","name","roleId"],"properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the administrator"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"name":{"type":"string","description":"Display name of the administrator"},"externalSsoId":{"type":"string","description":"External SSO identifier from the identity provider (e.g., Azure AD object ID, Okta user ID).\nOnly present when the administrator has SSO authentication enabled. Omitted from response when not applicable.\n"},"partnerId":{"type":"integer","description":"Partner ID if the administrator is a partner admin.\nOnly present for partner admins, omitted for operator admins.\n"},"subOperatorId":{"type":"integer","description":"Sub-operator ID if admin belongs to a sub-operator.\nOmitted when not applicable.\n"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"Installation and maintenance company ID if admin belongs to an I&M company.\nOmitted when not applicable.\n"},"roleId":{"type":"integer","description":"Admin role ID"},"permissions":{"type":"array","items":{"type":"string"},"description":"List of permission names assigned to the administrator.\nOnly present when `?include[]=permissions` is specified.\n","example":["ChargePoints.view","ChargePoints.update","Sessions.view"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/admins/v1.0/{admin}":{"parameters":[{"in":"path","name":"admin","schema":{"type":"integer"},"required":true,"description":"Administrator ID"}],"get":{"operationId":"adminRead","tags":["resource / admins"],"summary":"Admin / Read","description":"Get administrator details by ID.\n\nReturns administrator information including organizational context (if applicable), role, and optionally permissions.\n\n**Admin types:**\nThe admin type can be determined by which optional ID field is present:\n- `partnerId` - Admin belongs to a partner organization\n- `subOperatorId` - Admin belongs to a sub-operator organization\n- `installationAndMaintenanceCompanyId` - Admin belongs to an I&M company\n- None of the above - Operator-level administrator\n\n**SSO field:**\nThe `externalSsoId` field is present when the administrator has SSO authentication enabled.\n\n**Permissions include:**\nUse `?include[]=permissions` to include the administrator's permissions in the response.\n","parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["permissions"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId","email","name","roleId"],"properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the administrator"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"name":{"type":"string","description":"Display name of the administrator"},"externalSsoId":{"type":"string","description":"External SSO identifier from the identity provider (e.g., Azure AD object ID, Okta user ID).\nOnly present when the administrator has SSO authentication enabled. Omitted from response when not applicable.\n"},"partnerId":{"type":"integer","description":"Partner ID if the administrator is a partner admin.\nOnly present for partner admins, omitted for operator admins.\n"},"subOperatorId":{"type":"integer","description":"Sub-operator ID if admin belongs to a sub-operator.\nOmitted when not applicable.\n"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"Installation and maintenance company ID if admin belongs to an I&M company.\nOmitted when not applicable.\n"},"roleId":{"type":"integer","description":"Admin role ID"},"permissions":{"type":"array","items":{"type":"string"},"description":"List of permission names assigned to the administrator.\nOnly present when `?include[]=permissions` is specified.\n","example":["ChargePoints.view","ChargePoints.update","Sessions.view"]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/admins/v1.0/{admin}/permissions":{"parameters":[{"in":"path","name":"admin","schema":{"type":"integer"},"required":true,"description":"Administrator ID"}],"get":{"operationId":"adminPermissions","tags":["resource / admins"],"summary":"Admin / Permissions","description":"Get administrator permissions.\n\nReturns a list of permission names assigned to the administrator.\nThis is an alternative to using `?include[]=permissions` on the admin read endpoint.\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"},"description":"List of permission names","example":["ChargePoints.view","ChargePoints.update","Sessions.view"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/authorizations/v1.0/{authorization}":{"get":{"operationId":"authorizationReadDeprecated","summary":"Authorization / Read","parameters":[{"in":"path","name":"authorization","description":"The authorization ID to fetch","schema":{"type":"string"},"required":true}],"deprecated":true,"tags":["resource / authorizations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/authorizations/v2.0":{"get":{"operationId":"authorizationsListing","tags":["resource / authorizations"],"summary":"Authorizations / Listing","deprecated":true,"description":"**Deprecated:** Use v2.1 endpoint instead. This endpoint does not distinguish between RFID and MAC address (Autocharge) authorizations - both return `id_tag` as the method.\n","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated before this datetime"},"status":{"type":"string","description":"Lists only authorizations with one of the following statuses: \"accepted\", \"rejected\", \"pending\""},"method":{"type":"string","description":"Lists only authorizations with one of the following methods: \"user_device\", \"id_tag\", \"mac_address\", \"admin\", \"plug_and_charge\", \"roaming\", \"payment_terminal\", \"plug_and_charge_iso15118\""},"partnerId":{"type":"integer","description":"Lists only authorizations of users who are associated to a particular partner"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"method":{"description":"The method used to authorize the charging session.\n- `user_device` - Authorization via mobile app or web portal\n- `id_tag` - Authorization via physical RFID card\n- `admin` - Manual authorization by admin user\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `roaming` - Authorization via roaming platform (OCPI/Hubject)\n- `payment_terminal` - Authorization via payment terminal\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","type":"string","enum":["user_device","id_tag","admin","plug_and_charge","roaming","payment_terminal","plug_and_charge_iso15118"]},"source":{"description":"In case roaming is set, the method can only be user_device or id_tag","type":"string","enum":["local","roaming"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected","pending"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true,"description":"The user that is authorized. For anonymous users this value is 0"},"idTagUid":{"type":"string","nullable":true,"description":"The UID of the Id Tag that created the authorization. It could be of an RFID card or MAC address."},"roaming":{"description":"Roaming information for authorizations from external EMSPs.\nPresent only when source is 'roaming'.\n\nNote: The platformRoleId field is conditionally included:\n- Always present for OCPI authorizations\n- May be absent for Hubject authorizations (only included when hubject_platform_role_id is set)\n","type":"object","nullable":true,"properties":{"platformId":{"description":"The roaming platform ID that gave the authorization","type":"integer"},"platformRoleId":{"description":"The ID of the roaming operator role (EMSP) that gave the authorization.\n\nConditional presence:\n- OCPI: Always present\n- Hubject: Only present when hubject_platform_role_id is set in the authorization\n","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionIds":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason","chargePointId","sessionIds"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/authorizations/v2.0/{authorization}":{"get":{"operationId":"authorizationRead","summary":"Authorization / Read","deprecated":true,"description":"**Deprecated:** Use v2.1 endpoint instead. This endpoint does not distinguish between RFID and MAC address (Autocharge) authorizations - both return `id_tag` as the method.\n","parameters":[{"in":"path","name":"authorization","description":"The authorization ID to fetch","schema":{"type":"string"},"required":true}],"tags":["resource / authorizations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"method":{"description":"The method used to authorize the charging session.\n- `user_device` - Authorization via mobile app or web portal\n- `id_tag` - Authorization via physical RFID card\n- `admin` - Manual authorization by admin user\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `roaming` - Authorization via roaming platform (OCPI/Hubject)\n- `payment_terminal` - Authorization via payment terminal\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","type":"string","enum":["user_device","id_tag","admin","plug_and_charge","roaming","payment_terminal","plug_and_charge_iso15118"]},"source":{"description":"In case roaming is set, the method can only be user_device or id_tag","type":"string","enum":["local","roaming"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected","pending"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true,"description":"The user that is authorized. For anonymous users this value is 0"},"idTagUid":{"type":"string","nullable":true,"description":"The UID of the Id Tag that created the authorization. It could be of an RFID card or MAC address."},"roaming":{"description":"Roaming information for authorizations from external EMSPs.\nPresent only when source is 'roaming'.\n\nNote: The platformRoleId field is conditionally included:\n- Always present for OCPI authorizations\n- May be absent for Hubject authorizations (only included when hubject_platform_role_id is set)\n","type":"object","nullable":true,"properties":{"platformId":{"description":"The roaming platform ID that gave the authorization","type":"integer"},"platformRoleId":{"description":"The ID of the roaming operator role (EMSP) that gave the authorization.\n\nConditional presence:\n- OCPI: Always present\n- Hubject: Only present when hubject_platform_role_id is set in the authorization\n","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionIds":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason","chargePointId","sessionIds"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/authorizations/v2.1":{"get":{"operationId":"authorizationsListingV2_1","tags":["resource / authorizations"],"summary":"Authorizations / Listing","description":"Get all authorizations","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated before this datetime"},"status":{"type":"string","description":"Lists only authorizations with one of the following statuses: \"accepted\", \"rejected\", \"pending\""},"method":{"type":"string","description":"Lists only authorizations with one of the following methods: \"user_device\", \"id_tag\", \"mac_address\", \"admin\", \"plug_and_charge\", \"roaming\", \"payment_terminal\", \"plug_and_charge_iso15118\""},"partnerId":{"type":"integer","description":"Lists only authorizations of users who are associated to a particular partner"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"description":"The method used to authorize the charging session.\n- `user_device` - Authorization via mobile app or web portal\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `admin` - Manual authorization by admin user\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `roaming` - Authorization via roaming platform (OCPI/Hubject)\n- `payment_terminal` - Authorization via payment terminal\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","type":"string","enum":["user_device","id_tag","mac_address","admin","plug_and_charge","roaming","payment_terminal","plug_and_charge_iso15118"]},"source":{"description":"The origin of the authorization request.\n- `local` - Authorization initiated directly on this platform (via mobile app, RFID card, MAC address, admin, or payment terminal)\n- `roaming` - Authorization received from a roaming platform (OCPI/Hubject). When source is roaming, method can only be user_device or id_tag.\n","type":"string","enum":["local","roaming"]},"createdAt":{"type":"string","format":"date-time"},"status":{"description":"The status of the authorization request.\n- `accepted` - Authorization was approved and the user can start charging\n- `rejected` - Authorization was denied and the user cannot charge\n- `pending` - Authorization is awaiting approval or validation\n","type":"string","enum":["accepted","rejected","pending"]},"rejectionReason":{"type":"string","description":"The reason for rejecting the authorization. Only present when status is rejected."},"userId":{"type":"integer","description":"The user that is authorized. For anonymous users this value is 0"},"idTagUid":{"type":"string","description":"The UID of the Id Tag that created the authorization. It could be of an RFID card or MAC address."},"roaming":{"description":"Roaming information for authorizations from external EMSPs.\nPresent only when source is 'roaming'.\n\nNote: The platformRoleId field is conditionally included:\n- Always present for OCPI authorizations\n- May be absent for Hubject authorizations (only included when hubject_platform_role_id is set)\n","type":"object","properties":{"platformId":{"description":"The roaming platform ID that gave the authorization","type":"integer"},"platformRoleId":{"description":"The ID of the roaming operator role (EMSP) that gave the authorization.\n\nConditional presence:\n- OCPI: Always present\n- Hubject: Only present when hubject_platform_role_id is set in the authorization\n","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}},"required":["platformId","platformRole","reference","client"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionIds":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","userId","idTagUid","sessionIds","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/authorizations/v2.1/{authorization}":{"get":{"operationId":"authorizationReadV2_1","summary":"Authorization / Read","parameters":[{"in":"path","name":"authorization","description":"The authorization ID to fetch","schema":{"type":"string"},"required":true}],"tags":["resource / authorizations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"description":"The method used to authorize the charging session.\n- `user_device` - Authorization via mobile app or web portal\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `admin` - Manual authorization by admin user\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `roaming` - Authorization via roaming platform (OCPI/Hubject)\n- `payment_terminal` - Authorization via payment terminal\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","type":"string","enum":["user_device","id_tag","mac_address","admin","plug_and_charge","roaming","payment_terminal","plug_and_charge_iso15118"]},"source":{"description":"The origin of the authorization request.\n- `local` - Authorization initiated directly on this platform (via mobile app, RFID card, MAC address, admin, or payment terminal)\n- `roaming` - Authorization received from a roaming platform (OCPI/Hubject). When source is roaming, method can only be user_device or id_tag.\n","type":"string","enum":["local","roaming"]},"createdAt":{"type":"string","format":"date-time"},"status":{"description":"The status of the authorization request.\n- `accepted` - Authorization was approved and the user can start charging\n- `rejected` - Authorization was denied and the user cannot charge\n- `pending` - Authorization is awaiting approval or validation\n","type":"string","enum":["accepted","rejected","pending"]},"rejectionReason":{"type":"string","description":"The reason for rejecting the authorization. Only present when status is rejected."},"userId":{"type":"integer","description":"The user that is authorized. For anonymous users this value is 0"},"idTagUid":{"type":"string","description":"The UID of the Id Tag that created the authorization. It could be of an RFID card or MAC address."},"roaming":{"description":"Roaming information for authorizations from external EMSPs.\nPresent only when source is 'roaming'.\n\nNote: The platformRoleId field is conditionally included:\n- Always present for OCPI authorizations\n- May be absent for Hubject authorizations (only included when hubject_platform_role_id is set)\n","type":"object","properties":{"platformId":{"description":"The roaming platform ID that gave the authorization","type":"integer"},"platformRoleId":{"description":"The ID of the roaming operator role (EMSP) that gave the authorization.\n\nConditional presence:\n- OCPI: Always present\n- Hubject: Only present when hubject_platform_role_id is set in the authorization\n","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}},"required":["platformId","platformRole","reference","client"]},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"sessionIds":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","userId","idTagUid","sessionIds","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/booking-requests/v1.0":{"get":{"operationId":"bookingRequestsListing","tags":["resource / booking requests"],"summary":"Booking Requests / Listing","description":"Get all booking requests","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected"],"description":"Filter by booking request status"},"userId":{"type":"integer","description":"Filter by user ID"},"locationId":{"type":"integer","description":"Filter by location ID"},"startAfter":{"type":"string","format":"date-time","description":"Filter requests with start time after this date"},"startBefore":{"type":"string","format":"date-time","description":"Filter requests with start time before this date"},"endAfter":{"type":"string","format":"date-time","description":"Filter requests with end time after this date"},"endBefore":{"type":"string","format":"date-time","description":"Filter requests with end time before this date"},"createdAfter":{"type":"string","format":"date-time","description":"Filter requests that were created after this date"},"createdBefore":{"type":"string","format":"date-time","description":"Filter requests that were created before this date"},"externalId":{"type":"string","description":"Filter by external identifier from roaming partner (e.g., OCPI request_id)","example":"OCPI-REQ-12345"}}},"description":"Filter options for booking requests"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"title":"Create Booking Request Response","description":"Response schema for create booking request","allOf":[{"title":"Create Booking Base","description":"Base properties for create booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["create"],"description":"Type of booking request - must be \"create\""},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"locationId":{"type":"integer","description":"ID of the target location"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"End time of the booking"},"evseId":{"type":"integer","description":"Specific EVSE ID to book.\n\nResponse behavior: Only present when a specific EVSE was requested. Omitted when EVSE selection was based on criteria or left to the system.\n"},"evseCriteria":{"type":"object","description":"Criteria for automatic EVSE selection based on technical requirements. Ignored when evseId is explicitly provided.\n\nResponse behavior: Only present when EVSE criteria were specified in the request. Omitted when evseId was provided or no criteria were specified.\n","properties":{"currentType":{"type":"string","allOf":[{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"}],"nullable":true,"description":"Required current type (AC or DC). Omitted in response when not specified."},"minPower":{"type":"number","description":"Minimum power requirement in kW. Omitted in response when not specified."},"maxPower":{"type":"number","description":"Maximum power requirement in kW. Omitted in response when not specified."},"connectorType":{"type":"string","allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"}],"nullable":true,"description":"Required connector type. Omitted in response when not specified."}}},"parkingSpaceCriteria":{"type":"object","description":"Parking space criteria for selecting EVSE with suitable parking.\n\nResponse behavior: This property is only included in the response when parking criteria were specified in the request. If no criteria were provided, this property is omitted entirely.\n","properties":{"vehicleWeightKg":{"type":"integer","description":"Vehicle weight in kilograms. Omitted in response when not specified.","minimum":1},"vehicleHeightCm":{"type":"integer","description":"Vehicle height in centimeters. Omitted in response when not specified.","minimum":1},"vehicleLengthCm":{"type":"integer","description":"Vehicle length in centimeters. Omitted in response when not specified.","minimum":1},"vehicleWidthCm":{"type":"integer","description":"Vehicle width in centimeters. Omitted in response when not specified.","minimum":1},"vehicleType":{"type":"string","allOf":[{"type":"string","enum":["two_and_three_wheel_vehicles_and_quadricycles","passenger_vehicles","passenger_vehicles_with_trailer","light_duty_vans","heavy_duty_tractor_units_without_trailer","heavy_duty_trucks_without_articulation_point","heavy_duty_trucks_with_trailer_attached","buses_or_motor_coaches"],"description":"Type of vehicle that can use the parking space:\n- **two_and_three_wheel_vehicles_and_quadricycles**: Motorcycles, scooters, and similar\n- **passenger_vehicles**: Standard cars\n- **passenger_vehicles_with_trailer**: Cars with trailers attached\n- **light_duty_vans**: Small commercial vans\n- **heavy_duty_tractor_units_without_trailer**: Heavy trucks without trailer\n- **heavy_duty_trucks_without_articulation_point**: Heavy trucks without articulation\n- **heavy_duty_trucks_with_trailer_attached**: Heavy trucks with trailer\n- **buses_or_motor_coaches**: Buses and coaches\n"}],"nullable":true,"description":"Required vehicle type. Omitted in response when not specified."},"driveThroughRequired":{"type":"boolean","description":"Whether parking space must support drive-through charging. Omitted in response when not specified."},"refrigerationOutletRequired":{"type":"boolean","description":"Whether parking space must have refrigeration outlet. Omitted in response when not specified."},"dangerousGoodsAllowed":{"type":"boolean","description":"Whether parking space must allow dangerous goods vehicles. Omitted in response when not specified."}}}},"required":["type","userId","locationId","startAt","endAt"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"},"bookingId":{"type":"integer","description":"ID of the created booking.\n\nResponse behavior: Only present when status is \"approved\". Omitted for \"pending\" and \"rejected\" requests.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Update Booking Request Response","description":"Response schema for update booking request","allOf":[{"title":"Update Booking Base","description":"Base properties for update booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["update"],"description":"Type of booking request - must be \"update\""},"bookingId":{"type":"integer","description":"ID of the target booking to update"},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Updated start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Updated end time of the booking"}},"required":["type","bookingId"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Cancel Booking Request","allOf":[{"title":"Cancel Booking","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["cancel"],"description":"Type of booking request - must be \"cancel\""},"bookingId":{"type":"integer","description":"ID of the target booking to cancel"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"}},"required":["type","bookingId"]}]},{"type":"object","required":["id","status","createdAt","lastUpdatedAt"]}]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"bookingRequestCreate","tags":["resource / booking requests"],"summary":"Booking Request / Create","description":"Create a new booking request. If you want to find the available slots for a given location use the Actions / Location / Check Booking Availability","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"title":"Create Booking Request Input","description":"Input schema for creating a booking request","allOf":[{"title":"Create Booking Base","description":"Base properties for create booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["create"],"description":"Type of booking request - must be \"create\""},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"locationId":{"type":"integer","description":"ID of the target location"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"End time of the booking"},"evseId":{"type":"integer","description":"Specific EVSE ID to book.\n\nResponse behavior: Only present when a specific EVSE was requested. Omitted when EVSE selection was based on criteria or left to the system.\n"},"evseCriteria":{"type":"object","description":"Criteria for automatic EVSE selection based on technical requirements. Ignored when evseId is explicitly provided.\n\nResponse behavior: Only present when EVSE criteria were specified in the request. Omitted when evseId was provided or no criteria were specified.\n","properties":{"currentType":{"type":"string","allOf":[{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"}],"nullable":true,"description":"Required current type (AC or DC). Omitted in response when not specified."},"minPower":{"type":"number","description":"Minimum power requirement in kW. Omitted in response when not specified."},"maxPower":{"type":"number","description":"Maximum power requirement in kW. Omitted in response when not specified."},"connectorType":{"type":"string","allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"}],"nullable":true,"description":"Required connector type. Omitted in response when not specified."}}},"parkingSpaceCriteria":{"type":"object","description":"Parking space criteria for selecting EVSE with suitable parking.\n\nResponse behavior: This property is only included in the response when parking criteria were specified in the request. If no criteria were provided, this property is omitted entirely.\n","properties":{"vehicleWeightKg":{"type":"integer","description":"Vehicle weight in kilograms. Omitted in response when not specified.","minimum":1},"vehicleHeightCm":{"type":"integer","description":"Vehicle height in centimeters. Omitted in response when not specified.","minimum":1},"vehicleLengthCm":{"type":"integer","description":"Vehicle length in centimeters. Omitted in response when not specified.","minimum":1},"vehicleWidthCm":{"type":"integer","description":"Vehicle width in centimeters. Omitted in response when not specified.","minimum":1},"vehicleType":{"type":"string","allOf":[{"type":"string","enum":["two_and_three_wheel_vehicles_and_quadricycles","passenger_vehicles","passenger_vehicles_with_trailer","light_duty_vans","heavy_duty_tractor_units_without_trailer","heavy_duty_trucks_without_articulation_point","heavy_duty_trucks_with_trailer_attached","buses_or_motor_coaches"],"description":"Type of vehicle that can use the parking space:\n- **two_and_three_wheel_vehicles_and_quadricycles**: Motorcycles, scooters, and similar\n- **passenger_vehicles**: Standard cars\n- **passenger_vehicles_with_trailer**: Cars with trailers attached\n- **light_duty_vans**: Small commercial vans\n- **heavy_duty_tractor_units_without_trailer**: Heavy trucks without trailer\n- **heavy_duty_trucks_without_articulation_point**: Heavy trucks without articulation\n- **heavy_duty_trucks_with_trailer_attached**: Heavy trucks with trailer\n- **buses_or_motor_coaches**: Buses and coaches\n"}],"nullable":true,"description":"Required vehicle type. Omitted in response when not specified."},"driveThroughRequired":{"type":"boolean","description":"Whether parking space must support drive-through charging. Omitted in response when not specified."},"refrigerationOutletRequired":{"type":"boolean","description":"Whether parking space must have refrigeration outlet. Omitted in response when not specified."},"dangerousGoodsAllowed":{"type":"boolean","description":"Whether parking space must allow dangerous goods vehicles. Omitted in response when not specified."}}}},"required":["type","userId","locationId","startAt","endAt"]}]},{"type":"object","properties":{"authorizedTokenIds":{"type":"array","items":{"type":"integer"},"description":"Array of OCPI token IDs that are authorized for this booking. Multiple tokens allow flexibility for roaming users who may have multiple valid authentication methods (e.g., RFID card and mobile app token). When omitted, the booking will not have specific token authorization."}}}]},{"title":"Update Booking Request Input","description":"Input schema for updating a booking request","allOf":[{"title":"Update Booking Base","description":"Base properties for update booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["update"],"description":"Type of booking request - must be \"update\""},"bookingId":{"type":"integer","description":"ID of the target booking to update"},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Updated start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Updated end time of the booking"}},"required":["type","bookingId"]}]},{"type":"object","properties":{"authorizedTokenIds":{"type":"array","items":{"type":"integer"},"description":"Array of OCPI token IDs that are authorized for this booking. Multiple tokens allow flexibility for roaming users who may have multiple valid authentication methods (e.g., RFID card and mobile app token). When omitted, the booking will not have specific token authorization."}}}]},{"title":"Cancel Booking","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["cancel"],"description":"Type of booking request - must be \"cancel\""},"bookingId":{"type":"integer","description":"ID of the target booking to cancel"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"}},"required":["type","bookingId"]}]}]}}}},"responses":{"201":{"description":"Booking request created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"title":"Create Booking Request Response","description":"Response schema for create booking request","allOf":[{"title":"Create Booking Base","description":"Base properties for create booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["create"],"description":"Type of booking request - must be \"create\""},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"locationId":{"type":"integer","description":"ID of the target location"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"End time of the booking"},"evseId":{"type":"integer","description":"Specific EVSE ID to book.\n\nResponse behavior: Only present when a specific EVSE was requested. Omitted when EVSE selection was based on criteria or left to the system.\n"},"evseCriteria":{"type":"object","description":"Criteria for automatic EVSE selection based on technical requirements. Ignored when evseId is explicitly provided.\n\nResponse behavior: Only present when EVSE criteria were specified in the request. Omitted when evseId was provided or no criteria were specified.\n","properties":{"currentType":{"type":"string","allOf":[{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"}],"nullable":true,"description":"Required current type (AC or DC). Omitted in response when not specified."},"minPower":{"type":"number","description":"Minimum power requirement in kW. Omitted in response when not specified."},"maxPower":{"type":"number","description":"Maximum power requirement in kW. Omitted in response when not specified."},"connectorType":{"type":"string","allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"}],"nullable":true,"description":"Required connector type. Omitted in response when not specified."}}},"parkingSpaceCriteria":{"type":"object","description":"Parking space criteria for selecting EVSE with suitable parking.\n\nResponse behavior: This property is only included in the response when parking criteria were specified in the request. If no criteria were provided, this property is omitted entirely.\n","properties":{"vehicleWeightKg":{"type":"integer","description":"Vehicle weight in kilograms. Omitted in response when not specified.","minimum":1},"vehicleHeightCm":{"type":"integer","description":"Vehicle height in centimeters. Omitted in response when not specified.","minimum":1},"vehicleLengthCm":{"type":"integer","description":"Vehicle length in centimeters. Omitted in response when not specified.","minimum":1},"vehicleWidthCm":{"type":"integer","description":"Vehicle width in centimeters. Omitted in response when not specified.","minimum":1},"vehicleType":{"type":"string","allOf":[{"type":"string","enum":["two_and_three_wheel_vehicles_and_quadricycles","passenger_vehicles","passenger_vehicles_with_trailer","light_duty_vans","heavy_duty_tractor_units_without_trailer","heavy_duty_trucks_without_articulation_point","heavy_duty_trucks_with_trailer_attached","buses_or_motor_coaches"],"description":"Type of vehicle that can use the parking space:\n- **two_and_three_wheel_vehicles_and_quadricycles**: Motorcycles, scooters, and similar\n- **passenger_vehicles**: Standard cars\n- **passenger_vehicles_with_trailer**: Cars with trailers attached\n- **light_duty_vans**: Small commercial vans\n- **heavy_duty_tractor_units_without_trailer**: Heavy trucks without trailer\n- **heavy_duty_trucks_without_articulation_point**: Heavy trucks without articulation\n- **heavy_duty_trucks_with_trailer_attached**: Heavy trucks with trailer\n- **buses_or_motor_coaches**: Buses and coaches\n"}],"nullable":true,"description":"Required vehicle type. Omitted in response when not specified."},"driveThroughRequired":{"type":"boolean","description":"Whether parking space must support drive-through charging. Omitted in response when not specified."},"refrigerationOutletRequired":{"type":"boolean","description":"Whether parking space must have refrigeration outlet. Omitted in response when not specified."},"dangerousGoodsAllowed":{"type":"boolean","description":"Whether parking space must allow dangerous goods vehicles. Omitted in response when not specified."}}}},"required":["type","userId","locationId","startAt","endAt"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"},"bookingId":{"type":"integer","description":"ID of the created booking.\n\nResponse behavior: Only present when status is \"approved\". Omitted for \"pending\" and \"rejected\" requests.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Update Booking Request Response","description":"Response schema for update booking request","allOf":[{"title":"Update Booking Base","description":"Base properties for update booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["update"],"description":"Type of booking request - must be \"update\""},"bookingId":{"type":"integer","description":"ID of the target booking to update"},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Updated start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Updated end time of the booking"}},"required":["type","bookingId"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Cancel Booking Request","allOf":[{"title":"Cancel Booking","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["cancel"],"description":"Type of booking request - must be \"cancel\""},"bookingId":{"type":"integer","description":"ID of the target booking to cancel"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"}},"required":["type","bookingId"]}]},{"type":"object","required":["id","status","createdAt","lastUpdatedAt"]}]}]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/booking-requests/v1.0/{bookingRequest}":{"parameters":[{"in":"path","name":"bookingRequest","required":true,"schema":{"type":"integer"},"description":"Booking request ID"}],"get":{"operationId":"bookingRequestRead","tags":["resource / booking requests"],"summary":"Booking Request / Read","description":"Get information for a booking request by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"title":"Create Booking Request Response","description":"Response schema for create booking request","allOf":[{"title":"Create Booking Base","description":"Base properties for create booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["create"],"description":"Type of booking request - must be \"create\""},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"locationId":{"type":"integer","description":"ID of the target location"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"End time of the booking"},"evseId":{"type":"integer","description":"Specific EVSE ID to book.\n\nResponse behavior: Only present when a specific EVSE was requested. Omitted when EVSE selection was based on criteria or left to the system.\n"},"evseCriteria":{"type":"object","description":"Criteria for automatic EVSE selection based on technical requirements. Ignored when evseId is explicitly provided.\n\nResponse behavior: Only present when EVSE criteria were specified in the request. Omitted when evseId was provided or no criteria were specified.\n","properties":{"currentType":{"type":"string","allOf":[{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"}],"nullable":true,"description":"Required current type (AC or DC). Omitted in response when not specified."},"minPower":{"type":"number","description":"Minimum power requirement in kW. Omitted in response when not specified."},"maxPower":{"type":"number","description":"Maximum power requirement in kW. Omitted in response when not specified."},"connectorType":{"type":"string","allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"}],"nullable":true,"description":"Required connector type. Omitted in response when not specified."}}},"parkingSpaceCriteria":{"type":"object","description":"Parking space criteria for selecting EVSE with suitable parking.\n\nResponse behavior: This property is only included in the response when parking criteria were specified in the request. If no criteria were provided, this property is omitted entirely.\n","properties":{"vehicleWeightKg":{"type":"integer","description":"Vehicle weight in kilograms. Omitted in response when not specified.","minimum":1},"vehicleHeightCm":{"type":"integer","description":"Vehicle height in centimeters. Omitted in response when not specified.","minimum":1},"vehicleLengthCm":{"type":"integer","description":"Vehicle length in centimeters. Omitted in response when not specified.","minimum":1},"vehicleWidthCm":{"type":"integer","description":"Vehicle width in centimeters. Omitted in response when not specified.","minimum":1},"vehicleType":{"type":"string","allOf":[{"type":"string","enum":["two_and_three_wheel_vehicles_and_quadricycles","passenger_vehicles","passenger_vehicles_with_trailer","light_duty_vans","heavy_duty_tractor_units_without_trailer","heavy_duty_trucks_without_articulation_point","heavy_duty_trucks_with_trailer_attached","buses_or_motor_coaches"],"description":"Type of vehicle that can use the parking space:\n- **two_and_three_wheel_vehicles_and_quadricycles**: Motorcycles, scooters, and similar\n- **passenger_vehicles**: Standard cars\n- **passenger_vehicles_with_trailer**: Cars with trailers attached\n- **light_duty_vans**: Small commercial vans\n- **heavy_duty_tractor_units_without_trailer**: Heavy trucks without trailer\n- **heavy_duty_trucks_without_articulation_point**: Heavy trucks without articulation\n- **heavy_duty_trucks_with_trailer_attached**: Heavy trucks with trailer\n- **buses_or_motor_coaches**: Buses and coaches\n"}],"nullable":true,"description":"Required vehicle type. Omitted in response when not specified."},"driveThroughRequired":{"type":"boolean","description":"Whether parking space must support drive-through charging. Omitted in response when not specified."},"refrigerationOutletRequired":{"type":"boolean","description":"Whether parking space must have refrigeration outlet. Omitted in response when not specified."},"dangerousGoodsAllowed":{"type":"boolean","description":"Whether parking space must allow dangerous goods vehicles. Omitted in response when not specified."}}}},"required":["type","userId","locationId","startAt","endAt"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"},"bookingId":{"type":"integer","description":"ID of the created booking.\n\nResponse behavior: Only present when status is \"approved\". Omitted for \"pending\" and \"rejected\" requests.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Update Booking Request Response","description":"Response schema for update booking request","allOf":[{"title":"Update Booking Base","description":"Base properties for update booking request (shared between input and response)","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["update"],"description":"Type of booking request - must be \"update\""},"bookingId":{"type":"integer","description":"ID of the target booking to update"},"userId":{"type":"integer","description":"ID of the user for whom the booking is made"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"},"startAt":{"type":"string","format":"date-time","description":"Updated start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Updated end time of the booking"}},"required":["type","bookingId"]}]},{"type":"object","properties":{"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios.\n\nResponse behavior: Only present when the booking has authorized tokens. Omitted when no tokens are associated with the booking.\n"}},"required":["id","status","createdAt","lastUpdatedAt"]}]},{"title":"Cancel Booking Request","allOf":[{"title":"Cancel Booking","allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"type":{"type":"string","description":"Type of booking request"},"status":{"type":"string","enum":["pending","approved","rejected"],"readOnly":true,"description":"Status of booking request:\n- **pending**: Request is awaiting processing\n- **approved**: Request has been approved\n- **rejected**: Request has been rejected\n"},"rejectionReason":{"type":"string","description":"Human-readable reason for rejection.\n\nResponse behavior: Only present when status is \"rejected\". Omitted for \"pending\" and \"approved\" requests.\n","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}}},{"type":"object","properties":{"type":{"type":"string","enum":["cancel"],"description":"Type of booking request - must be \"cancel\""},"bookingId":{"type":"integer","description":"ID of the target booking to cancel"},"externalId":{"type":"string","maxLength":255,"description":"External identifier from roaming partner (e.g., OCPI request_id).\n\nResponse behavior: Only present when an external ID was provided. Omitted when not specified.\n"}},"required":["type","bookingId"]}]},{"type":"object","required":["id","status","createdAt","lastUpdatedAt"]}]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/bookings/v1.0":{"get":{"operationId":"bookingsListing","tags":["resource / bookings"],"summary":"Bookings / Listing","description":"Get all bookings","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","reserved","completed","cancelled","no-show","failed"],"description":"Filter by booking status"},"userId":{"type":"integer","description":"Filter by user ID"},"locationId":{"type":"integer","description":"Filter by location ID"},"startAfter":{"type":"string","format":"date-time","description":"Filter bookings with start time after this date"},"startBefore":{"type":"string","format":"date-time","description":"Filter bookings with start time before this date"},"endAfter":{"type":"string","format":"date-time","description":"Filter bookings with end time after this date"},"endBefore":{"type":"string","format":"date-time","description":"Filter bookings with end time before this date"}}},"description":"Filter options for bookings"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Booking information for listing views (without detailed EVSE information)","properties":{"id":{"type":"integer","description":"System-generated unique identifier"},"userId":{"type":"integer","description":"ID of the user associated with the booking"},"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios. Only present when the booking has authorized tokens (omitted when empty or null)."},"locationId":{"type":"integer","description":"ID of the location for the booking"},"startAt":{"type":"string","format":"date-time","description":"Confirmed start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Confirmed end time of the booking"},"status":{"type":"string","enum":["accepted","reserved","completed","cancelled","no-show","failed"],"description":"Status of booking:\n- **accepted**: Booking has been approved and confirmed\n- **reserved**: EVSE has been reserved via OCPP ReserveNow command\n- **completed**: User has started a charging session and fulfilled the booking\n- **cancelled**: Booking has been cancelled by user or system\n- **no-show**: User failed to start session within the no-show timeout period\n- **failed**: System failed to reserve the EVSE after multiple attempts\n"},"sessionId":{"type":"integer","description":"ID of the charging session that fulfilled the booking"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods copied from the location at booking creation time. This snapshot preserves the access methods that were available when the booking was made, even if the location's access methods change later.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods were configured at the location during booking creation (null in database)\n- When access methods were configured but the array was empty, returns an empty array `[]`\n"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","locationId","startAt","endAt","status","createdAt","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/bookings/v1.0/{booking}":{"parameters":[{"in":"path","name":"booking","required":true,"schema":{"type":"integer"},"description":"Booking ID"},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["bookedEvses"]},"description":"Include additional information in the response. The following options are available:\n- **bookedEvses**: Include information about the EVSEs linked to this booking\n"}}],"get":{"operationId":"bookingRead","tags":["resource / bookings"],"summary":"Booking / Read","description":"Get information for a booking by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","description":"Booking information for listing views (without detailed EVSE information)","properties":{"id":{"type":"integer","description":"System-generated unique identifier"},"userId":{"type":"integer","description":"ID of the user associated with the booking"},"authorizedTokens":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Internal token ID for use in API requests (e.g., authorizedTokenIds in create/update)"},"uid":{"type":"string","description":"Unique identifier of the OCPI token"},"type":{"type":"string","description":"Type of token (e.g., RFID, APP_USER)"},"contractId":{"type":"string","description":"Contract identifier associated with the token (optional)"},"emspCountryCode":{"type":"string","description":"Country code of the eMSP (electric Mobility Service Provider) that issued the token"},"emspPartyId":{"type":"string","description":"Party identifier of the eMSP (electric Mobility Service Provider) that issued the token"}},"required":["id","uid","type","emspCountryCode","emspPartyId"]},"description":"Array of OCPI token details authorized for this booking, including eMSP information for roaming scenarios. Only present when the booking has authorized tokens (omitted when empty or null)."},"locationId":{"type":"integer","description":"ID of the location for the booking"},"startAt":{"type":"string","format":"date-time","description":"Confirmed start time of the booking"},"endAt":{"type":"string","format":"date-time","description":"Confirmed end time of the booking"},"status":{"type":"string","enum":["accepted","reserved","completed","cancelled","no-show","failed"],"description":"Status of booking:\n- **accepted**: Booking has been approved and confirmed\n- **reserved**: EVSE has been reserved via OCPP ReserveNow command\n- **completed**: User has started a charging session and fulfilled the booking\n- **cancelled**: Booking has been cancelled by user or system\n- **no-show**: User failed to start session within the no-show timeout period\n- **failed**: System failed to reserve the EVSE after multiple attempts\n"},"sessionId":{"type":"integer","description":"ID of the charging session that fulfilled the booking"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods copied from the location at booking creation time. This snapshot preserves the access methods that were available when the booking was made, even if the location's access methods change later.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods were configured at the location during booking creation (null in database)\n- When access methods were configured but the array was empty, returns an empty array `[]`\n"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","locationId","startAt","endAt","status","createdAt","lastUpdatedAt"]},{"type":"object","description":"Detailed booking information that can include EVSE details when requested","properties":{"bookedEvses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"EVSE ID"}},"required":["id"]},"description":"Array of EVSE objects linked to this booking (up to 3). Only included when include[]=bookedEvses is specified"}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/cdrs/v2.0":{"get":{"operationId":"cdrsListing","summary":"CDRs / Listing","description":"Get all CDRs","tags":["resource / cdrs"],"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"startDateTimeFrom":{"type":"string","format":"date-time","description":"Filters CDRs by the start time, selecting records with a start time equal to or later than the specified value. The date-time should be formatted according to ISO 8601 standards."},"startDateTimeTo":{"type":"string","format":"date-time","description":"Filters CDRs by the start time, selecting records with a start time equal to or earlier than the specified value. This filter helps in selecting records up to a certain start time. The provided date-time should be in ISO 8601 format."},"endDateTimeFrom":{"type":"string","format":"date-time","description":"This filter retrieves CDRs with an end time equal to or later than the specified value. It helps filter records based on the end of a timeframe, ensuring that only records ending after a certain point are selected. The date-time format should adhere to ISO 8601 standards."},"endDateTimeTo":{"type":"string","format":"date-time","description":"Filters CDRs based on their end time, selecting those with an end time equal to or earlier than the provided value. This filter limits the selection to records that conclude by a certain time. The date-time should be in ISO 8601 format."},"operatorId":{"type":"string","format":"integer","nullable":true,"description":"Only CDRs associated with a specific Roaming Operator/Provider."},"platformId":{"type":"string","format":"integer","description":"Only CDRs linked to a specific Roaming Platform."},"roamingId":{"type":"string","description":"Filters CDRs by the unique identifier within the CPO's platform (and sub-operator platforms)."},"credit":{"type":"string","format":"boolean","description":"Only Credit CDRs."},"isLocal":{"type":"string","format":"boolean","description":"If true only CDRs that we issued as CPO will be returned, if false only CDRs that we received as eMSP will be returned."},"receivedAfter":{"type":"string","format":"date-time","description":"Filters CDRs by the time when received from CPOs, selecting records with a received time equal to or later than the specified value. This filter helps in selecting received records from a certain time and works for non local CDRs. The provided date-time should be following the ISO 8601 standard."},"receivedBefore":{"type":"string","format":"date-time","description":"Filters CDRs by the time when received from CPOs, selecting records with a start time equal to or earlier than the specified value. This filter helps in selecting received records up to a certain time and works for non local CDRs. The provided date-time should be following the ISO 8601 standard."},"sentAfter":{"type":"string","format":"date-time","description":"Filters CDRs by the time when sent to EMSP, selecting records with a sent time equal to or later than the specified value. This filter helps in selecting sent records from a certain time and works for local CDRs. The provided date-time should be following the ISO 8601 standard."},"sentBefore":{"type":"string","format":"date-time","description":"Filters CDRs by the time when sent to EMSP, selecting records with a sent time equal to or earlier than the specified value. This filter helps in selecting sent records from a certain time and works for local CDRs. The provided date-time should be following the ISO 8601 standard."},"deliveryResponse":{"type":"string","enum":["success","fail"],"description":"Filters CDRs that were sent to the EMSP based on their delivery status.\nUse this dropdown filter to retrieve CDRs with one of the following statuses:\n  - `success`: CDRs successfully **accepted** by the EMSP.\n  - `fail`: CDRs that were **rejected** (not accepted) by the EMSP.\n"},"sessionId":{"type":"string","format":"integer","description":"Filter CDRs by internal session ID to retrieve all CDRs linked to a specific session."}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["externalAppData"]}},"description":"Include additional information in the response. The following options are available:<br> - `externalAppData`: Include external application data in the response\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer"},"platformId":{"type":"integer"},"protocolType":{"type":"string","enum":["OCPI","Hubject"]},"sessionId":{"type":"string","description":"Unique ID of the session for which this CDR is sent."},"roamingSessionId":{"type":"string","description":"External roaming counterparty session ID. This is the session reference from the roaming partner, as opposed to sessionId which is the internal AMPECO session ID."},"receivedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"startTime":{"type":"string","format":"datetime","description":"Start timestamp of the charging session, or in-case of a reservation (before the start of a session) the start of the reservation."},"endTime":{"type":"string","format":"datetime","description":"The timestamp when the session was completed/finished, charging might have finished before the session ends, for example - EV is full, but parking cost also has to be paid."},"ocpiData":{"description":"When the CDR is based on the OCPI protocols. The field descriptions follow the specifications in the different protocols (OCPI 2.1.1, OCPI 2.2). As the data is served in the API without any, based on the protocol validation, the response can contain differences compared to the protocol description.","type":"object","properties":{"version":{"type":"string","enum":["2.1.1","2.2"]},"signedData":{"type":"object","description":"Signed data that belongs to this charging Session. Omitted if protocol differs from OCPI 2.2 or object is empty."},"cdrToken":{"type":"object","description":"Token used to start this charging session, includes all the relevant information to identify the unique token. Omitted if protocol differs from OCPI 2.2."},"authMethod":{"type":"string","description":"Method used for authentication."},"authorizationReference":{"type":"string","description":"Reference to the authorization given by the eMSP. Omitted if protocol differs from OCPI 2.2 or OCPI 2.1.1 Gireve"},"cdrLocation":{"type":"object","description":"Location where the charging session took place, including only the relevant EVSE and Connector. The properties in the object differ according to the version and source of protocol OCPI 2.1.1, OCPI 2.2"},"chargingPeriods":{"type":"array","items":{"type":"object"},"description":"List of Charging Periods that make up this charging session. A session consists of 1 or more periods, where each period has a different relevant Tariff. The properties in the object differ according to the version and source of protocol (OCPI 2.1.1 or OCPI 2.2)"},"currency":{"type":"string","description":"ISO 4217 code of the currency used for this session."},"totalCost":{"type":"number","description":"The total cost excl VAT of the session in the specified currency."},"totalFixedCost":{"type":"number","description":"Total sum excl VAT of all the fixed costs in the specified currency, except fixed price components of parking and reservation."},"totalEnergy":{"type":"number","description":"Total energy charged, in kWh."},"totalEnergyCost":{"type":"number","description":"Total sum excl VAT of all the cost of all the energy used, in the specified currency."},"totalTime":{"type":"number","description":"Total duration of the charging session (including the duration of charging and not charging), in hours."},"totalTimeCost":{"type":"number","description":"Total sum of all the cost related to duration of charging during this transaction, in the specified currency."},"totalParkingTime":{"type":"number","description":"Total duration of the charging session where the EV was not charging (no energy was transferred between EVSE and EV), in hours."},"totalParkingCost":{"type":"number","description":"Total sum excl VAT of all the cost related to parking of this transaction, including fixed price components, in the specified currency."},"invoiceReferenceId":{"type":"string","description":"This field can be used to reference an invoice, that will later be send for this CDR."}},"required":["version"]},"oicpData":{"description":"When the CDR is based on the OICP protocols. The field descriptions follow the specifications in the different protocols (Hubject 2.2, Hubject 2.3). As the data is served in the API without any, based on the protocol validation, the response can contain differences compared to the protocol description.","type":"object","properties":{"sessionId":{"type":"string"},"version":{"type":"string","enum":["2.2","2.3"]},"cpoPartnerSessionId":{"type":"string","nullable":true},"empPartnerSessionId":{"type":"string","nullable":true},"partnerProductId":{"type":"string","nullable":true},"evseId":{"type":"string"},"identification":{"type":"object","properties":{"plugAndChargeIdentification":{"type":"object","properties":{"evcoId":{"type":"string"}},"required":["evcoId"]},"qrCodeIdentification":{"type":"object","properties":{"evcoID":{"type":"string"},"hashedPin":{"type":"object","properties":{"value":{"type":"string"},"function":{"type":"string"},"legacyHashedData":{"type":"object","properties":{"function":{"type":"string"},"salt":{"type":"string"},"value":{"type":"string"}},"required":["function"]},"pin":{"type":"string"}},"required":["value","function"]},"pin":{"type":"string"}},"required":["evcoID"]},"rfidIdentification":{"type":"object","properties":{"uid":{"type":"string"},"evcoId":{"type":"string"},"rfid":{"type":"string"},"printedNumber":{"type":"string"},"expiryDate":{"type":"string","format":"date-time"}},"required":["uid","rfid"]},"rfidMifareFamilyIdentification":{"type":"object","properties":{"uid":{"type":"string"}},"required":["uid"]},"remoteIdentification":{"type":"object","properties":{"evcoId":{"type":"string"}},"required":["evcoId"]}},"description":"Authentication data details. The data structure differs depending on the authentication technology"},"chargingStart":{"type":"string","format":"date-time","nullable":true,"description":"The date and time at which the charging process started. The field is required in version 2.3 and optional in version 2.2"},"chargingEnd":{"type":"string","format":"date-time","nullable":true,"description":"The date and time at which the charging process stopped. The field is required in version 2.3 and optional in version 2.2."},"sessionStart":{"type":"string","format":"date-time"},"sessionEnd":{"type":"string","format":"date-time"},"meterValueStart":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true},"meterValueEnd":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true},"meterValueInBetween":{"type":"string","nullable":true,"description":"JSON-serialized string containing intermediate meter values recorded during the charging session (in kWh). The value is a JSON-encoded object with the structure {\"meterValues\":[number]}, matching the Hubject OICP 2.3 MeterValueInBetweenDTO format. In the JSON response, the value appears as an escaped string, e.g. \"{\\\"meterValues\\\":[10.123,20.456]}\""},"consumedEnergy":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true,"description":"The difference between MeterValueEnd and MeterValueStart in kWh. The field is required in version 2.3 and optional in version 2.2."},"signedMeteringValues":{"description":"Omitted if protocol differs from version 2.3","type":"array","items":{"type":"object","properties":{"signedMeteringValue":{"type":"string","nullable":true},"meteringStatus":{"type":"string","nullable":true,"enum":["Start","Progress","End"]}}},"nullable":true},"meteringSignature":{"description":"Omitted if protocol differs from version 2.2","type":"string","nullable":true},"calibrationLawVerificationInfo":{"description":"Omitted if protocol differs from version 2.3","nullable":true,"type":"object","properties":{"calibrationLawCertificateId":{"type":"string","nullable":true},"publicKey":{"type":"string","nullable":true},"meteringSignatureUrl":{"type":"string","nullable":true},"meteringSignatureEncodingFormat":{"type":"string","nullable":true},"signedMeteringValuesVerificationInstruction":{"type":"string","nullable":true}}},"hubOperatorId":{"type":"string","nullable":true},"hubProviderId":{"type":"string","nullable":true},"operatorId":{"type":"string","nullable":true}},"required":["sessionId","version","evseId","identification","sessionStart","sessionEnd"]},"roamingId":{"type":"string","description":"Uniquely identifies the CDR within the CPO’s platform (and sub operator platforms)."},"credit":{"type":"boolean","description":"Indicates whether it is a credit CDR."},"isLocal":{"type":"boolean","description":"True indicates that we issued the CDR in the role of CPO, false indicates that we received the CDR as an eMSP."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"sentAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"deliveryResponse":{"type":"string","enum":["success","fail"],"description":"Status of the response from the EMSP. Presented only for local CDRs."},"externalAppData":{"description":"Used to hold any external application data related to the CDR.","type":"object","nullable":true,"additionalProperties":true}},"required":["id","operatorId","platformId","protocolType","startTime","isLocal","endTime","receivedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/cdrs/v2.0/{cdr}":{"get":{"operationId":"cdrRead","summary":"CDR / Read","tags":["resource / cdrs"],"description":"Get a CDR","parameters":[{"in":"path","name":"cdr","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["externalAppData"]}},"description":"Include additional information in the response. The following options are available:<br> - `externalAppData`: Include external application data in the response\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer"},"platformId":{"type":"integer"},"protocolType":{"type":"string","enum":["OCPI","Hubject"]},"sessionId":{"type":"string","description":"Unique ID of the session for which this CDR is sent."},"roamingSessionId":{"type":"string","description":"External roaming counterparty session ID. This is the session reference from the roaming partner, as opposed to sessionId which is the internal AMPECO session ID."},"receivedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"startTime":{"type":"string","format":"datetime","description":"Start timestamp of the charging session, or in-case of a reservation (before the start of a session) the start of the reservation."},"endTime":{"type":"string","format":"datetime","description":"The timestamp when the session was completed/finished, charging might have finished before the session ends, for example - EV is full, but parking cost also has to be paid."},"ocpiData":{"description":"When the CDR is based on the OCPI protocols. The field descriptions follow the specifications in the different protocols (OCPI 2.1.1, OCPI 2.2). As the data is served in the API without any, based on the protocol validation, the response can contain differences compared to the protocol description.","type":"object","properties":{"version":{"type":"string","enum":["2.1.1","2.2"]},"signedData":{"type":"object","description":"Signed data that belongs to this charging Session. Omitted if protocol differs from OCPI 2.2 or object is empty."},"cdrToken":{"type":"object","description":"Token used to start this charging session, includes all the relevant information to identify the unique token. Omitted if protocol differs from OCPI 2.2."},"authMethod":{"type":"string","description":"Method used for authentication."},"authorizationReference":{"type":"string","description":"Reference to the authorization given by the eMSP. Omitted if protocol differs from OCPI 2.2 or OCPI 2.1.1 Gireve"},"cdrLocation":{"type":"object","description":"Location where the charging session took place, including only the relevant EVSE and Connector. The properties in the object differ according to the version and source of protocol OCPI 2.1.1, OCPI 2.2"},"chargingPeriods":{"type":"array","items":{"type":"object"},"description":"List of Charging Periods that make up this charging session. A session consists of 1 or more periods, where each period has a different relevant Tariff. The properties in the object differ according to the version and source of protocol (OCPI 2.1.1 or OCPI 2.2)"},"currency":{"type":"string","description":"ISO 4217 code of the currency used for this session."},"totalCost":{"type":"number","description":"The total cost excl VAT of the session in the specified currency."},"totalFixedCost":{"type":"number","description":"Total sum excl VAT of all the fixed costs in the specified currency, except fixed price components of parking and reservation."},"totalEnergy":{"type":"number","description":"Total energy charged, in kWh."},"totalEnergyCost":{"type":"number","description":"Total sum excl VAT of all the cost of all the energy used, in the specified currency."},"totalTime":{"type":"number","description":"Total duration of the charging session (including the duration of charging and not charging), in hours."},"totalTimeCost":{"type":"number","description":"Total sum of all the cost related to duration of charging during this transaction, in the specified currency."},"totalParkingTime":{"type":"number","description":"Total duration of the charging session where the EV was not charging (no energy was transferred between EVSE and EV), in hours."},"totalParkingCost":{"type":"number","description":"Total sum excl VAT of all the cost related to parking of this transaction, including fixed price components, in the specified currency."},"invoiceReferenceId":{"type":"string","description":"This field can be used to reference an invoice, that will later be send for this CDR."}},"required":["version"]},"oicpData":{"description":"When the CDR is based on the OICP protocols. The field descriptions follow the specifications in the different protocols (Hubject 2.2, Hubject 2.3). As the data is served in the API without any, based on the protocol validation, the response can contain differences compared to the protocol description.","type":"object","properties":{"sessionId":{"type":"string"},"version":{"type":"string","enum":["2.2","2.3"]},"cpoPartnerSessionId":{"type":"string","nullable":true},"empPartnerSessionId":{"type":"string","nullable":true},"partnerProductId":{"type":"string","nullable":true},"evseId":{"type":"string"},"identification":{"type":"object","properties":{"plugAndChargeIdentification":{"type":"object","properties":{"evcoId":{"type":"string"}},"required":["evcoId"]},"qrCodeIdentification":{"type":"object","properties":{"evcoID":{"type":"string"},"hashedPin":{"type":"object","properties":{"value":{"type":"string"},"function":{"type":"string"},"legacyHashedData":{"type":"object","properties":{"function":{"type":"string"},"salt":{"type":"string"},"value":{"type":"string"}},"required":["function"]},"pin":{"type":"string"}},"required":["value","function"]},"pin":{"type":"string"}},"required":["evcoID"]},"rfidIdentification":{"type":"object","properties":{"uid":{"type":"string"},"evcoId":{"type":"string"},"rfid":{"type":"string"},"printedNumber":{"type":"string"},"expiryDate":{"type":"string","format":"date-time"}},"required":["uid","rfid"]},"rfidMifareFamilyIdentification":{"type":"object","properties":{"uid":{"type":"string"}},"required":["uid"]},"remoteIdentification":{"type":"object","properties":{"evcoId":{"type":"string"}},"required":["evcoId"]}},"description":"Authentication data details. The data structure differs depending on the authentication technology"},"chargingStart":{"type":"string","format":"date-time","nullable":true,"description":"The date and time at which the charging process started. The field is required in version 2.3 and optional in version 2.2"},"chargingEnd":{"type":"string","format":"date-time","nullable":true,"description":"The date and time at which the charging process stopped. The field is required in version 2.3 and optional in version 2.2."},"sessionStart":{"type":"string","format":"date-time"},"sessionEnd":{"type":"string","format":"date-time"},"meterValueStart":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true},"meterValueEnd":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true},"meterValueInBetween":{"type":"string","nullable":true,"description":"JSON-serialized string containing intermediate meter values recorded during the charging session (in kWh). The value is a JSON-encoded object with the structure {\"meterValues\":[number]}, matching the Hubject OICP 2.3 MeterValueInBetweenDTO format. In the JSON response, the value appears as an escaped string, e.g. \"{\\\"meterValues\\\":[10.123,20.456]}\""},"consumedEnergy":{"type":"number","format":"decimal","multipleOf":0.001,"nullable":true,"description":"The difference between MeterValueEnd and MeterValueStart in kWh. The field is required in version 2.3 and optional in version 2.2."},"signedMeteringValues":{"description":"Omitted if protocol differs from version 2.3","type":"array","items":{"type":"object","properties":{"signedMeteringValue":{"type":"string","nullable":true},"meteringStatus":{"type":"string","nullable":true,"enum":["Start","Progress","End"]}}},"nullable":true},"meteringSignature":{"description":"Omitted if protocol differs from version 2.2","type":"string","nullable":true},"calibrationLawVerificationInfo":{"description":"Omitted if protocol differs from version 2.3","nullable":true,"type":"object","properties":{"calibrationLawCertificateId":{"type":"string","nullable":true},"publicKey":{"type":"string","nullable":true},"meteringSignatureUrl":{"type":"string","nullable":true},"meteringSignatureEncodingFormat":{"type":"string","nullable":true},"signedMeteringValuesVerificationInstruction":{"type":"string","nullable":true}}},"hubOperatorId":{"type":"string","nullable":true},"hubProviderId":{"type":"string","nullable":true},"operatorId":{"type":"string","nullable":true}},"required":["sessionId","version","evseId","identification","sessionStart","sessionEnd"]},"roamingId":{"type":"string","description":"Uniquely identifies the CDR within the CPO’s platform (and sub operator platforms)."},"credit":{"type":"boolean","description":"Indicates whether it is a credit CDR."},"isLocal":{"type":"boolean","description":"True indicates that we issued the CDR in the role of CPO, false indicates that we received the CDR as an eMSP."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"sentAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"deliveryResponse":{"type":"string","enum":["success","fail"],"description":"Status of the response from the EMSP. Presented only for local CDRs."},"externalAppData":{"description":"Used to hold any external application data related to the CDR.","type":"object","nullable":true,"additionalProperties":true}},"required":["id","operatorId","platformId","protocolType","startTime","isLocal","endTime","receivedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-downtime-periods/v1.0":{"get":{"operationId":"chargePointDowntimePeriodsListing","tags":["resource / charge point downtime periods"],"summary":"Charge Point Downtime Periods / Listing","description":"Get all Charge Point Downtime Periods","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"chargePointId":{"type":"integer"},"locationId":{"type":"integer"},"entryMode":{"type":"string","enum":["manual","automatic"]},"type":{"type":"string","enum":["downtime","exempt"]},"startedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Resources with `startedAt >= startedAfter`."},"stoppedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Resources with `stoppedAt <= stoppedBefore`."},"durationLessThan":{"type":"integer","description":"Resources with duration in minutes less than or equal given value."},"durationGreaterThan":{"type":"integer","description":"Resources with duration in minutes greater than or equal given value."},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["statusLog"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chargePointId":{"type":"integer","description":"Id of the charge point for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointDowntimePeriodCreate","summary":"Charge Point Downtime Period / Create","description":"Create Manual Exempt Charge Point Downtime Period","tags":["resource / charge point downtime periods"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"chargePointId":{"type":"integer"},"noticeId":{"type":"integer","description":"Allowed only notice with `type = exempt`!"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"}},"required":["chargePointId","noticeId","startedAt","endedAt"]}}}},"responses":{"201":{"description":"Charge Point Downtime Period created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"chargePointId":{"type":"integer","description":"Id of the charge point for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-downtime-periods/v1.0/{chargePointDowntimePeriod}":{"parameters":[{"name":"chargePointDowntimePeriod","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointDowntimePeriodRead","summary":"Charge Point Downtime Period / Read","description":"Get Charge Point Downtime Period","tags":["resource / charge point downtime periods"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["statusLog"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"chargePointId":{"type":"integer","description":"Id of the charge point for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointDowntimePeriodUpdate","summary":"Charge Point Downtime Period / Update","description":"Update Charge Point Downtime Period","tags":["resource / charge point downtime periods"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"noticeId":{"type":"integer","nullable":true},"startedAt":{"type":"string","format":"date-time","description":"Allowed only for downtime period with `type = exempt AND entryMode = manual`"},"endedAt":{"type":"string","format":"date-time","description":"Allowed only for downtime period with `type = exempt AND entryMode = manual`"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"chargePointId":{"type":"integer","description":"Id of the charge point for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the charge point changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointDowntimePeriodDelete","summary":"Charge Point Downtime Period / Delete","description":"Delete Manual Created Charge Point Downtime Period","tags":["resource / charge point downtime periods"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-downtime-periods/v1.0/{chargePointDowntimePeriod}/status-log":{"parameters":[{"name":"chargePointDowntimePeriod","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointDowntimePeriodStatusLog","summary":"Charge Point Downtime Period / Status Log","description":"Get the StatusLog entry that triggered this downtime period","tags":["resource / charge point downtime periods"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-models/v1.0":{"get":{"operationId":"chargePointModelsListing","tags":["resource / charge point models"],"summary":"Charge Point Models / Listing","description":"Get all Charge Point Models","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"vendorId":{"type":"string"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointModelCreate","tags":["resource / charge point models"],"summary":"Charge Point Model / Create","description":"Create new Charge Point Model","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"vendorId":{"type":"integer"},"userManual":{"type":"string","format":"uri","description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface."}},"required":["name","vendorId"]}}}},"responses":{"201":{"description":"Charge Point Model created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-models/v1.0/{modelId}":{"parameters":[{"name":"modelId","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointModelRead","summary":"Charge Point Model / Read","description":"Get a Charge Point Model","tags":["resource / charge point models"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointModelUpdate","summary":"Charge Point Model / Update","description":"Charge Point Model","tags":["resource / charge point models"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"vendorId":{"type":"integer"},"userManual":{"type":"string","format":"uri","description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface."}}}}}},"responses":{"200":{"description":"Charge Point Model updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointModelDelete","summary":"Charge Point Model / Delete","description":"Delete a Charge Point Model","tags":["resource / charge point models"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-vendors/v1.0":{"get":{"operationId":"chargePointVendorsListing","tags":["resource / charge point vendors"],"summary":"Charge Point Vendors / Listing","description":"Get all Charge Point Vendors","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointVendorCreate","tags":["resource / charge point vendors"],"summary":"Charge Point Vendor / Create","description":"Create new Charge Point Vendor","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}},"responses":{"201":{"description":"Charge Point Vendor created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-point-vendors/v1.0/{vendorId}":{"parameters":[{"name":"vendorId","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointVendorRead","summary":"Charge Point Vendor / Read","description":"Get a Charge Point Vendor","tags":["resource / charge point vendors"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointVendorUpdate","summary":"Charge Point Vendor / Update","description":"Charge Point Vendor","tags":["resource / charge point vendors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Charge Point Vendor updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointVendorDelete","summary":"Charge Point Vendor / Delete","description":"Delete a Charge Point Vendor","tags":["resource / charge point vendors"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v1.0":{"get":{"operationId":"chargePointsListingDeprecated","deprecated":true,"tags":["resource / charge points"],"summary":"Charge Points / Listing","description":"Get all charge points","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"desiredSecurityProfileStatus":{"type":"string","enum":["applied","pending","rejected"],"description":"The value of the desiredSecurityProfileStatus by which to filter"},"evseId":{"type":"string","format":"integer","description":"Only list charge point on a certain EVSE"},"evsePhysicalReference":{"type":"string","description":"Only list charge point on a certain EVSE, identified by the physicalReference"},"physicalReference":{"type":"string","description":"Only list charge point, identified by id"},"chargePointNetworkId":{"type":"string","description":"Only list charge point, identified by the NetworkId"},"chargePointBootNotificationSerialNumber":{"type":"string","description":"Only list charge points with last boot notification that had this charge_point_serial_number"},"userId":{"type":"string","format":"integer","description":"Only list charge points owned by a certain user"},"partnerId":{"type":"string","format":"integer","description":"Only list charge points owned by a certain partner"},"accessType":{"type":"string","enum":["public","private","personal"],"description":"Only list charge points with this access type"},"subOperatorId":{"type":"string","format":"integer","description":"Only list charge point for a given subOperator"},"roaming":{"type":"string","format":"boolean","description":"When true - returns only roaming charge points. When false - returns only local charge points."},"name":{"type":"string","description":"Exact charge point name"},"locationId":{"type":"string","format":"integer","description":"Only list charge points assigned to the location"},"managedByOperator":{"type":"string","format":"boolean","description":"Only list charge points that are managed by operator or not"},"externalId":{"type":"string","description":"Only list charge point, identified by the External ID of the charge point"},"evseExternalId":{"type":"string","description":"Only list charge point, identified by the External ID of the EVSE"},"tag":{"type":"string","description":"Only list charge points that have the specific tag assigned."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointCreateDeprecated","deprecated":true,"tags":["resource / charge points"],"summary":"Charge Point / Create","description":"Create new charge point","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"templateId":{"type":"integer"},"evses":{"type":"object","additionalProperties":{"type":"object","description":"An associative array with the EVSE network id being used as a key","properties":{"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"physicalReference":{"type":"string"},"maxAmperage":{"type":"number"},"status":{"type":"string","enum":["active","disabled","out of order"]}}}},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"}},"required":["templateId","name","networkId","status"]}]},"examples":{"from template":{"description":"Create CP from template","value":{"templateId":12,"name":"Example","networkId":"123456","status":"active","locationId":1}}}}}},"responses":{"201":{"description":"Charge point created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v1.0/{chargePoint}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointReadDeprecated","deprecated":true,"summary":"Charge Point / Read","description":"Get a charge point","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointUpdateDeprecated","deprecated":true,"summary":"Charge Point / Update","description":"Update a charge point","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"evses":{"type":"object","additionalProperties":{"type":"object","description":"An associative array with the EVSE network id being used as a key","properties":{"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"physicalReference":{"type":"string"},"maxAmperage":{"type":"number"},"status":{"type":"string","enum":["active","disabled","out of order"]}}}},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"}}}]}}}},"responses":{"200":{"description":"Charge point updated successfully","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointDeleteDeprecated","deprecated":true,"summary":"Charge Point / Delete","description":"Delete a charge point","tags":["resource / charge points"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v1.0/{chargePoint}/configurations":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"get":{"operationId":"chargePointConfigurationsListingDeprecated","deprecated":true,"summary":"Charge Point / Configurations / Listing","description":"Get a charge point's all cached configurations","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"allOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]},"value":{"type":"string"},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v1.0/{chargePoint}/configurations/{key}":{"parameters":[{"in":"path","name":"key","required":true,"schema":{"anyOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]}},{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"get":{"operationId":"chargePointConfigurationReadDeprecated","deprecated":true,"summary":"Charge Point / Configuration / Read","description":"Get a charge point's cached configuration for a single key","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"key":{"allOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]},"value":{"type":"string"},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointConfigurationUpdateDeprecated","deprecated":true,"summary":"Charge Point / Configuration / Update","description":"Update a charge point's configuration. The configuration is applied directly to the charge point and you will get response code 406 in case the application fails","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string"}}}}}},"responses":{"200":{"description":"Updated"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"406":{"description":"The charge point rejected the setting or is not connected right now"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v1.0/{chargePoint}/status":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointStatusRead","summary":"Charge Point / Status / Read","description":"Get a charge point's status","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0":{"post":{"operationId":"chargePointCreate","tags":["resource / charge points"],"summary":"Charge Point / Create","description":"Create new charge point","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","description":"Required for personal charge points. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point. </br>\n`enabled` - the charge point is fully operative.\n`disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n`demo` - acts as a simulator so different setups could be tested. </br>\n`out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead.\n","deprecated":true},"externalId":{"type":"string"},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string"},"ip":{"type":"string","description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}},"required":["currentProfile"]},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer"},"contractId":{"type":"integer"},"contactId":{"deprecated":true,"type":"integer"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"description":"**Deprecated**: Use top-level `noticeId` and `notice` fields instead. The notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"sharingCode":{"type":"string"},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date"},"manufacturedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date"},"ocppConnectedChargePointId":{"type":"integer","description":"The ID of the charge point that is connected to the backend and used by this charge point for OCPP communication. Required when the `communicationMode` is `via_ocpp_connected_charge_point`.\n"}}},{"type":"object","properties":{"communicationMode":{"writeOnly":true,"type":"string","enum":["none","direct_ocpp","via_ocpp_connected_charge_point"],"description":"This property is required!</br>\nIt obsoletes the `managedByOperator` property, which can still be used by older implementations, so neither is marked as required.</br>\nIndicates how the charge point communicates with the backend.</br>\n`none` - the charge point is not connected to the backend. The charge point can be displayed to users with instructions how to use it. An informational notice can be associated with the charge point using the `noticeId` property.</br>\n`direct_ocpp` - the charge point is connected through OCPP and is actively being managed by the backend.</br>\n`via_ocpp_connected_charge_point` - the charge point is a satellite of another charge point which communicates through OCPP and is identified by `ocppConnectedChargePointId`. The charge point is not actively managed, but inherits most of its properties from its master charge point. When creating this type of charge point, the following fields are not required and will not be used:</br>\n  - electricityRateId</br>\n  - networkType</br>\n  - capabilities</br>\n  - network</br>\n  - autoStartWithoutAuthorization</br>\n  - disableAutoStartEmulation</br>\n  - security</br>\n  - modelId</br>\n  - enableAutoFaultRecovery</br>\n  - utilityId</br>\n  - usesRenewableEnergy</br>\n  - enabledRandomisedDelay</br>\n  - integratedAt</br>\n  - manufacturedAt</br>\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","nullable":true,"description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","nullable":true,"description":"Optional. The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator.\n\nValidation:\n- If provided and not null, must reference a valid I&M company ID that belongs to the operator\n- Invalid or cross-operator I&M company IDs return validation error: \"The selected installation and maintenance company ID is invalid\"\n- Can be set to null to remove I&M company assignment\n","example":456},"countryStationId":{"type":"string","nullable":true,"maxLength":255,"description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany).\n","example":"BNA0001"}}}],"required":["name","type","status"]}}}},"responses":{"201":{"description":"Charge point created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming charge points.","example":1},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","description":"Required for personal charge points. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point. </br>\n`enabled` - the charge point is fully operative.\n`disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n`demo` - acts as a simulator so different setups could be tested. </br>\n`out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead.\n","deprecated":true},"externalId":{"type":"string"},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string"},"ip":{"type":"string","description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}},"required":["currentProfile"]},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer"},"contractId":{"type":"integer"},"contactId":{"deprecated":true,"type":"integer"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"description":"**Deprecated**: Use top-level `noticeId` and `notice` fields instead. The notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"firstContactAt":{"type":"string","format":"date","readOnly":true,"description":"ISO 8601 formatted date"},"roamingOperatorId":{"type":"integer","readOnly":true,"description":"When null, the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided"},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"readOnly":true,"nullable":true},"displayTariffAndCosts":{"readOnly":true,"type":"boolean","description":"The charge point has a display and messages could be shown to the user."},"lastBootNotification":{"type":"object","nullable":true,"readOnly":true,"properties":{"model":{"type":"string"},"vendor":{"type":"string"},"chargeBoxSerialNumber":{"type":"string","nullable":true},"chargePointSerialNumber":{"type":"string","nullable":true},"firmwareVersion":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meterSerialNumber":{"type":"string","nullable":true},"meterType":{"type":"string","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"networkStatus":{"type":"string","readOnly":true,"description":"Connection status of the charge point </br>\n`never_connected` - the charge point has not yet connected to the CPMS </br>\n`available` - connected to the CPMS </br>\n`temporarily_unavailable` - disconnected a short while ago </br>\n`long-term_unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores. </br>\n","enum":["never_connected","available","temporarily_unavailable","long-term_unavailable"]},"lastNetworkStatusUpdateAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"The datetime when the charge point's network status was last updated. This corresponds to the \"Latest heartbeat at\" value shown in the CPMS Hardware section. Returns null when the charge point has never connected."},"hardwareStatus":{"type":"string","readOnly":true,"enum":["available","unavailable","faulted"],"description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past."},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is `faulted`"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"sharingCode":{"type":"string"},"sharingBillingRule":{"type":"string","readOnly":true,"description":"Billing rule for guest charging sessions on shared personal charge points.\nThis property is only present when the charge point is of type `personal` and has a sharing code set.\n- `owner_covers_guests`: The charge point owner pays for guest charging sessions.\n- `guests_pay_directly`: Guests pay for their own charging sessions.\n- `enforce_subscription`: Both owner and guest must have active subscriptions to charge.\n","enum":["owner_covers_guests","guests_pay_directly","enforce_subscription"]},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"notice":{"readOnly":true,"description":"If `include[]=notice` is provided with the request, the notice associated with this charge point will be provided here.\nThe notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\nTo associate a notice with a charge point, use the `noticeId` field.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"manufacturedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"ocppConnectedChargePointId":{"type":"integer","description":"The ID of the charge point that is connected to the backend and used by this charge point for OCPP communication. Required when the `communicationMode` is `via_ocpp_connected_charge_point`.\n"},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this charge point will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}}},{"type":"object","properties":{"communicationMode":{"readOnly":true,"type":"string","enum":["none","direct_ocpp","via_ocpp_connected_charge_point","roaming"],"description":"Indicates how the charge point communicates with the backend.</br>\n`none` - the charge point is not connected to the backend. The charge point can be displayed to users with instructions how to use it.</br>\n`direct_ocpp` - the charge point is connected through OCPP and is actively being managed by the backend.</br>\n`via_ocpp_connected_charge_point` - the charge point is a satellite of another charge point which communicates through OCPP and is identified by `ocppConnectedChargePointId`. The charge point is not actively managed, but inherits most of its properties from its master charge point.</br>\n`roaming` - the charge point was received from a roaming partner. The charge point can be controlled as much as the roaming connection allows.\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points. When not set, this property is omitted from the response.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator. When not set, this property is omitted from the response.\n","example":456},"countryStationId":{"type":"string","description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany). When not set, this property is omitted from the response.\n","example":"BNA0001"}}}],"required":["id","operatorId","name","type","status","network","security","networkStatus","autoStartWithoutAuthorization","disableAutoStartEmulation","monitoringEnabled","autoRecoveryEnabled","enableAutoFaultRecovery","communicationMode","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"chargePointsListing","summary":"Charge Points / Listing","description":"Get all charge points","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"desiredSecurityProfileStatus":{"type":"string","description":"The value of the desiredSecurityProfileStatus by which to filter","enum":["applied","pending","rejected"]},"evsePhysicalReference":{"type":"string","description":"Only list charge point, identified by evse identifier"},"networkId":{"type":"string","description":"Only list charge point, identified by the NetworkId"},"bootNotificationSerialNumber":{"type":"string","description":"Only list charge points with last boot notification that had this charge_point_serial_number"},"modelId":{"type":"string","description":"Only list charge points, identified by modelId"},"vendorId":{"type":"string","description":"Only list charge points, identified by vendorId"},"userId":{"type":"string","description":"Only list charge points owned by a certain user"},"partnerId":{"type":"string","description":"Only list charge points owned by a certain partner"},"partnerContractId":{"type":"integer","description":"Only list charge points associated with a certain partner contract"},"type":{"type":"string","enum":["public","private","personal"],"description":"Only list charge points with this access type"},"subOperatorId":{"type":"string","description":"Only list charge point for a given subOperator"},"roaming":{"type":"string","description":"When true - returns only roaming charge points. When false - returns only local charge points."},"roamingOperatorIds":{"type":"array","items":{"type":"integer"},"description":"Filter charge points by one or more roaming operator IDs. Returns charge points that belong to any of the specified roaming operators."},"name":{"type":"string","description":"Exact charge point name"},"locationId":{"type":"string","description":"Only list charge points assigned to the location"},"circuitId":{"type":"integer","description":"Only list charge points added to a certain DLM Circuit"},"chargingZoneId":{"type":"string","description":"Only list charge point for a given Charging Zone"},"managedByOperator":{"type":"string","description":"Only list charge points that are managed by operator or not"},"externalId":{"type":"string","description":"Only list charge point, identified by the External ID of the charge point"},"utilityId":{"type":"integer"},"tag":{"type":"string","description":"Only list charge points that have the specific tag assigned."},"sharingCode":{"type":"string","description":"Only list personal charge point with certain sharing code."},"countryStationId":{"type":"string","description":"Only list charge points with this country station ID (exact match)"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only charge points created on and after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only charge points created on and before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"},"networkStatus":{"type":"string","description":"Filter by current network status of the charge point","enum":["available","temporarily_unavailable","long-term_unavailable","never_connected"]},"lastNetworkStatusUpdateAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only charge points whose network status was updated on or after this datetime"},"lastNetworkStatusUpdateBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only charge points whose network status was updated on or before this datetime"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["lastBootNotification","chargingProfile","smartCharging","smartChargingPreferences","personalSmartChargingPreferences","availablePersonalSmartChargingModes","notes"]}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming charge points.","example":1},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","description":"Required for personal charge points. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point. </br>\n`enabled` - the charge point is fully operative.\n`disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n`demo` - acts as a simulator so different setups could be tested. </br>\n`out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead.\n","deprecated":true},"externalId":{"type":"string"},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string"},"ip":{"type":"string","description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}},"required":["currentProfile"]},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer"},"contractId":{"type":"integer"},"contactId":{"deprecated":true,"type":"integer"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"description":"**Deprecated**: Use top-level `noticeId` and `notice` fields instead. The notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"firstContactAt":{"type":"string","format":"date","readOnly":true,"description":"ISO 8601 formatted date"},"roamingOperatorId":{"type":"integer","readOnly":true,"description":"When null, the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided"},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"readOnly":true,"nullable":true},"displayTariffAndCosts":{"readOnly":true,"type":"boolean","description":"The charge point has a display and messages could be shown to the user."},"lastBootNotification":{"type":"object","nullable":true,"readOnly":true,"properties":{"model":{"type":"string"},"vendor":{"type":"string"},"chargeBoxSerialNumber":{"type":"string","nullable":true},"chargePointSerialNumber":{"type":"string","nullable":true},"firmwareVersion":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meterSerialNumber":{"type":"string","nullable":true},"meterType":{"type":"string","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"networkStatus":{"type":"string","readOnly":true,"description":"Connection status of the charge point </br>\n`never_connected` - the charge point has not yet connected to the CPMS </br>\n`available` - connected to the CPMS </br>\n`temporarily_unavailable` - disconnected a short while ago </br>\n`long-term_unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores. </br>\n","enum":["never_connected","available","temporarily_unavailable","long-term_unavailable"]},"lastNetworkStatusUpdateAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"The datetime when the charge point's network status was last updated. This corresponds to the \"Latest heartbeat at\" value shown in the CPMS Hardware section. Returns null when the charge point has never connected."},"hardwareStatus":{"type":"string","readOnly":true,"enum":["available","unavailable","faulted"],"description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past."},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is `faulted`"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"sharingCode":{"type":"string"},"sharingBillingRule":{"type":"string","readOnly":true,"description":"Billing rule for guest charging sessions on shared personal charge points.\nThis property is only present when the charge point is of type `personal` and has a sharing code set.\n- `owner_covers_guests`: The charge point owner pays for guest charging sessions.\n- `guests_pay_directly`: Guests pay for their own charging sessions.\n- `enforce_subscription`: Both owner and guest must have active subscriptions to charge.\n","enum":["owner_covers_guests","guests_pay_directly","enforce_subscription"]},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"notice":{"readOnly":true,"description":"If `include[]=notice` is provided with the request, the notice associated with this charge point will be provided here.\nThe notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\nTo associate a notice with a charge point, use the `noticeId` field.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"manufacturedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"ocppConnectedChargePointId":{"type":"integer","description":"The ID of the charge point that is connected to the backend and used by this charge point for OCPP communication. Required when the `communicationMode` is `via_ocpp_connected_charge_point`.\n"},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this charge point will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}}},{"type":"object","properties":{"communicationMode":{"readOnly":true,"type":"string","enum":["none","direct_ocpp","via_ocpp_connected_charge_point","roaming"],"description":"Indicates how the charge point communicates with the backend.</br>\n`none` - the charge point is not connected to the backend. The charge point can be displayed to users with instructions how to use it.</br>\n`direct_ocpp` - the charge point is connected through OCPP and is actively being managed by the backend.</br>\n`via_ocpp_connected_charge_point` - the charge point is a satellite of another charge point which communicates through OCPP and is identified by `ocppConnectedChargePointId`. The charge point is not actively managed, but inherits most of its properties from its master charge point.</br>\n`roaming` - the charge point was received from a roaming partner. The charge point can be controlled as much as the roaming connection allows.\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points. When not set, this property is omitted from the response.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator. When not set, this property is omitted from the response.\n","example":456},"countryStationId":{"type":"string","description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany). When not set, this property is omitted from the response.\n","example":"BNA0001"}}}],"required":["id","operatorId","name","type","status","network","security","networkStatus","autoStartWithoutAuthorization","disableAutoStartEmulation","monitoringEnabled","autoRecoveryEnabled","enableAutoFaultRecovery","communicationMode","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["lastBootNotification","chargingProfile","smartCharging","smartChargingPreferences","personalSmartChargingPreferences","availablePersonalSmartChargingModes","notes"]}}}],"patch":{"operationId":"chargePointUpdate","summary":"Charge Point / Update","description":"Update a charge point","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","nullable":true,"description":"Required if `accessType` is `personal`. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","nullable":true,"description":"Required if `accessType` is `public` or `private`. NOT required if `accessType` is `personal`.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","nullable":true,"description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","nullable":true,"description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","nullable":true,"description":"The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator.\n\nValidation:\n- If provided and not null, must reference a valid I&M company ID that belongs to the operator\n- Invalid or cross-operator I&M company IDs return validation error: \"The selected installation and maintenance company ID is invalid\"\n- Can be set to null to remove I&M company assignment\n","example":456},"countryStationId":{"type":"string","nullable":true,"maxLength":255,"description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany).\n","example":"BNA0001"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead. The `communicationMode` can only be set when creating a charge point.\n","deprecated":true},"externalId":{"type":"string","nullable":true},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","nullable":true,"enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true,"description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","nullable":true,"description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}}},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The ID of the partner to assign to this charge point. When explicitly providing a partner ID (non-null value), a valid `contractId` is required. Set to null to remove the partner assignment.\n"},"contractId":{"type":"integer","nullable":true,"description":"The ID of the partner contract. Required when `partner.id` is explicitly provided in the request.\n"},"contactId":{"type":"integer","nullable":true,"deprecated":true,"description":"Deprecated. Use `contractId` instead. Required when `partner.id` is explicitly provided in the request.\n"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","nullable":true,"description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"readOnly":true,"description":"**Deprecated**: Use top-level `noticeId` field instead. Setting notice translations directly is no longer supported.\nThe notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","nullable":true,"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date"},"manufacturedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date"}}}}}},"responses":{"200":{"description":"Charge point updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming charge points.","example":1},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","description":"Required for personal charge points. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point. </br>\n`enabled` - the charge point is fully operative.\n`disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n`demo` - acts as a simulator so different setups could be tested. </br>\n`out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead.\n","deprecated":true},"externalId":{"type":"string"},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string"},"ip":{"type":"string","description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}},"required":["currentProfile"]},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer"},"contractId":{"type":"integer"},"contactId":{"deprecated":true,"type":"integer"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"description":"**Deprecated**: Use top-level `noticeId` and `notice` fields instead. The notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"firstContactAt":{"type":"string","format":"date","readOnly":true,"description":"ISO 8601 formatted date"},"roamingOperatorId":{"type":"integer","readOnly":true,"description":"When null, the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided"},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"readOnly":true,"nullable":true},"displayTariffAndCosts":{"readOnly":true,"type":"boolean","description":"The charge point has a display and messages could be shown to the user."},"lastBootNotification":{"type":"object","nullable":true,"readOnly":true,"properties":{"model":{"type":"string"},"vendor":{"type":"string"},"chargeBoxSerialNumber":{"type":"string","nullable":true},"chargePointSerialNumber":{"type":"string","nullable":true},"firmwareVersion":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meterSerialNumber":{"type":"string","nullable":true},"meterType":{"type":"string","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"networkStatus":{"type":"string","readOnly":true,"description":"Connection status of the charge point </br>\n`never_connected` - the charge point has not yet connected to the CPMS </br>\n`available` - connected to the CPMS </br>\n`temporarily_unavailable` - disconnected a short while ago </br>\n`long-term_unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores. </br>\n","enum":["never_connected","available","temporarily_unavailable","long-term_unavailable"]},"lastNetworkStatusUpdateAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"The datetime when the charge point's network status was last updated. This corresponds to the \"Latest heartbeat at\" value shown in the CPMS Hardware section. Returns null when the charge point has never connected."},"hardwareStatus":{"type":"string","readOnly":true,"enum":["available","unavailable","faulted"],"description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past."},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is `faulted`"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"sharingCode":{"type":"string"},"sharingBillingRule":{"type":"string","readOnly":true,"description":"Billing rule for guest charging sessions on shared personal charge points.\nThis property is only present when the charge point is of type `personal` and has a sharing code set.\n- `owner_covers_guests`: The charge point owner pays for guest charging sessions.\n- `guests_pay_directly`: Guests pay for their own charging sessions.\n- `enforce_subscription`: Both owner and guest must have active subscriptions to charge.\n","enum":["owner_covers_guests","guests_pay_directly","enforce_subscription"]},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"notice":{"readOnly":true,"description":"If `include[]=notice` is provided with the request, the notice associated with this charge point will be provided here.\nThe notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\nTo associate a notice with a charge point, use the `noticeId` field.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"manufacturedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"ocppConnectedChargePointId":{"type":"integer","description":"The ID of the charge point that is connected to the backend and used by this charge point for OCPP communication. Required when the `communicationMode` is `via_ocpp_connected_charge_point`.\n"},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this charge point will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}}},{"type":"object","properties":{"communicationMode":{"readOnly":true,"type":"string","enum":["none","direct_ocpp","via_ocpp_connected_charge_point","roaming"],"description":"Indicates how the charge point communicates with the backend.</br>\n`none` - the charge point is not connected to the backend. The charge point can be displayed to users with instructions how to use it.</br>\n`direct_ocpp` - the charge point is connected through OCPP and is actively being managed by the backend.</br>\n`via_ocpp_connected_charge_point` - the charge point is a satellite of another charge point which communicates through OCPP and is identified by `ocppConnectedChargePointId`. The charge point is not actively managed, but inherits most of its properties from its master charge point.</br>\n`roaming` - the charge point was received from a roaming partner. The charge point can be controlled as much as the roaming connection allows.\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points. When not set, this property is omitted from the response.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator. When not set, this property is omitted from the response.\n","example":456},"countryStationId":{"type":"string","description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany). When not set, this property is omitted from the response.\n","example":"BNA0001"}}}],"required":["id","operatorId","name","type","status","network","security","networkStatus","autoStartWithoutAuthorization","disableAutoStartEmulation","monitoringEnabled","autoRecoveryEnabled","enableAutoFaultRecovery","communicationMode","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"chargePointRead","summary":"Charge Point / Read","description":"Get a charge point","tags":["resource / charge points"],"responses":{"200":{"description":"Charge point returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming charge points.","example":1},"name":{"type":"string","maxLength":255},"type":{"type":"string","enum":["private","public","personal"],"description":"`public` - a charge point visible on the map to everybody </br>\n`private` - by default hidden from the map and for private usage only - company and their employees for example. The visibility of the charge point could be managed in partner object, with the different options for accessType. </br>\n`personal` - the charge point could have a single owner only. The owner is set when the user claims the charger or with Actions / Change Owner. </br>\n"},"pin":{"type":"string","description":"Required for personal charge points. The PIN should be provided in the mobile app when the charge point is claimed by a user. Should contain only numbers.\n"},"locationId":{"type":"integer","description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points.\n"},"chargingZoneId":{"type":"integer","nullable":true},"electricityRateId":{"type":"integer","description":"If there is Electricity rate set to the Charge point the electricity cost for each charging session would be tracked. Dynamic electricity rates could not be selected, only ones created in the resource / electricity-rate.\n"},"subscription":{"type":"object","description":"An active subscription could be required for personal (home) charge points in order to use the charge point.","properties":{"required":{"type":"boolean","description":"Only for personal charge points. Require an active subscription to use the charge point."},"planIds":{"description":"Only for personal charge points. List of subscription plans for any of which the user should have an active subscription, to be able to use the charge point.","type":"array","items":{"type":"integer"}}}},"networkType":{"type":"string","enum":["cellular","ethernet","wlan"]},"status":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point. </br>\n`enabled` - the charge point is fully operative.\n`disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n`demo` - acts as a simulator so different setups could be tested. </br>\n`out of order` - the charge point is visible and shared with users, but a charging session\n"},"managedByOperator":{"type":"boolean","default":true,"description":"This flag indicates whether the operator can actively manage the charge point. If the flag is set to `false` the charge point can still be shown to users, but they can't request to start a session on it.\n\nDeprecated. Please use `communicationMode` instead.\n","deprecated":true},"externalId":{"type":"string"},"network":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"OCPP Identifier"},"protocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"password":{"type":"string"},"ip":{"type":"string","description":"Required for ocpp 1.5 (SOAP)"},"port":{"type":"integer","description":"Required for ocpp 1.5 (SOAP)"}}},"capabilities":{"type":"array","items":{"type":"string","enum":["remote_start_stop_capable","meter_values","stop_transaction_on_ev_disconnect","disregard_the_heartbeats","display_messages"]},"description":"`remote_start_stop_capable` - whether Remote start/stop is possible for the Charge Point </br>\n`meter_values` - whether the Charge Point should send meter updates to the system </br>\n`stop_transaction_on_ev_disconnect` - for ongoing sessions, when the cable is unplugged this should stop the session and if it is returned back a new session would be created. </br>\n`disregard_the_heartbeats` - only for OCPP 1.5 SOAP. Network status by default is updated based on the heartbeat messages. When enabled, the Charge Point would be always treated as available and its network status would not depend on heartbeat messages. </br>\n`display_messages` - charger has a display and it is enabled to display messages. This capability is enabled automatically when the charger reports the corresponding configuration key. When creating a charge point, the capability is ignored as it is automatically detected on boot. </br>\n"},"autoStartWithoutAuthorization":{"type":"boolean","default":false,"description":"When enabled the system would allow charging sessions initiated </br>\nlocally by the charge point assuming it is setup to work in auto-start / </br>\nplug-and-charge mode. It would also automatically start a </br>\nsession with a remote start command if one is not already started by the charging stations a  </br>\nfew seconds after a Preparing status is detected indicating that a vehicle is connected.\n"},"disableAutoStartEmulation":{"type":"boolean","default":false,"description":"The Auto-start option above does 2 things: (1) it allows charging </br>\nsessions started by the charge point assuming that it may be set up locally </br>\nto auto-start charging when a vehicle is connected and (2) if the charging </br>\nstation doesnt start the session within a few seconds after the vehicles is </br>\nconnected the system sends a remote start command - which is to emulate auto-start </br>\ncharging. With this checkbox you can disable the emulation and rely </br>\nentirely on the charging station to auto-start the charging. </br>\n"},"security":{"type":"object","properties":{"desiredProfile":{"type":"integer","description":"The backend will try to set it 3 times at boot notification. If the charge point does not support it, the backend will use the highest security profile the charge point could use. </br>\nThe following security profiles are supported: </br>\n0: `No Authentication` </br>\n1: `Unsecured Trasport with Basic Authentication (Plain-back Authentication)` - It does not include authentication for the CSMS, or measures to set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a security profile with TLS. </br>\n2: `TLS with Basic Authentication (Encrypted Authentication)` - In the TLS with Basic Authentication profile, the communication channel is secured using Transport Layer Security (TLS). The CSMS authenticates itself using a TLS server certificate. The Charging Stations authenticate themselves using HTTP Basic Authentication. </br>\n3: `TLS with client-side certificates profile` </br>\n"},"currentProfile":{"type":"integer","readOnly":true,"description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledProfile":{"type":"integer","readOnly":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredProfileStatus":{"type":"string","readOnly":true,"enum":["applied","pending","rejected"],"description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point.\n"}},"required":["currentProfile"]},"modelId":{"type":"integer","nullable":true,"description":"The ID of the CP Model, if one is associated with the Charge Point. Can be set to null to remove the current CP Model associated with the Charge Point. Mind that on boot the charger reports the hardware model and it is automatically updated.\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"enableAutoFaultRecovery":{"type":"boolean","default":false,"deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nWhen provided in a request, this field sets **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` to the same value for backward compatibility.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Old equivalent: `enableAutoFaultRecovery: true`\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Old equivalent: `enableAutoFaultRecovery: false`\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"user":{"type":"object","description":"Owner information along with owner preferences of the charge point when of type *personal*. If smart charging is enabled, smart charging preferences are also included.","properties":{"id":{"type":"integer","nullable":true},"automaticFirmwareUpdatesEnabled":{"type":"boolean","default":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer"},"contractId":{"type":"integer"},"contactId":{"deprecated":true,"type":"integer"},"corporateBillingAsDefault":{"type":"boolean","default":false,"description":"The partner's corporate billing would be used as a payment method by default, when a user who is invited to use the partner's corporate billing starts a session on the charge point."},"accessType":{"type":"string","description":"`private_view_private_use` - only users invited by the partner with the option to access private charge points could view this charge point on the map and use it. </br>\n`private_view_public_use` - only users invited by the partner with the option to access private charge points can view this charge point on the map but anyone who scans the QR or enters the ID can use it. </br>\n`public_view_private_use` - anyone could see the charge point on the map with a notice but only users invited by the partner with the option to access private charge points could use it.` </br>\n","enum":["private_view_private_use","private_view_public_use","public_view_private_use"]},"notice":{"deprecated":true,"description":"**Deprecated**: Use top-level `noticeId` and `notice` fields instead. The notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}},"utilityId":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"firstContactAt":{"type":"string","format":"date","readOnly":true,"description":"ISO 8601 formatted date"},"roamingOperatorId":{"type":"integer","readOnly":true,"description":"When null, the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided"},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"readOnly":true,"nullable":true},"displayTariffAndCosts":{"readOnly":true,"type":"boolean","description":"The charge point has a display and messages could be shown to the user."},"lastBootNotification":{"type":"object","nullable":true,"readOnly":true,"properties":{"model":{"type":"string"},"vendor":{"type":"string"},"chargeBoxSerialNumber":{"type":"string","nullable":true},"chargePointSerialNumber":{"type":"string","nullable":true},"firmwareVersion":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meterSerialNumber":{"type":"string","nullable":true},"meterType":{"type":"string","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"networkStatus":{"type":"string","readOnly":true,"description":"Connection status of the charge point </br>\n`never_connected` - the charge point has not yet connected to the CPMS </br>\n`available` - connected to the CPMS </br>\n`temporarily_unavailable` - disconnected a short while ago </br>\n`long-term_unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores. </br>\n","enum":["never_connected","available","temporarily_unavailable","long-term_unavailable"]},"lastNetworkStatusUpdateAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"The datetime when the charge point's network status was last updated. This corresponds to the \"Latest heartbeat at\" value shown in the CPMS Hardware section. Returns null when the charge point has never connected."},"hardwareStatus":{"type":"string","readOnly":true,"enum":["available","unavailable","faulted"],"description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past."},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is `faulted`"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"sharingCode":{"type":"string"},"sharingBillingRule":{"type":"string","readOnly":true,"description":"Billing rule for guest charging sessions on shared personal charge points.\nThis property is only present when the charge point is of type `personal` and has a sharing code set.\n- `owner_covers_guests`: The charge point owner pays for guest charging sessions.\n- `guests_pay_directly`: Guests pay for their own charging sessions.\n- `enforce_subscription`: Both owner and guest must have active subscriptions to charge.\n","enum":["owner_covers_guests","guests_pay_directly","enforce_subscription"]},"enabledRandomisedDelay":{"type":"boolean","description":"Applicable for `personal` charge points and `private` charge points with Time of Day schedule. For `public` charge points will be omitted."},"noticeId":{"type":"integer","description":"If both noticeId and partner.notice object are provided in the request the noticeId will be used to complete the request NOT the partner.notice object!","nullable":true},"notice":{"readOnly":true,"description":"If `include[]=notice` is provided with the request, the notice associated with this charge point will be provided here.\nThe notice is only available if the charge point is of type `private` and the accessType is `public_view_private_use`.\nTo associate a notice with a charge point, use the `noticeId` field.\n","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"usesRenewableEnergy":{"type":"boolean","default":false,"description":"When enabled, if no electricity rate is assigned to the charge point any roaming session will be marked as using renewable energy.\nThe actual energy mix can be specified in an electricity rate, which can then be assigned to the charge point. In that case the energy mix will be provided for roaming sessions.\nThis information can be gathered from the utility provider or third-party platforms that provide this information to the public.\n"},"integratedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"manufacturedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"ocppConnectedChargePointId":{"type":"integer","description":"The ID of the charge point that is connected to the backend and used by this charge point for OCPP communication. Required when the `communicationMode` is `via_ocpp_connected_charge_point`.\n"},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this charge point will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}}},{"type":"object","properties":{"communicationMode":{"readOnly":true,"type":"string","enum":["none","direct_ocpp","via_ocpp_connected_charge_point","roaming"],"description":"Indicates how the charge point communicates with the backend.</br>\n`none` - the charge point is not connected to the backend. The charge point can be displayed to users with instructions how to use it.</br>\n`direct_ocpp` - the charge point is connected through OCPP and is actively being managed by the backend.</br>\n`via_ocpp_connected_charge_point` - the charge point is a satellite of another charge point which communicates through OCPP and is identified by `ocppConnectedChargePointId`. The charge point is not actively managed, but inherits most of its properties from its master charge point.</br>\n`roaming` - the charge point was received from a roaming partner. The charge point can be controlled as much as the roaming connection allows.\n"},"electricityCostReimbursementIntegrationId":{"type":"integer","description":"The ID of the third-party electricity cost reimbursement integration to use for processing reimbursements for charging sessions at this charge point. Only applicable to personal (home) charge points - ignored for public and private charge points. When not set, this property is omitted from the response.\n","example":123},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the Installation & Maintenance company associated with this charge point. Must be owned by the same operator. When not set, this property is omitted from the response.\n","example":456},"countryStationId":{"type":"string","description":"Country-specific station identifier for NAP reporting (e.g., BNetzA Stations-ID for Germany). When not set, this property is omitted from the response.\n","example":"BNA0001"}}}],"required":["id","operatorId","name","type","status","network","security","networkStatus","autoStartWithoutAuthorization","disableAutoStartEmulation","monitoringEnabled","autoRecoveryEnabled","enableAutoFaultRecovery","communicationMode","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointDelete","summary":"Charge Point / Delete","description":"Delete a charge point","tags":["resource / charge points"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/available-personal-smart-charging-modes":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"get":{"operationId":"chargePointAvailablePersonalSmartChargingModesListing","summary":"Charge Point / Available personal smart charging modes / Listing","description":"Get all available personal smart charging modes","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","example":"Scheduled"},"integrationId":{"type":"integer","nullable":true,"example":null},"type":{"type":"string","enum":["user_controlled_schedule"]},"defaults":{"type":"object","properties":{"start_time":{"type":"string","format":"time","example":"01:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"},"end_time":{"type":"string","format":"time","example":"09:00","description":"The 24-hour format should be used.</br>\nExample `01:00`\n"}}}}},{"type":"object","properties":{"name":{"type":"string","example":"Agile Octopus"},"integrationId":{"type":"integer","nullable":true,"example":97},"type":{"type":"string","enum":["octopus_agile"]},"defaults":{"type":"object","properties":{"max_price":{"type":"number","format":"decimal","multipleOf":0.001,"example":0.125},"target_charge":{"type":"object","properties":{"departure_time":{"type":"string","format":"time","example":"01:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"}}}}}}},{"type":"object","properties":{"name":{"type":"string","example":"Octopus Go"},"integrationId":{"type":"integer","nullable":true,"example":96},"type":{"type":"string","enum":["octopus_go"]},"defaults":{"type":"object","properties":{"target_charge":{"type":"object","properties":{"departure_time":{"type":"string","format":"time","example":"01:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"}}}}}}},{"type":"object","properties":{"name":{"type":"string","example":"Auto-optimised for lowest cost"},"integrationId":{"type":"integer","nullable":true,"example":143},"type":{"type":"string","enum":["nordpool"]},"defaults":{"type":"object","properties":{"target_charge":{"type":"object","properties":{"departure_time":{"type":"string","format":"time","example":"07:30","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"}}}}},"locations":{"type":"object","properties":{"key":{"type":"string","example":"GB1"},"label":{"type":"string","example":"United Kingdom"}}}}}]}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/configurations":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"get":{"operationId":"chargePointConfigurationsListing","summary":"Charge Point / Configurations / Listing","description":"Get a charge point's all cached configurations","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"name":{"type":"string","description":"Only list configuration keys identified by variable name"},"instance":{"type":"string","description":"Only list configuration keys identified by instance"},"componentName":{"type":"string","description":"Only list configuration keys identified by component name"},"evseId":{"type":"integer","description":"Only list configuration keys identified by EVSE ID"}}}}],"tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"key":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"componentName":{"type":"string","description":"Returned only for OCPP 2.0.1."},"instance":{"type":"string","description":"Returned only for OCPP 2.0.1."},"evseId":{"type":"integer","description":"Returned only for OCPP 2.0.1."},"maxLimit":{"type":"integer","nullable":true}},"required":["name","value"]},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"persistentConfigurationTemplateId":{"type":"integer","description":"The ID of the persistent Configuration template when the variable value is persistent."}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/configurations/{key}":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}},{"in":"path","name":"key","required":true,"schema":{"anyOf":[{"type":"string","enum":["AllowOfflineTxForUnknownId","AuthorizationCacheEnabled","AuthorizeRemoteTxRequests","BlinkRepeat","ClockAlignedDataInterval","ConnectionTimeOut","ConnectorPhaseRotation","ConnectorPhaseRotationMaxLength","GetConfigurationMaxKeys","HeartbeatInterval","LightIntensity","LocalAuthorizeOffline","LocalPreAuthorize","MaxEnergyOnInvalidId","MeterValuesAlignedData","MeterValuesAlignedDataMaxLength","MeterValuesSampledData","MeterValuesSampledDataMaxLength","MeterValueSampleInterval","MinimumStatusDuration","NumberOfConnectors","ResetRetries","StopTransactionOnEVSideDisconnect","StopTransactionOnInvalidId","StopTxnAlignedData","StopTxnAlignedDataMaxLength","StopTxnSampledData","StopTxnSampledDataMaxLength","SupportedFeatureProfiles","SupportedFeatureProfilesMaxLength","TransactionMessageAttempts","TransactionMessageRetryInterval","UnlockConnectorOnEVSideDisconnect","WebSocketPingInterval","LocalAuthListEnabled","LocalAuthListMaxLength","SendLocalListMaxLength","ReserveConnectorZeroSupported","ChargeProfileMaxStackLevel","ChargingScheduleAllowedChargingRateUnit","ChargingScheduleMaxPeriods","ConnectorSwitch3to1PhaseSupported","MaxChargingProfilesInstalled","AuthorizationEnabled"]},{"type":"string"}]}}],"get":{"operationId":"chargePointConfigurationRead","summary":"Charge Point / Configuration / Read","description":"Get a charge point's cached configuration for a single key","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"key":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"componentName":{"type":"string","description":"Returned only for OCPP 2.0.1."},"instance":{"type":"string","description":"Returned only for OCPP 2.0.1."},"evseId":{"type":"integer","description":"Returned only for OCPP 2.0.1."},"maxLimit":{"type":"integer","nullable":true}},"required":["name","value"]},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"persistentConfigurationTemplateId":{"type":"integer","description":"The ID of the persistent Configuration template when the variable value is persistent."}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointConfigurationUpdate","summary":"Charge Point / Configuration / Update","description":"Update a charge point's configuration. The configuration is applied directly to the charge point and you will get response code 406 in case the application fails","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"This field is required when the configuration key is one of the standard OCPP keys, as defined in the OCPP documentation under \"Standard Configuration Key Names & Values\"."}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"key":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"componentName":{"type":"string","description":"Returned only for OCPP 2.0.1."},"instance":{"type":"string","description":"Returned only for OCPP 2.0.1."},"evseId":{"type":"integer","description":"Returned only for OCPP 2.0.1."},"maxLimit":{"type":"integer","nullable":true}},"required":["name","value"]},"readonly":{"type":"boolean"},"required":{"type":"boolean"},"timestamp":{"type":"string","format":"date-time","description":"When was the configuration last updated."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"persistentConfigurationTemplateId":{"type":"integer","description":"The ID of the persistent Configuration template when the variable value is persistent."}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"406":{"description":"The charge point rejected the setting or is not connected right now"},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/evses":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointEvseCreate","tags":["resource / charge points"],"summary":"Charge Point / EVSE / Create","description":"Create new EVSE within the Charge Point","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["physicalReference","currentType","networkId","status"],"type":"object","properties":{"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year.","nullable":true},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked. Requires the Bookings to be activated for the operator and automatically enables allowsReservation when set to true."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"}}}}}},"responses":{"201":{"description":"EVSE created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"chargePointEvsesListing","summary":"Charge Point / EVSEs / Listing","description":"Get all EVSEs of the Charge Point","parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","notes"]}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/evses/{evse}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"patch":{"operationId":"chargePointEvseUpdate","summary":"Charge Point / EVSE / Update","description":"Update an EVSE within the Charge Point","tags":["resource / charge points"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","notes"]}},"deprecated":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year.","nullable":true},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked. Requires the Bookings to be activated for the operator and automatically enables allowsReservation when set to true."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"}}}}}},"responses":{"200":{"description":"EVSE updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"accessibleParkingSpaces":{"type":"array","description":"Parking spaces accessible from this EVSE. Only included when include=accessibleParkingSpaces.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"chargePointEvseRead","summary":"Charge Point / EVSE / Read","description":"Get an EVSE from a Charge Point","tags":["resource / charge points"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","accessibleParkingSpaces"]}}}],"responses":{"200":{"description":"EVSE returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"accessibleParkingSpaces":{"type":"array","description":"Parking spaces accessible from this EVSE. Only included when include=accessibleParkingSpaces.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointEvseDelete","summary":"Charge Point / EVSE / Delete","description":"Delete an EVSE","tags":["resource / charge points"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/evses/{evse}/connectors":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointEvseConnectorsListing","summary":"Charge Point / Evse / Connectors / Listing","description":"Get a charge point evse's all connectors","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointEvseConnectorCreate","summary":"Charge Points / Evse / Connector / Create","description":"Create a charge point evse's connector","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["type"],"type":"object","properties":{"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}}}}}},"responses":{"201":{"description":"Created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/evses/{evse}/connectors/{connector}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"evse","in":"path","schema":{"type":"integer"},"required":true},{"name":"connector","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointEvseConnectorRead","summary":"Charge Points / Evse / Connector / Read","description":"Get a charge point evse's connector","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointEvseConnectorUpdate","summary":"Charge Points / Evse / Connector / Update","description":"Update a charge point evse's connector","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}}}}}},"responses":{"200":{"description":"Updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointEvseConnectorDelete","summary":"Charge Points / Evse / Connector / Delete","description":"Delete a charge point evse's connector","tags":["resource / charge points"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/hardware-status-logs":{"parameters":[{"name":"chargePoint","in":"path","description":"The ID of the charge point","required":true,"schema":{"type":"integer","example":1234}}],"get":{"operationId":"listChargePointHardwareStatusLogs","summary":"Charge Point / Hardware Status Logs / Listing","description":"Get paginated list of hardware status logs for a charge point with optional date filtering","parameters":[{"name":"filter","in":"query","description":"Filter options for status logs","required":false,"style":"deepObject","schema":{"type":"object","properties":{"createdAfter":{"description":"ISO 8601 formatted date. Only list status logs created after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Only list status logs created before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"List of hardware status logs returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["status","timestamp","errorCode"],"properties":{"status":{"type":"string","description":"Hardware status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"},"errorCode":{"type":"string","description":"The type of error or \"NoError\"","example":"NoError"},"vendorId":{"type":"string","description":"The ID of the vendor","example":"ABB"},"info":{"type":"string","description":"Additional information about the status","example":"Connector successfully locked"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Detailed description of the vendor error code","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action for the customer","example":"Please ensure the charging cable is properly connected"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/latest-hardware-status-log":{"parameters":[{"name":"chargePoint","in":"path","description":"The ID of the charge point","required":true,"schema":{"type":"integer","example":1234}}],"get":{"operationId":"getChargePointLatestHardwareStatusLog","summary":"Charge Point / Latest Hardware Status Log","description":"Get the latest hardware status log entry for a charge point","tags":["resource / charge points"],"responses":{"200":{"description":"Latest hardware status log returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["status","timestamp","errorCode"],"properties":{"status":{"type":"string","description":"Hardware status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"},"errorCode":{"type":"string","description":"The type of error or \"NoError\"","example":"NoError"},"vendorId":{"type":"string","description":"The ID of the vendor","example":"ABB"},"info":{"type":"string","description":"Additional information about the status","example":"Connector successfully locked"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Detailed description of the vendor error code","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action for the customer","example":"Please ensure the charging cable is properly connected"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/latest-network-status-log":{"parameters":[{"name":"chargePoint","in":"path","description":"The ID of the charge point","required":true,"schema":{"type":"integer","example":1234}}],"get":{"operationId":"getChargePointLatestNetworkStatusLog","summary":"Charge Point / Latest Network Status Log","description":"Get the latest network status log entry for a charge point","tags":["resource / charge points"],"responses":{"200":{"description":"Latest network status log returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string","description":"Network connection status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/network-status-logs":{"parameters":[{"name":"chargePoint","in":"path","description":"The ID of the charge point","required":true,"schema":{"type":"integer","example":1234}}],"get":{"operationId":"listChargePointNetworkStatusLogs","summary":"Charge Point / Network Status Logs / Listing","description":"Get paginated list of network status logs for a charge point with optional date filtering","parameters":[{"name":"filter","in":"query","description":"Filter options for status logs","required":false,"style":"deepObject","schema":{"type":"object","properties":{"createdAfter":{"description":"ISO 8601 formatted date. Only list status logs created after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Only list status logs created before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"List of network status logs returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string","description":"Network connection status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/notes":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true,"description":"Charge Point ID"}],"get":{"operationId":"chargePointNotesListing","tags":["resource / charge points"],"summary":"Charge Point / Notes / Listing","description":"List all notes for a specific charge point.\n\nNotes are returned with pinned notes first, then ordered by creation date descending.\n\n**Required permission:** `Notes.view`\n","parameters":[{"name":"filter","in":"query","style":"deepObject","schema":{"type":"object","properties":{"pinned":{"type":"boolean","description":"Filter by pinned status","example":true},"createdAfter":{"type":"string","format":"date-time","description":"Filter notes created on or after this ISO-8601 datetime","example":"2025-01-01T00:00:00Z"},"createdBefore":{"type":"string","format":"date-time","description":"Filter notes created on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter notes updated on or after this ISO-8601 datetime (useful for delta sync)","example":"2025-12-01T00:00:00Z"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter notes updated on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"chargePointNoteCreate","tags":["resource / charge points"],"summary":"Charge Point / Note / Create","description":"Create a new note for a specific charge point.\n\n**Required permission:** `Notes.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["summary"],"properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note (required)","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note (optional)","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","default":false,"description":"Whether the note should be pinned (optional, defaults to false)","example":false}}}}}},"responses":{"201":{"description":"Note created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/notes/{note}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true,"description":"Charge Point ID"},{"name":"note","in":"path","schema":{"type":"integer"},"required":true,"description":"Note ID"}],"get":{"operationId":"chargePointNoteShow","tags":["resource / charge points"],"summary":"Charge Point / Note / Read","description":"Get a specific note for a charge point.\n\n**Required permission:** `Notes.view`\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"chargePointNoteUpdate","tags":["resource / charge points"],"summary":"Charge Point / Note / Update","description":"Update a specific note for a charge point.\n\n**Required permissions:**\n- `Notes.update` for updating summary and details\n- `Notes.pin` for updating the pinned field (in addition to Notes.update if other fields are included)\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Updated maintenance note"},"details":{"type":"string","maxLength":2000,"nullable":true,"description":"Detailed content of the note. Send null to clear.","example":"Updated inspection schedule."},"pinned":{"type":"boolean","description":"Whether the note should be pinned. Requires Notes.pin permission.","example":true}}}}}},"responses":{"200":{"description":"Note updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"chargePointNoteDelete","tags":["resource / charge points"],"summary":"Charge Point / Note / Delete","description":"Delete a specific note from a charge point.\n\nNotes are permanently deleted (hard delete).\n\n**Required permission:** `Notes.delete`\n","responses":{"204":{"description":"Note deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/personal-smart-charging-preferences":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"get":{"operationId":"chargePointPersonalSmartChargingPreferencesRead","summary":"Charge Point / Personal smart charging preferences / Read","description":"Get personal smart charging preferences of the charge point","tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"title":"User controlled schedule","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["user_controlled_schedule"]},"preferences":{"type":"object","required":["startTime","endTime"],"properties":{"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"targetCharge":{"type":"object","nullable":true,"properties":{"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"trackElectricityCosts":{"type":"object","nullable":true,"properties":{"priceOffPeak":{"type":"number","example":1.3},"pricePeak":{"type":"number","example":0.9}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},{"title":"Solar","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["solar"]},"preferences":{"type":"object","required":["maxCurrentFromGrid","solarStableTime"],"properties":{"maxCurrentFromGrid":{"type":"number","description":"The max current that can be taken from grid to ensure a stable charging process.Recommended options to use 0, 6, 8, 10, 12."},"solarStableTime":{"type":"number","description":"Shorter time means more precise solar availability detection but also more frequent charging on/off switching. Recommended options to use 30, 60, 120, 300, 600."}}}}},{"title":"Octopus Agile","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_agile"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId","priceThreshold"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"Octopus Go","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_go"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"NordPool","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["nordpool"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["location","targetCharge"],"properties":{"location":{"type":"string","enum":["GB1"],"description":"The price region based on NordPool prices"},"targetCharge":{"type":"object","required":["targetChargeKwh","departureTime"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10}}}}}}},{"title":"Electricity rate","type":"object","required":["type","electricityRateId","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["charger_electricity_rate"]},"electricityRateId":{"type":"integer"},"preferences":{"type":"object","required":["startTime","endTime","targetCharge"],"properties":{"solar":{"type":"boolean","default":false,"description":"This boolean adds solar mode control for specific brands of chargers that are supported.\nE.g.: Some chargers support special keys in the charging profile which enables solar charging mode.\n"},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen."},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen."},"targetCharge":{"type":"object","required":["departureTime","targetChargeKwh"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10,"description":"The desired charge energy which will be achieved with the most optimal price."}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}}]}}},"examples":{"userControlledSchedule":{"summary":"User Controlled Schedule","value":{"data":{"enabled":true,"type":"user_controlled_schedule","preferences":{"startTime":"12:00","endTime":"19:00","targetCharge":{"minTargetChargeKwh":10,"maxTargetChargeKwh":25},"trackElectricityCosts":{"priceOffPeak":1.3,"pricePeak":0.9},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}}},"solar":{"summary":"Solar","value":{"data":{"enabled":true,"type":"solar","preferences":{"maxCurrentFromGrid":10,"solarStableTime":60}}}},"octopusAgile":{"summary":"Octopus Agile","value":{"data":{"enabled":true,"type":"octopus_agile","integrationId":97,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","priceThreshold":9,"targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}}},"octopusGo":{"summary":"Octopus Go","value":{"data":{"enabled":true,"type":"octopus_go","integrationId":150,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}}},"nordPool":{"summary":"Nordpool","value":{"data":{"type":"nordpool","integrationId":95,"enabled":true,"preferences":{"location":"GB1","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10}}}}},"chargerElectricityRate":{"summary":"ChargerElectricityRate","value":{"data":{"type":"charger_electricity_rate","electricityRateId":1,"enabled":true,"preferences":{"solar":true,"startTime":"12:00","endTime":"19:00","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"personalSmartChargingPreferencesUpdate","summary":"Charge Point / Personal smart charging preferences / Update","description":"Update personal smart charging preferences","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"User controlled schedule","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["user_controlled_schedule"]},"preferences":{"type":"object","required":["startTime","endTime"],"properties":{"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"targetCharge":{"type":"object","nullable":true,"properties":{"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"trackElectricityCosts":{"type":"object","nullable":true,"properties":{"priceOffPeak":{"type":"number","example":1.3},"pricePeak":{"type":"number","example":0.9}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},{"title":"Solar","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["solar"]},"preferences":{"type":"object","required":["maxCurrentFromGrid","solarStableTime"],"properties":{"maxCurrentFromGrid":{"type":"number","description":"The max current that can be taken from grid to ensure a stable charging process.Recommended options to use 0, 6, 8, 10, 12."},"solarStableTime":{"type":"number","description":"Shorter time means more precise solar availability detection but also more frequent charging on/off switching. Recommended options to use 30, 60, 120, 300, 600."}}}}},{"title":"Octopus Agile","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_agile"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId","priceThreshold"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"Octopus Go","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_go"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"NordPool","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["nordpool"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["location","targetCharge"],"properties":{"location":{"type":"string","enum":["GB1"],"description":"The price region based on NordPool prices"},"targetCharge":{"type":"object","required":["targetChargeKwh","departureTime"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10}}}}}}},{"title":"Electricity rate","type":"object","required":["type","electricityRateId","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["charger_electricity_rate"]},"electricityRateId":{"type":"integer"},"preferences":{"type":"object","required":["startTime","endTime","targetCharge"],"properties":{"solar":{"type":"boolean","default":false,"description":"This boolean adds solar mode control for specific brands of chargers that are supported.\nE.g.: Some chargers support special keys in the charging profile which enables solar charging mode.\n"},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen."},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen."},"targetCharge":{"type":"object","required":["departureTime","targetChargeKwh"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10,"description":"The desired charge energy which will be achieved with the most optimal price."}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},{"title":"Disabled","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":false,"description":"Disable the smart charging from owner preferences\n"}}}]},"examples":{"userControlledSchedule":{"summary":"User Controlled Schedule","value":{"enabled":true,"type":"user_controlled_schedule","preferences":{"startTime":"12:00","endTime":"19:00","targetCharge":{"minTargetChargeKwh":10,"maxTargetChargeKwh":25},"trackElectricityCosts":{"priceOffPeak":1.3,"pricePeak":0.9},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}},"solar":{"summary":"Solar","value":{"enabled":true,"type":"solar","preferences":{"maxCurrentFromGrid":10,"solarStableTime":60}}},"octopusAgile":{"summary":"Octopus Agile","value":{"enabled":true,"type":"octopus_agile","integrationId":97,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","priceThreshold":9,"targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}},"octopusGo":{"summary":"Octopus Go","value":{"enabled":true,"type":"octopus_go","integrationId":150,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}},"nordPool":{"summary":"Nordpool","value":{"type":"nordpool","integrationId":95,"enabled":true,"preferences":{"location":"GB1","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10}}}},"chargerElectricityRate":{"summary":"ChargerElectricityRate","value":{"type":"charger_electricity_rate","electricityRateId":1,"enabled":true,"preferences":{"solar":true,"startTime":"12:00","endTime":"19:00","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}},"personalModeDisabled":{"summary":"Disable","value":{"enabled":false}}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"title":"User controlled schedule","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["user_controlled_schedule"]},"preferences":{"type":"object","required":["startTime","endTime"],"properties":{"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"targetCharge":{"type":"object","nullable":true,"properties":{"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"trackElectricityCosts":{"type":"object","nullable":true,"properties":{"priceOffPeak":{"type":"number","example":1.3},"pricePeak":{"type":"number","example":0.9}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},{"title":"Solar","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["solar"]},"preferences":{"type":"object","required":["maxCurrentFromGrid","solarStableTime"],"properties":{"maxCurrentFromGrid":{"type":"number","description":"The max current that can be taken from grid to ensure a stable charging process.Recommended options to use 0, 6, 8, 10, 12."},"solarStableTime":{"type":"number","description":"Shorter time means more precise solar availability detection but also more frequent charging on/off switching. Recommended options to use 30, 60, 120, 300, 600."}}}}},{"title":"Octopus Agile","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_agile"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId","priceThreshold"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"Octopus Go","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_go"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},{"title":"NordPool","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["nordpool"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["location","targetCharge"],"properties":{"location":{"type":"string","enum":["GB1"],"description":"The price region based on NordPool prices"},"targetCharge":{"type":"object","required":["targetChargeKwh","departureTime"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10}}}}}}},{"title":"Electricity rate","type":"object","required":["type","electricityRateId","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["charger_electricity_rate"]},"electricityRateId":{"type":"integer"},"preferences":{"type":"object","required":["startTime","endTime","targetCharge"],"properties":{"solar":{"type":"boolean","default":false,"description":"This boolean adds solar mode control for specific brands of chargers that are supported.\nE.g.: Some chargers support special keys in the charging profile which enables solar charging mode.\n"},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen."},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen."},"targetCharge":{"type":"object","required":["departureTime","targetChargeKwh"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10,"description":"The desired charge energy which will be achieved with the most optimal price."}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},{"title":"Disabled","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":false,"description":"Disable the smart charging from owner preferences\n"}}}]}}},"examples":{"userControlledSchedule":{"summary":"User Controlled Schedule","value":{"data":{"enabled":true,"type":"user_controlled_schedule","preferences":{"startTime":"12:00","endTime":"19:00","targetCharge":{"minTargetChargeKwh":10,"maxTargetChargeKwh":25},"trackElectricityCosts":{"priceOffPeak":1.3,"pricePeak":0.9},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}}},"solar":{"summary":"Solar","value":{"data":{"enabled":true,"type":"solar","preferences":{"maxCurrentFromGrid":10,"solarStableTime":60}}}},"octopusAgile":{"summary":"Octopus Agile","value":{"data":{"enabled":true,"type":"octopus_agile","integrationId":97,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","priceThreshold":9,"targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}}},"octopusGo":{"summary":"Octopus Go","value":{"data":{"enabled":true,"type":"octopus_go","integrationId":150,"preferences":{"applicableTaxId":1,"postCode":"AA AAA","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"minTargetChargeKwh":10,"maxTargetChargeKwh":25}}}}},"nordPool":{"summary":"Nordpool","value":{"data":{"type":"nordpool","integrationId":95,"enabled":true,"preferences":{"location":"GB1","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10}}}}},"chargerElectricityRate":{"summary":"ChargerElectricityRate","value":{"data":{"type":"charger_electricity_rate","electricityRateId":1,"enabled":true,"preferences":{"solar":true,"startTime":"12:00","endTime":"19:00","targetCharge":{"departureTime":"12:00","preconditioningTime":10,"targetChargeKwh":10},"weekDays":[{"days":["monday"],"startTime":"16:00","endTime":"23:00"},{"days":["tuesday","friday"],"startTime":"17:00","endTime":"22:00"}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/shared-partners":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointSharedPartnersListing","summary":"Charge Point / Shared Partners / Listing","description":"Get all Shared Partners of the Charge Point","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"the id of the partner"},"sharedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}},"required":["id","sharedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"chargePointSharedPartnersSync","tags":["resource / charge points"],"summary":"Charge Point / Shared Partners / Update","description":"Set the Shared Partners of the Charge Point. Attach Shared Partners within the Charge Point. The charge point must have an owner associated and its `access_type` must be `private`. Grants access to this Partner to the charge point. This allows their invited users with access to private CPs to also access this CP. It also gives view-only access to the selected Partner's admins to this CP.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerIds":{"type":"array","items":{"type":"integer"}}},"required":["partnerIds"]}}}},"responses":{"204":{"description":"Given Partners are synchronized successfully to the Charge Point"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/shares":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true}],"post":{"operationId":"chargePointShareCreate","tags":["resource / charge points"],"summary":"Charge Point / Share / Create","description":"Create new Share within the Charge Point","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer"}},"required":["userId"]}}}},"responses":{"201":{"description":"Share created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"userId":{"type":"integer"},"sharedOn":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}},"required":["id","userId","sharedOn"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"chargePointSharesListing","summary":"Charge Point / Shares / Listing","description":"Get all Shares of the Charge Point","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / charge points"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"userId":{"type":"integer"},"sharedOn":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}},"required":["id","userId","sharedOn"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/shares/{share}":{"parameters":[{"name":"chargePoint","in":"path","schema":{"type":"integer"},"required":true},{"name":"share","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"chargePointShareRead","summary":"Charge Point / Share / Read","description":"Get an Share from a Charge Point","tags":["resource / charge points"],"responses":{"200":{"description":"Share returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"userId":{"type":"integer"},"sharedOn":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}},"required":["id","userId","sharedOn"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"charegPointShareDelete","summary":"Charge Point / Share / Delete","description":"Delete an Share","tags":["resource / charge points"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/charge-points/v2.0/{chargePoint}/smart-charging":{"parameters":[{"in":"path","name":"chargePoint","required":true,"schema":{"type":"integer"}}],"post":{"operationId":"chargePointSmartChargingUpdate","summary":"Charge Point / Smart Charging / Update","description":"Update smart charging details for the charge point","tags":["resource / charge points"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["tod"],"description":"`tod` - for public and private charge points. The maximum load for a specific time period during the day could be set - the charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"periods":{"type":"array","items":{"type":"object","required":["weekDay","elements"],"properties":{"weekDay":{"type":"string","enum":["all","mon","tue","wed","thu","fri","sat","sun"],"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","required":["startAt","endAt"],"properties":{"startAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"},"endAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `01:00`\n"},"maxCurrent":{"type":"number","nullable":true}}}}}},"description":"The time period must be the same for every single day through the week and should be always 60 min. The `startAt` and `endAt` must comply with this restriction."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["dynamic"],"description":"`dynamic` - for public and private charge points. The charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["user_schedule"],"description":"`user_schedule` - for personal charge points. The maximum power load will be defined on the EVSE level. The charge point owner could manually create a charging schedule.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"allowDynamicLoadManagement":{"type":"boolean","description":"When selected, the Charge Point can be added to a DLM circuit."},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","minCurrent","enableKeepAwake","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"],"description":"`disabled` - no smart charging is available for the charge point\n"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."}},"required":["mode"]}]}}}},"responses":{"201":{"description":"Updated smart charging details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["tod"],"description":"`tod` - for public and private charge points. The maximum load for a specific time period during the day could be set - the charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"periods":{"type":"array","items":{"type":"object","required":["weekDay","elements"],"properties":{"weekDay":{"type":"string","enum":["all","mon","tue","wed","thu","fri","sat","sun"],"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","required":["startAt","endAt"],"properties":{"startAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"},"endAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `01:00`\n"},"maxCurrent":{"type":"number","nullable":true}}}}}},"description":"The time period must be the same for every single day through the week and should be always 60 min. The `startAt` and `endAt` must comply with this restriction."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["dynamic"],"description":"`dynamic` - for public and private charge points. The charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["user_schedule"],"description":"`user_schedule` - for personal charge points. The maximum power load will be defined on the EVSE level. The charge point owner could manually create a charging schedule.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"allowDynamicLoadManagement":{"type":"boolean","description":"When selected, the Charge Point can be added to a DLM circuit."},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","minCurrent","enableKeepAwake","maxVoltage","phases","phaseRotation"]},{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"],"description":"`disabled` - no smart charging is available for the charge point\n"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."}},"required":["mode"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v1.0":{"get":{"operationId":"circuitsListingDeprecated","deprecated":true,"tags":["resource / circuits"],"summary":"Circuits / Listing","description":"Get all circuits","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","name","phases","maxCurrent","chargePoints"],"properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"circuitCreateDeprecated","deprecated":true,"tags":["resource / circuits"],"summary":"Circuit / Create","description":"Create new circuits","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","name","phases","maxCurrent","chargePoints"],"properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"201":{"description":"Circuit created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","name","phases","maxCurrent","chargePoints"],"properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v1.0/{dlmCircuit}":{"parameters":[{"name":"dlmCircuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitReadDeprecated","deprecated":true,"summary":"Circuit / Read","description":"Get a circuit","tags":["resource / circuits"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","name","phases","maxCurrent","chargePoints"],"properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"circuitUpdateDeprecated","deprecated":true,"summary":"Circuit / Update","description":"Update a circuit","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In Amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In Amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"200":{"description":"Circuit updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"phases":{"type":"string","enum":["1","3"]},"maxCurrent":{"type":"number","description":"In Amps","multipleOf":0.1,"minimum":0},"minChargePointCurrent":{"type":"number","description":"In Amps. The minimum","multipleOf":0.1,"minimum":0},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Set charger limit to 0 if an idle period starts","deprecated":true},"chargePoints":{"type":"array","items":{"type":"object","required":["id","maxCurrent","phases","inputVoltage","phaseRotation"],"properties":{"id":{"type":"integer"},"maxCurrent":{"type":"number","description":"in Amps","multipleOf":0.1},"phases":{"type":"string","enum":["1","3"]},"inputVoltage":{"type":"string","enum":["110-130","220-240","380","400"],"description":"use 380/400 for 3-phase connected CPs"},"phaseRotation":{"type":"string","enum":["L1","L2","L3","RST","RTS","SRT","STR","TRS","TSR"],"description":"Use L* for single phase CP to note the connected phase"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"circuitDeleteDeprecated","deprecated":true,"summary":"Circuit / Delete","description":"Delete a circuit.\n\nIf the circuit is part of a disabled flexibility asset, both the circuit and the associated flexibility asset will be deleted.\n\nIf the circuit is part of an enabled flexibility asset, the deletion will be rejected with a 409 Conflict status code.\n","tags":["resource / circuits"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"409":{"description":"The circuit is managed by an enabled flexibility asset and cannot be deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v1.0/{dlmCircuit}/consumption":{"get":{"operationId":"circuitConsumptionAllPhasesDeprecated","deprecated":true,"parameters":[{"name":"dlmCircuit","in":"path","schema":{"type":"integer"},"required":true}],"tags":["resource / circuits"],"summary":"Circuit / Consumption (all phases)","description":"Get the consumption of a circuit for each phase","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v1.0/{dlmCircuit}/consumption/{phase}":{"get":{"operationId":"circuitConsumptionPhaseDeprecated","deprecated":true,"parameters":[{"name":"dlmCircuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"phase","in":"path","required":true,"schema":{"type":"string","enum":["L1","L2","L3"]}}],"tags":["resource / circuits"],"summary":"Circuit / Consumption (phase)","description":"Get the consumption of a circuit for a single phase","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"number","description":"In amps","multipleOf":0.1}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0":{"get":{"operationId":"circuitsListing","summary":"Circuits / Listing","description":"Get all circuits","tags":["resource / circuits"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargePointPriorities","userPriorities","socPriorities","consumption","unmanagedLoad"]}}},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the circuits that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the circuits that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the circuit records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the circuit records that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}},{"type":"object","properties":{"chargePointPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"priority":{"type":"number"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"priority":{"type":"number"}}}}}},"nullable":true,"readOnly":true},"userPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}},"nullable":true,"readOnly":true},"socPriorities":{"nullable":true,"readOnly":true,"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}},"consumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"unmanagedLoad":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"schedule":{"nullable":true,"readOnly":true,"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}],"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"circuitCreate","summary":"Circuit / Create","description":"Create a new circuit","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name","phases","maxCurrent"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}}}}},"responses":{"201":{"description":"Circuit created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}},{"type":"object","properties":{"chargePointPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"priority":{"type":"number"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"priority":{"type":"number"}}}}}},"nullable":true,"readOnly":true},"userPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}},"nullable":true,"readOnly":true},"socPriorities":{"nullable":true,"readOnly":true,"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}},"consumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"unmanagedLoad":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"schedule":{"nullable":true,"readOnly":true,"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitRead","summary":"Circuit / Read","description":"Get a circuit","tags":["resource / circuits"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargePointPriorities","userPriorities","socPriorities","consumption","unmanagedLoad","schedule"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}},{"type":"object","properties":{"chargePointPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"priority":{"type":"number"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"priority":{"type":"number"}}}}}},"nullable":true,"readOnly":true},"userPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}},"nullable":true,"readOnly":true},"socPriorities":{"nullable":true,"readOnly":true,"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}},"consumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"unmanagedLoad":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"schedule":{"nullable":true,"readOnly":true,"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"circuitUpdate","summary":"Circuit / Update","description":"Update a circuit","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}}}}},"responses":{"200":{"description":"Circuit updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"parentCircuitId":{"type":"integer","nullable":true,"description":"Specify parent circuit in Multi-level DLM. Circuits used in flexibility assets or using load balancing integration can not be used in Multi-level DLM.\n"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"nullable":false,"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nThe field is mandatory for Multi-level DLM when the `phases` value  is `three_phase`.\n","type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"connectedPhase":{"nullable":false,"description":"Specifies the active line conductors used in the circuit. </br>\nSingle phase values (`phases` = `single_phase`): `L1`, `L2`, `L3` - Valid in `star` electrical configuration </br>\nSplit phase values (`phases` = `split_phase`): `L1_L2`, `L2_L3`, `L1_L3` - Valid in `star` electrical configuration </br>\nThis field is mandatory for Multi-level DLM when the `phases` value is `single_phase` or `split_phase`.\n","type":"string","enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"],"nullable":true},"maxCurrent":{"type":"number","description":"The current (A) limit for the whole circuit. This would usually be the circuit breaker rated current.","multipleOf":0.1},"minChargePointCurrent":{"type":"number","nullable":true,"description":"Defines what is the lowest current (A) allowed per charge point. New sessions cannot start if any of the existing ones has to be lowered to less than the set minimum rate. This is to ensure that a connected car vehicle actually charge because the vehicles have a minimum charging rate below which they would not accept the charge. If left empty, there is no minimum.","multipleOf":0.1},"applyMinimumCurrentOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, new sessions start at the configured minimum current (minChargePointCurrent). This improves user experience but bypasses initial DLM safety checks. Use with caution: In offline scenarios, the DLM cannot limit the load, creating a high risk of circuit overload. Only enable this option if your site has a stable internet connection and the electrical circuit has significant spare capacity to handle all charge points operating at their minimum current simultaneously.\n"},"setSessionLimitToZeroOnIdle":{"type":"boolean","description":"Sets the limit to 0 when the session enters an idle period.","deprecated":true},"electricityMeterId":{"type":"number","nullable":true,"description":"The ID of the Electricity Meter linked to the circuit (if any)."},"offlineReservedCurrent":{"type":"number","nullable":true,"description":"The current (A) reserved for other loads on the circuit (non-managed loads) when the Electricity Meter is offline.","multipleOf":0.1},"loadBalancingIntegration":{"type":"object","nullable":true,"description":"The selected integration enables the system to receive and apply third-party charging limits to the chargers added in the circuit.","properties":{"id":{"type":"integer","nullable":true,"description":"The id of the load balancing integration (can be found in the admin panel). Provide `null` if you want to disable any load balancing integration and revert back to the built-in load balancing."},"fields":{"oneOf":[{"type":"object","properties":{"startDate":{"type":"string","format":"date","nullable":true,"example":"2025-02-18","description":"DREEV specific. Reporting and accepting charging schedules will commence at this date."}}},{"type":"object","properties":{"installationId":{"type":"string","format":"uuid","example":"0194db65-2791-70ae-9575-89959f57d915","description":"Zaptec specific. Installation ID inside Zaptec system, used for identifying the corresponding circuit."}},"required":["installationId"]}]}}}}},{"type":"object","properties":{"chargePointPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"priority":{"type":"number"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"priority":{"type":"number"}}}}}},"nullable":true,"readOnly":true},"userPriorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}},"nullable":true,"readOnly":true},"socPriorities":{"nullable":true,"readOnly":true,"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}},"consumption":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"unmanagedLoad":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"nullable":true,"readOnly":true},"schedule":{"nullable":true,"readOnly":true,"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"circuitDelete","summary":"Circuit / Delete","description":"Delete a circuit.\n\nIf the circuit is part of a disabled flexibility asset, both the circuit and the associated flexibility asset will be deleted.\n\nIf the circuit is part of an enabled flexibility asset, the deletion will be rejected with a 409 Conflict status code.\n","tags":["resource / circuits"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"The circuit is managed by an enabled flexibility asset and cannot be deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/charge-point-priorities":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitChargePointPrioritiesListing","summary":"Circuit / Charge Point Priorities / Listing","description":"Get all circuit's charge point priorities","tags":["resource / circuits"],"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"priority":{"type":"number"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"priority":{"type":"number"}}}}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/consumption":{"get":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"operationId":"circuitConsumption","tags":["resource / circuits"],"summary":"Circuit / Consumption","description":"Get the consumption of a circuit for each phase","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/schedule":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitScheduleRead","summary":"Circuit / Schedule / Read","description":"Get a circuit's schedule configuration","tags":["resource / circuits"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"No schedule configured for this circuit"}}},"put":{"operationId":"circuitScheduleCreateOrUpdate","summary":"Circuit / Schedule / Create or Update","description":"Create or replace a circuit's schedule configuration","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}},"responses":{"200":{"description":"Schedule created or updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"scheduleType":{"type":"string","enum":["daily","weekly"],"description":"Schedule type for time-based current reduction:\n- **daily**: Same schedule periods apply every day\n- **weekly**: Different schedule periods can be configured for each day of the week\n"},"schedule":{"description":"Schedule configuration for time-based current reduction. The structure depends on scheduleType:\n- When scheduleType is `daily`: An array of time periods that apply every day.\n- When scheduleType is `weekly`: An object with day-of-week keys (monday through sunday), each containing an array of time periods.\nPeriods within a day must not overlap and cannot span midnight.\n","oneOf":[{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},{"type":"object","description":"A weekly schedule with separate time periods for each day of the week.\nEach day can have multiple non-overlapping periods. All days must be provided, even if empty.\n","properties":{"monday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"tuesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"wednesday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"thursday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"friday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"saturday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}},"sunday":{"type":"array","description":"A daily schedule consisting of time periods that apply every day.\nPeriods within the schedule must not overlap.\n","items":{"type":"object","description":"A time period within a schedule during which reduced current applies.\nThe period defines when the circuit's maximum available current is limited.\n","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"Start time of the period in HH:MM format (24-hour).","example":"08:00"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"End time of the period in HH:MM format (24-hour). Must be after the start time (periods cannot span midnight).","example":"18:00"},"maxCurrent":{"type":"number","multipleOf":0.1,"minimum":0,"format":"float","description":"Maximum current (A) available during this period. Must not exceed the circuit's maximum current.","example":16}},"required":["start","end","maxCurrent"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]}]}},"required":["scheduleType","schedule"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"circuitScheduleDelete","summary":"Circuit / Schedule / Delete","description":"Clear a circuit's schedule configuration","tags":["resource / circuits"],"responses":{"204":{"description":"Schedule deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/soc-priorities":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitSocPrioritiesListing","summary":"Circuit / SoC Priorities / Listing","description":"Get a circuit's SoC priority","tags":["resource / circuits"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"upperThresholdPercent":{"description":"The state of charge (SoC) percentage above which the `highSoCPriority` will be applied. Must have a 5% offset from the `lowerThresholdPercent` (if provided).\nFor example if `lowerThresholdPercent` is set to 50, this can have a value of 55 or higher.\nSetting this to `null` will remove the usage of the `highSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"highSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"},"lowerThresholdPercent":{"description":"The state of charge (SoC) percentage below which the `lowSoCPriority` will be applied. Must have a 5% offset from the `upperThresholdPercent` (if provided).\nFor example if `upperThresholdPercent ` is set to 50, this can have a value of 45 or lower.\nSetting this to `null` will remove the usage of the `lowSoCPriority`.\n","type":"number","nullable":true,"multipleOf":5,"minimum":5,"maximum":95},"lowSoCPriority":{"type":"number","minimum":0,"multipleOf":0.1,"format":"float"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/unmanaged-load":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitUnmanagedLoadRead","summary":"Circuit / Unmanaged Load / Read","description":"Get a circuit's unmanaged load","tags":["resource / circuits"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["phase"],"properties":{"phase":{"type":"string","enum":["L1","L2","L3"]},"consumption":{"type":"number","description":"In amps","multipleOf":0.1},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/user-priorities":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitUserPrioritiesListing","summary":"Circuits / User Priorities / Listing","description":"Get all circuit's user priorities","tags":["resource / circuits"],"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"circuitUserPriorityCreate","summary":"Circuits / User Priority / Create","description":"Create a circuit's user priority","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["targetId","type","priority"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}}}},"responses":{"201":{"description":"Circuit's user priority created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/circuits/v2.0/{circuit}/user-priorities/{userPriority}":{"parameters":[{"name":"circuit","in":"path","schema":{"type":"integer"},"required":true},{"name":"userPriority","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"circuitUserPriorityRead","summary":"Circuits / User Priority / Read","description":"Get a circuit's user priority","tags":["resource / circuits"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"circuitUserPriorityUpdate","summary":"Circuits / User Priority / Update","description":"Update a circuit's user priority","tags":["resource / circuits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}}}},"responses":{"200":{"description":"Circuit updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"targetId":{"type":"integer","description":"The ID of the User Group the user must be part of or the ID of the Partner from which the user must have an invite from, for the set priority apply for the session."},"type":{"type":"string","enum":["partner","userGroup"]},"priority":{"type":"number","description":"The priority where 1 is equal to anyone else, 2 is twice as important, 0.5 is half as important.","multipleOf":0.1,"format":"float","minimum":0}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"circuitUserPriorityDelete","summary":"Circuits / User Priority / Delete","description":"Delete a circuit's user priority","tags":["resource / circuits"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/configuration-templates/v1.0":{"get":{"operationId":"listConfigurationTemplates","summary":"Configuration Template / Listing","description":"Get all Configuration Templates","parameters":[{"name":"filter","in":"query","required":false,"description":"Filters for OCPP version","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"ocppVersion":{"type":"string","description":"The OCPP version to filter by","enum":["ocpp1.6","ocpp2.0.1"]}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / configuration templates"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true},"name":{"type":"string"},"ocppVersion":{"type":"string","enum":["ocpp 1.6","ocpp 2.0.1"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createConfigurationTemplate","tags":["resource / configuration templates"],"summary":"Configuration Template / Create","description":"Create new Configuration Template","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"ocppVersion":{"type":"string","enum":["ocpp 1.6","ocpp 2.0.1"]}},"required":["name","ocppVersion"]}}}},"responses":{"201":{"description":"Configuration Template created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true},"name":{"type":"string"},"ocppVersion":{"type":"string","enum":["ocpp 1.6","ocpp 2.0.1"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"409":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/configuration-templates/v1.0/{template}":{"parameters":[{"name":"template","in":"path","schema":{"type":"integer"},"required":true}],"patch":{"operationId":"updateConfigurationTemplate","summary":"Configuration Template / Update","description":"Update Configuration Template","tags":["resource / configuration templates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Configuration Template updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true},"name":{"type":"string"},"ocppVersion":{"type":"string","enum":["ocpp 1.6","ocpp 2.0.1"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"getConfigurationTemplate","summary":"Configuration Template / Read","description":"Get Configuration Template","tags":["resource / configuration templates"],"responses":{"200":{"description":"Configuration Template returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true},"name":{"type":"string"},"ocppVersion":{"type":"string","enum":["ocpp 1.6","ocpp 2.0.1"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteConfigurationTemplate","summary":"Configuration Template / Delete","description":"Delete Configuration Template","tags":["resource / configuration templates"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/configuration-templates/v1.0/{template}/variables":{"get":{"operationId":"configurationTemplateVariableListing","summary":"Configuration Template Variable / Listing","description":"Get all Configuration Template Variables","parameters":[{"name":"template","in":"path","required":true,"schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / configuration templates"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"Configuration variable for OCPP 1.6","required":["id","keyName","value","lastUpdatedAt"],"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","required":["id","value","variableName","variableType","variableInstance","component","componentInstance","evseId","connectorId","lastUpdatedAt"],"type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"configurationTemplateVariableCreate","summary":"Configuration Template Variable / Create","description":"Create a new Configuration Template Variable","parameters":[{"name":"template","in":"path","required":true,"schema":{"type":"integer"}}],"tags":["resource / configuration templates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"title":"Configuration Template Variable Create","description":"Configuration template variable data for creation - OCPP 1.6 or 2.1","oneOf":[{"title":"Configuration variable for OCPP 1.6","required":["keyName","value"],"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","required":["value","variableName","component"],"type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}}}},"responses":{"201":{"description":"Configuration Template Key Variable successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","title":"Created Configuration Template Variable","description":"Created configuration template variable - OCPP 1.6 or 2.1","oneOf":[{"title":"Configuration variable for OCPP 1.6","required":["id","keyName","value","lastUpdatedAt"],"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","required":["id","value","variableName","variableType","variableInstance","component","componentInstance","evseId","connectorId","lastUpdatedAt"],"type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/configuration-templates/v1.0/{template}/variables/{variable}":{"parameters":[{"name":"template","in":"path","required":true,"schema":{"type":"integer"}},{"name":"variable","in":"path","required":true,"schema":{"type":"integer"}}],"patch":{"operationId":"configurationTemplateVariableUpdate","summary":"Configuration Template Variable / Update","description":"Update a Configuration Template Variable","tags":["resource / configuration templates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"title":"Configuration Template Variable Update","description":"Configuration template variable data for updates - OCPP 1.6 or 2.1","oneOf":[{"title":"Configuration variable for OCPP 1.6","type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}}}},"responses":{"200":{"description":"Configuration Template Variable updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","title":"Updated Configuration Template Variable","description":"Updated configuration template variable - OCPP 1.6 or 2.1","oneOf":[{"title":"Configuration variable for OCPP 1.6","required":["id","keyName","value","lastUpdatedAt"],"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","readOnly":true},"keyName":{"type":"string"},"value":{"type":"string"},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}},{"title":"Configuration variable for OCPP 2.0.1","required":["id","value","variableName","variableType","variableInstance","component","componentInstance","evseId","connectorId","lastUpdatedAt"],"type":"object","additionalProperties":false,"description":"Represents a configuration variable based on the OCPP 2.0.1 specification.\nFields such as `variableName`, `variableType`, `variableInstance`, `component`,\n`componentInstance`, `evseId`, and `connectorId` directly correspond to the OCPP 2.0.1 protocol.\n","properties":{"id":{"type":"integer","readOnly":true},"value":{"type":"string"},"variableName":{"type":"string"},"variableType":{"type":"string","enum":["Actual","Target","MinSet","MaxSet"],"nullable":true},"variableInstance":{"type":"string","nullable":true},"component":{"type":"string"},"componentInstance":{"type":"string","nullable":true},"evseId":{"type":"integer","nullable":true},"connectorId":{"type":"integer","nullable":true},"lastUpdatedAt":{"readOnly":true,"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"configurationTemplateVariableDelete","summary":"Configuration Template Variable / Delete","description":"Delete a Configuration Template Variable","tags":["resource / configuration templates"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/consent-history/v1.0":{"get":{"operationId":"consentHistoryListing","summary":"Consent History / Listing","description":"Retrieve the full consent history log showing all consent actions (agreements and rejections) performed by users over time. Results are ordered by actionAt descending (most recent first).","tags":["resource / consent-history"],"parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"userId":{"type":"array","items":{"type":"integer"},"description":"Filter consent history by specific user IDs"},"termType":{"type":"array","items":{"type":"string","enum":["marketing","signup","subscription","top-up"]},"description":"Filter by term types:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"action":{"type":"array","items":{"type":"string","enum":["agreed","rejected"]},"description":"Filter by consent actions:\n- agreed: User agreed to the terms\n- rejected: User rejected the terms\n"},"after":{"type":"string","format":"date-time","description":"Filter consent history entries where the action occurred after this date (ISO 8601 formatted datetime)"},"before":{"type":"string","format":"date-time","description":"Filter consent history entries where the action occurred before this date (ISO 8601 formatted datetime)"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer","description":"The ID of the user who performed the consent action","readOnly":true},"termVersionId":{"type":"integer","description":"The ID of the specific term version for which the consent action was performed","readOnly":true},"termType":{"type":"string","readOnly":true,"enum":["marketing","signup","subscription","top-up"],"description":"The type of term:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"action":{"type":"string","readOnly":true,"enum":["agreed","rejected"],"description":"The consent action that was performed:\n- agreed: User agreed to the terms\n- rejected: User rejected the terms\n","example":"agreed"},"actionAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["userId","termVersionId","termType","action","actionAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/consents/v1.0":{"get":{"operationId":"consentsListing","summary":"Consents / Listing","description":"Retrieve consent data for users","tags":["resource / consents"],"parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"userId":{"type":"array","items":{"type":"integer"},"description":"Filter consents by specific user IDs"},"termType":{"type":"array","items":{"type":"string","enum":["marketing","signup","subscription","top-up"]},"description":"Filter by term types:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"status":{"type":"array","items":{"type":"string","enum":["agreed","rejected"]},"description":"Filter by consent statuses:\n- agreed: User has agreed to the terms\n- rejected: User has explicitly rejected the terms\n"},"agreedAfter":{"type":"string","format":"date-time","description":"Filter consents agreed after this date (ISO 8601 formatted date)"},"agreedBefore":{"type":"string","format":"date-time","description":"Filter consents agreed before this date (ISO 8601 formatted date)"},"rejectedAfter":{"type":"string","format":"date-time","description":"Filter consents rejected after this date (ISO 8601 formatted date)"},"rejectedBefore":{"type":"string","format":"date-time","description":"Filter consents rejected before this date (ISO 8601 formatted date)"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer","description":"The ID of the user who gave or rejected consent","readOnly":true},"termVersionId":{"type":"integer","description":"The ID of the specific term version for which consent was given or rejected","readOnly":true},"termType":{"type":"string","readOnly":true,"enum":["marketing","signup","subscription","top-up"],"description":"The type of term:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"status":{"type":"string","enum":["agreed","rejected"],"description":"The consent status:\n- agreed: User has agreed to the terms\n- rejected: User has explicitly rejected the terms\n","example":"agreed"},"collection":{"type":"string","enum":["explicit","automatic"],"description":"Defines how consent is collected:\n- **explicit**: Requires user explicit confirmation\n- **automatic**: Assumes consent upon use\n"},"source":{"type":"string","readOnly":true,"enum":["app","api"],"description":"Where the consent originated:\n- app: Consent created via mobile application\n- api: Consent created via API endpoint\n"},"agreedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"rejectedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"termVersionIsActive":{"type":"boolean","description":"Whether the associated term version is currently active (not past or future)","readOnly":true}},"required":["userId","termVersionId","termType","status","collection","source","termVersionIsActive"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"consentsCreate","summary":"Consents / Create","description":"Create user consent for a specific term version. If a consent already exists for the given user and term version combination, the request will fail with a 409 Conflict error.","tags":["resource / consents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"integer","description":"The ID of the user for whom consent is being created"},"termVersionId":{"type":"integer","description":"The ID of the specific term version for which consent is being given or rejected"},"status":{"type":"string","enum":["agreed","rejected"],"description":"The consent status:\n- agreed: User has agreed to the terms\n- rejected: User has explicitly rejected the terms\n","example":"agreed"}},"required":["userId","termVersionId","status"]}}}},"responses":{"201":{"description":"Consent created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"userId":{"type":"integer","description":"The ID of the user who gave or rejected consent","readOnly":true},"termVersionId":{"type":"integer","description":"The ID of the specific term version for which consent was given or rejected","readOnly":true},"termType":{"type":"string","readOnly":true,"enum":["marketing","signup","subscription","top-up"],"description":"The type of term:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"status":{"type":"string","enum":["agreed","rejected"],"description":"The consent status:\n- agreed: User has agreed to the terms\n- rejected: User has explicitly rejected the terms\n","example":"agreed"},"collection":{"type":"string","enum":["explicit","automatic"],"description":"Defines how consent is collected:\n- **explicit**: Requires user explicit confirmation\n- **automatic**: Assumes consent upon use\n"},"source":{"type":"string","readOnly":true,"enum":["app","api"],"description":"Where the consent originated:\n- app: Consent created via mobile application\n- api: Consent created via API endpoint\n"},"agreedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"rejectedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"termVersionIsActive":{"type":"boolean","description":"Whether the associated term version is currently active (not past or future)","readOnly":true}},"required":["userId","termVersionId","termType","status","collection","source","termVersionIsActive"]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/contact-details/v2.0":{"get":{"operationId":"contactDetailsRead","summary":"Contact details / Read","tags":["resource / contact details"],"description":"Get the contact details","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"phone":{"type":"string","nullable":true},"lastUpdatedAt":{"allOf":[{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"deprecated":true}]}},"required":["email"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"contactDetailsUpdate","tags":["resource / contact details"],"summary":"Contact details / Update","description":"Update the contact details","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"phone":{"type":"string","nullable":true},"lastUpdatedAt":{"allOf":[{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"deprecated":true}]}},"required":["email"]}}}},"responses":{"200":{"description":"Contact details updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"phone":{"type":"string","nullable":true},"lastUpdatedAt":{"allOf":[{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"deprecated":true}]}},"required":["email"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"contactDetailsDelete","tags":["resource / contact details"],"summary":"Contact details / Delete","description":"Delete contact details","responses":{"204":{"description":"Contact details deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/cp-models/v1.0":{"get":{"deprecated":true,"operationId":"chargePointModelsListingDeprecated","tags":["resource / charge point models"],"summary":"Charge Point Models / Listing","description":"Get all Charge Point Models","parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"vendorId":{"type":"string"}}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"deprecated":true,"operationId":"chargePointModelCreateDeprecated","tags":["resource / charge point models"],"summary":"Charge Point Model / Create","description":"Create new Charge Point Model","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"vendorId":{"type":"integer"},"userManual":{"type":"string","format":"uri","description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface."}},"required":["name","vendorId"]}}}},"responses":{"201":{"description":"Charge Point Model created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/cp-models/v1.0/{modelId}":{"parameters":[{"name":"modelId","in":"path","schema":{"type":"integer"},"required":true}],"get":{"deprecated":true,"operationId":"chargePointModelReadDeprecated","summary":"Charge Point Model / Read","description":"Get a Charge Point Model","tags":["resource / charge point models"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"deprecated":true,"operationId":"chargePointModelUpdateDeprecated","summary":"Charge Point Model / Update","description":"Charge Point Model","tags":["resource / charge point models"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"vendorId":{"type":"integer"},"userManual":{"type":"string","format":"uri","description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface."}}}}}},"responses":{"200":{"description":"Charge Point Model updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"vendorId":{"type":"integer"},"defaultPhoto":{"type":"string","format":"uri","nullable":true,"description":"For home chargers the default photo for the model is shown in the mobile app. The image URL is available for 24 hours after generated."},"userManual":{"type":"string","format":"uri","nullable":true,"description":"A download link for the user manual. Shown in the mobile app for home chargers."},"installerManual":{"type":"string","format":"uri","description":"URL to an externally-hosted installer manual. The system stores this URL reference only (does not download or cache the document) and provides it to installers for viewing/downloading through the installer app interface. This field is omitted from the response when no installer manual is configured."}},"required":["id","name","vendorId","defaultPhoto","userManual"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"deprecated":true,"operationId":"chargePointModelDeleteDeprecated","summary":"Charge Point Model / Delete","description":"Delete a Charge Point Model","tags":["resource / charge point models"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/cp-vendors/v1.0":{"get":{"deprecated":true,"operationId":"chargePointVendorsListingDeprecated","tags":["resource / charge point vendors"],"summary":"Charge Point Vendors / Listing","description":"Get all Charge Point Vendors","parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"deprecated":true,"operationId":"chargePointVendorCreateDeprecated","tags":["resource / charge point vendors"],"summary":"Charge Point Vendor / Create","description":"Create new Charge Point Vendor","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}},"responses":{"201":{"description":"Charge Point Vendor created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/cp-vendors/v1.0/{vendorId}":{"parameters":[{"name":"vendorId","in":"path","schema":{"type":"integer"},"required":true}],"get":{"deprecated":true,"operationId":"chargePointVendorReadDeprecated","summary":"Charge Point Vendor / Read","description":"Get a Charge Point Vendor","tags":["resource / charge point vendors"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"deprecated":true,"operationId":"chargePointVendorUpdateDeprecated","summary":"Charge Point Vendor / Update","description":"Charge Point Vendor","tags":["resource / charge point vendors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Charge Point Vendor updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"deprecated":true,"operationId":"chargePointVendorDeleteDeprecated","summary":"Charge Point Vendor / Delete","description":"Delete a Charge Point Vendor","tags":["resource / charge point vendors"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/currencies/v2.0":{"get":{"operationId":"currenciesListing","summary":"Currencies / Listing","tags":["resource / currencies"],"parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true,"description":"The name is auto generated and is of format: alphabeticCode + {currency name}, for example EUR (Euro)."},"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"numericCode":{"type":"string","readOnly":true,"description":"The currency numeric code that corresponds to the alphabeticCode."},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"currencyCreate","tags":["resource / currencies"],"summary":"Currency / Create","description":"Create currency","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}}}},"responses":{"201":{"description":"Currency created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true,"description":"The name is auto generated and is of format: alphabeticCode + {currency name}, for example EUR (Euro)."},"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"numericCode":{"type":"string","readOnly":true,"description":"The currency numeric code that corresponds to the alphabeticCode."},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/currencies/v2.0/{currency}":{"parameters":[{"in":"path","name":"currency","schema":{"type":"integer"},"required":true}],"get":{"operationId":"currencyRead","summary":"Currency / Read","tags":["resource / currencies"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true,"description":"The name is auto generated and is of format: alphabeticCode + {currency name}, for example EUR (Euro)."},"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"numericCode":{"type":"string","readOnly":true,"description":"The currency numeric code that corresponds to the alphabeticCode."},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"currencyUpdate","summary":"Currency / Update","tags":["resource / currencies"],"description":"Update a currency","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}}}},"responses":{"200":{"description":"Currency updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true,"description":"The name is auto generated and is of format: alphabeticCode + {currency name}, for example EUR (Euro)."},"alphabeticCode":{"description":"The currency 3-letter code.","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"numericCode":{"type":"string","readOnly":true,"description":"The currency numeric code that corresponds to the alphabeticCode."},"prefix":{"type":"string","description":"When displaying amounts in this currency, the prefix is added in front of the amount. This could be symbols, for example $ or £.","nullable":true},"suffix":{"type":"string","description":"When displaying amounts in this currency, the suffix is added after the amount.","nullable":true},"decimal":{"type":"integer","description":"The actual precision of the currency. This is used when charging a payment method or calculating totals.","nullable":true},"unitPriceAndCalculationsDecimal":{"type":"integer","description":"Used when setting price per kWh and per minute in tariffs.","nullable":true},"enableUseOfMinorCurrencyUnit":{"type":"boolean","description":"When enabled, the minor currency unit is used to set electricity price threshold for flexible tariffs and to set electricity cost tracking in the home charging app. The minor currency unit for the US dollar, for example, is the cent."},"minorUnitSign":{"type":"string","description":"The sign or letter for the minor currency unit. For US dollar, for example, this could be \"¢\" or \"c\" for cents.","nullable":true}},"required":["alphabeticCode"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"currencyDeleteDeprecated","deprecated":true,"summary":"Currency / Delete","tags":["resource / currencies"],"description":"Delete a currency","responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/currency-rates/v1.0":{"post":{"operationId":"createCurrencyRate","tags":["resource / currency rates"],"summary":"Currency Rate / Create","description":"Create new Currency Rate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","description":"Base currency code (ISO 4217)","example":"EUR"},"target":{"type":"string","description":"Target currency code (ISO 4217)","example":"USD"},"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08}},"required":["base","target","rate"]}}}},"responses":{"201":{"description":"Currency Rate created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the currency rate","example":1},"base":{"type":"string","description":"The base currency code (ISO 4217)","example":"EUR"},"target":{"type":"string","description":"The target currency code (ISO 4217)","example":"USD"},"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08},"updatedAt":{"type":"string","format":"date-time","description":"The date and time when the currency rate was last updated","example":"2025-06-05T14:30:00+00:00"}},"required":["id","base","target","rate","updatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"listCurrencyRates","summary":"Currency Rate / Listing","description":"Get all Currency Rates","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"base":{"type":"string","description":"Filter by base currency code"},"target":{"type":"string","description":"Filter by target currency code"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter by records updated before a specific datetime"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter by records updated after a specific datetime"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / currency rates"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the currency rate","example":1},"base":{"type":"string","description":"The base currency code (ISO 4217)","example":"EUR"},"target":{"type":"string","description":"The target currency code (ISO 4217)","example":"USD"},"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08},"updatedAt":{"type":"string","format":"date-time","description":"The date and time when the currency rate was last updated","example":"2025-06-05T14:30:00+00:00"}},"required":["id","base","target","rate","updatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/currency-rates/v1.0/{currencyRate}":{"parameters":[{"name":"currencyRate","in":"path","schema":{"type":"integer"},"required":true}],"patch":{"operationId":"updateCurrencyRate","summary":"Currency Rate / Update","description":"Update Currency Rate","tags":["resource / currency rates"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08}},"required":["rate"]}}}},"responses":{"200":{"description":"Currency Rate updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the currency rate","example":1},"base":{"type":"string","description":"The base currency code (ISO 4217)","example":"EUR"},"target":{"type":"string","description":"The target currency code (ISO 4217)","example":"USD"},"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08},"updatedAt":{"type":"string","format":"date-time","description":"The date and time when the currency rate was last updated","example":"2025-06-05T14:30:00+00:00"}},"required":["id","base","target","rate","updatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"getCurrencyRate","summary":"Currency Rate / Read","description":"Get Currency Rate","tags":["resource / currency rates"],"responses":{"200":{"description":"Currency Rate returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the currency rate","example":1},"base":{"type":"string","description":"The base currency code (ISO 4217)","example":"EUR"},"target":{"type":"string","description":"The target currency code (ISO 4217)","example":"USD"},"rate":{"type":"number","format":"float","description":"The exchange rate from base to target currency","example":1.08},"updatedAt":{"type":"string","format":"date-time","description":"The date and time when the currency rate was last updated","example":"2025-06-05T14:30:00+00:00"}},"required":["id","base","target","rate","updatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteCurrencyRate","summary":"Currency Rate / Delete","description":"Delete Currency Rate","tags":["resource / currency rates"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/custom-fees/v2.0":{"get":{"operationId":"customFeesListing","tags":["resource / custom fees"],"summary":"Custom Fees / Listing","description":"Get all custom fees","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"transactionId":{"type":"integer","description":"The ID of the Transaction that the custom fee relates to."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"amount":{"type":"number","format":"decimal"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency."},"bankMessage":{"type":"string"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","createdAt","transactionId","amount","currency","bankMessage","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/custom-fees/v2.0/{customFee}":{"get":{"operationId":"customFeeRead","tags":["resource / custom fees"],"summary":"Custom Fee / Read","description":"Get a single custom fee","parameters":[{"in":"path","name":"customFee","description":"The custom fee ID","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"transactionId":{"type":"integer","description":"The ID of the Transaction that the custom fee relates to."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"amount":{"type":"number","format":"decimal"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency."},"bankMessage":{"type":"string"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","createdAt","transactionId","amount","currency","bankMessage","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/downtime-period-notices/v1.0":{"get":{"operationId":"getDowntimePeriodNotices","tags":["resource / downtime period notices"],"summary":"Downtime Period Notices / Listing","description":"Get all Downtime Period Notices","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"type":{"type":"string","enum":["downtime","exempt"]}}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","notice","createdAt","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"postDowntimePeriodNotice","tags":["resource / downtime period notices"],"summary":"Downtime Period Notices / Create","description":"Create Downtime Period Notice","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string","nullable":true}}}]},{"type":"object","required":["notice","type"]}]}}}},"responses":{"201":{"description":"Downtime Period Notice successfully created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","notice","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/downtime-period-notices/v1.0/{notice}":{"parameters":[{"name":"notice","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"getDowntimePeriodNotice","tags":["resource / downtime period notices"],"summary":"Downtime Period Notices / Read","description":"Get Downtime Period Notice","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","notice","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"patchDowntimePeriodNotice","tags":["resource / downtime period notices"],"summary":"Downtime Period Notices / Update","description":"Update Downtime Period Notice","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string","nullable":true}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["downtime","exempt"]},"notice":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","notice","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteDowntimePeriodNotice","tags":["resource / downtime period notices"],"summary":"Downtime Period Notices / Delete","description":"Delete Downtime Period Notice","responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-meters/v1.0":{"get":{"operationId":"electricityMetersLising","tags":["resource / electricity meters"],"summary":"Electricity Meters / Listing","description":"Get all electricity meters","parameters":[{"in":"query","name":"filter","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Electricity Meter.","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true}}},{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}],"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"electricityMeterCreate","tags":["resource / electricity meters"],"summary":"Electricity Meter / Create","description":"Create a new electricity meter","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}],"required":["name","integrationId"]}}}},"responses":{"201":{"description":"Request succeeded","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Electricity Meter.","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true}}},{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-meters/v1.0/{electricityMeter}":{"parameters":[{"name":"electricityMeter","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"electricityMeterRead","tags":["resource / electricity meters"],"summary":"Electricity Meter / Read","description":"Get information for an electricity meter by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Electricity Meter.","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true}}},{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"patch":{"operationId":"electricityMeterUpdate","tags":["resource / electricity meters"],"summary":"Electricity Meter / Update","description":"Update electricity meter","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}]}}}},"responses":{"200":{"description":"Electricity meter updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Electricity Meter.","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1,"readOnly":true}}},{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"string"},"integrationId":{"type":"integer","description":"The ID of an existing electricity meter integration."},"integrationParameters":{"type":"object","description":"Electricity meter integration parameters.","additionalProperties":{"type":"string"},"example":{"device_id":123456}}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"electricityMeterDelete","tags":["resource / electricity meters"],"summary":"Electricity Meter / Delete","description":"Delete an electricity meter.","responses":{"204":{"description":"Electricity meter deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v1.0":{"get":{"operationId":"electricityRatesListingDeprecated","deprecated":true,"tags":["resource / electricity rates"],"summary":"Electricity rates / Listing","description":"Get all Electricity rates","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"utilityId":{"type":"integer"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"electricityRateCreateDeprecated","deprecated":true,"tags":["resource / electricity rates"],"summary":"Electricity rate / Create","description":"Create a new Electricity rate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/electricity-rates/v1.0/{electricityRate}":{"get":{"operationId":"electricityRateReadDeprecated","deprecated":true,"tags":["resource / electricity rates"],"summary":"Electricity rate / Read","description":"Get a single Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"electricityRateUpdateDeprecated","deprecated":true,"tags":["resource / electricity rates"],"summary":"Electricity rate / Update","description":"Update a Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true},"pricingGranularityInMinutes":{"type":"integer","enum":[60,30,15]},"defaultPricePerKwh":{"type":"number","description":"If there is no pricing supplied for a time interval or no time interval at all, this price would be used."},"taxId":{"type":"integer","description":"Deprecated! Please use `taxPercentage` instead! This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax.","deprecated":true},"taxPercentage":{"type":"number","format":"float","multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be supplied including the tax."},"intervalPricing":{"type":"array","items":{"type":"object","properties":{"weekDays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["weekDays"]},"nullable":true,"description":"The time interval must be always the same for every single day through the week and could be either 15 min, 30 min or 60 min. The startAt and endAt must comply with this restriction."},"intervalSpecialPricing":{"type":"array","items":{"type":"object","properties":{"specialPricingName":{"type":"string"},"validOn":{"type":"array","items":{"type":"string","format":"date"},"description":"A list of dates when the special pricing would apply, e.g. holidays, promo days, etc."},"elements":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 00:00:00","example":"00:00:00"},"endAt":{"type":"string","pattern":"^\\d{2}:\\d{2}:\\d{2}$","description":"Example 01:00:00","example":"01:00:00"},"price":{"type":"number","nullable":true}},"required":["startAt","endAt"]}}},"required":["specialPricingName","validOn"]},"nullable":true,"description":"The same time interval as in intervalPricing must be used. The startAt and endAt must comply with this restriction."}},"required":["id","name","pricingGranularityInMinutes","defaultPricePerKwh"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"electricityRateDeleteDeprecated","deprecated":true,"tags":["resource / electricity rates"],"summary":"Electricity rate / Delete","description":"Delete a Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatesListing","summary":"Electricity rates / Listing","description":"Get all Electricity rates","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"utilityId":{"type":"integer"},"type":{"type":"string","enum":["admin_defined","octopus_go","agile_octopus","nord_pool"]}}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["admin_defined","octopus_go","agile_octopus","nord_pool"]},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}},"required":["id","operatorId","name","type","defaultPrice","taxPercentage"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"post":{"tags":["resource / electricity rates"],"operationId":"electricityRateCreate","summary":"Electricity rate / Create","description":"Create a new Electricity rate","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}}}],"required":["name","defaultPrice","taxPercentage"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["admin_defined","octopus_go","agile_octopus","nord_pool"]},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}},"required":["id","operatorId","name","type","defaultPrice","taxPercentage"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRateRead","summary":"Electricity rate / Read","description":"Get a single Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["admin_defined","octopus_go","agile_octopus","nord_pool"]},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}},"required":["id","operatorId","name","type","defaultPrice","taxPercentage"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"tags":["resource / electricity rates"],"operationId":"electricityRateUpdate","summary":"Electricity rate / Update","description":"Update a Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["admin_defined","octopus_go","agile_octopus","nord_pool"]},"utilityId":{"type":"integer","nullable":true,"description":"The id of the utility providing the electricity. Configured in the admin panel."},"defaultPrice":{"type":"number","format":"decimal","description":"The default price per kWh, which will be applied if there is no pricing supplied for a time interval.\nPrices of all electricity rates created through the Public API or the admin panel must include the tax in the price.\nPrice per kWh.\n"},"taxPercentage":{"type":"number","format":"float","nullable":true,"multipleOf":0.001,"minimum":0,"maximum":100,"example":12.532,"description":"This field is used only to indicate the applied tax. All Electricity Rate prices should be provided with the tax included in the price."}},"required":["id","operatorId","name","type","defaultPrice","taxPercentage"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"tags":["resource / electricity rates"],"operationId":"electricityRateDelete","summary":"Electricity rate / Delete","description":"Delete a Electricity rate","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/energy-mix":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRateEnergyMixRead","summary":"Electricity rate / Energy Mix / Read","description":"Get an electricity rate energy mix","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"solar":{"type":"number","description":"Represents what percent of the energy is generated from solar power.","minimum":0,"maximum":100,"default":0},"wind":{"type":"number","description":"Represents what percent of the energy is generated from wind turbines.","minimum":0,"maximum":100,"default":0},"hydro":{"type":"number","description":"Represents what percent of the energy is generated from hydropower.","minimum":0,"maximum":100,"default":0},"nuclear":{"type":"number","description":"Represents what percent of the energy is generated from nuclear power plants.","minimum":0,"maximum":100,"default":0},"coal":{"type":"number","description":"Represents what percent of the energy is generated from burning coal.","minimum":0,"maximum":100,"default":0},"naturalGas":{"type":"number","description":"Represents what percent of the energy is generated from natural gas.","minimum":0,"maximum":100,"default":0},"otherRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of renewable energy source. This could include any other renewable source not specifically listed.","minimum":0,"maximum":100,"default":0},"otherNonRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of non-renewable energy source. This could include any other non-renewable source not specifically listed.","minimum":0,"maximum":100,"default":0}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"tags":["resource / electricity rates"],"operationId":"electricityRateEnergyMixUpdate","summary":"Electricity rate / Energy Mix / Update","description":"Set an electricity rate energy mix. By default the energy mix generated with creation of the electricity rate is filled with 0.","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"solar":{"type":"number","description":"Represents what percent of the energy is generated from solar power.","minimum":0,"maximum":100,"default":0},"wind":{"type":"number","description":"Represents what percent of the energy is generated from wind turbines.","minimum":0,"maximum":100,"default":0},"hydro":{"type":"number","description":"Represents what percent of the energy is generated from hydropower.","minimum":0,"maximum":100,"default":0},"nuclear":{"type":"number","description":"Represents what percent of the energy is generated from nuclear power plants.","minimum":0,"maximum":100,"default":0},"coal":{"type":"number","description":"Represents what percent of the energy is generated from burning coal.","minimum":0,"maximum":100,"default":0},"naturalGas":{"type":"number","description":"Represents what percent of the energy is generated from natural gas.","minimum":0,"maximum":100,"default":0},"otherRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of renewable energy source. This could include any other renewable source not specifically listed.","minimum":0,"maximum":100,"default":0},"otherNonRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of non-renewable energy source. This could include any other non-renewable source not specifically listed.","minimum":0,"maximum":100,"default":0}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"solar":{"type":"number","description":"Represents what percent of the energy is generated from solar power.","minimum":0,"maximum":100,"default":0},"wind":{"type":"number","description":"Represents what percent of the energy is generated from wind turbines.","minimum":0,"maximum":100,"default":0},"hydro":{"type":"number","description":"Represents what percent of the energy is generated from hydropower.","minimum":0,"maximum":100,"default":0},"nuclear":{"type":"number","description":"Represents what percent of the energy is generated from nuclear power plants.","minimum":0,"maximum":100,"default":0},"coal":{"type":"number","description":"Represents what percent of the energy is generated from burning coal.","minimum":0,"maximum":100,"default":0},"naturalGas":{"type":"number","description":"Represents what percent of the energy is generated from natural gas.","minimum":0,"maximum":100,"default":0},"otherRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of renewable energy source. This could include any other renewable source not specifically listed.","minimum":0,"maximum":100,"default":0},"otherNonRenewable":{"type":"number","description":"Represents what percent of the energy is generated from any other type of non-renewable energy source. This could include any other non-renewable source not specifically listed.","minimum":0,"maximum":100,"default":0}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/price-periods":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsListing","summary":"Electricity rate / Price periods / Listing","description":"List all of the configured price period days (including week days and dates)","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"title":"Week Day Price Period","required":["weekDay","periods"],"type":"object","properties":{"weekDay":{"description":"The weekday that the provided periods apply to. Can be one of the listed days of the week or `any` to signify that the periods apply to any week day.\nOnce an electricity rate has `any` day defined, further requests providing a specific weekday will be rejected.\nOnce an electricity rate has a specific week day defined, further requests providing `any` will be rejected.\n","type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},{"title":"Date-specific Price Period","required":["date","periods"],"type":"object","properties":{"date":{"description":"The date that the provided periods apply to. Uses the YYYY-MM-DD date format.","type":"string","format":"date","example":"2024-10-28"},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/price-periods/date":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsDateListing","summary":"Electricity rate / Price periods / Date / Listing","description":"List all of the configured price period dates","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"title":"Date-specific Price Period","required":["date","periods"],"type":"object","properties":{"date":{"description":"The date that the provided periods apply to. Uses the YYYY-MM-DD date format.","type":"string","format":"date","example":"2024-10-28"},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/price-periods/date/{date}":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsDateRead","summary":"Electricity rate / Price periods / Date / Read","description":"Get the price periods for a specific date.","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"date","schema":{"type":"string","format":"date","example":"2024-10-28","description":"Uses the YYYY-MM-DD date format."},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Date-specific Price Period","required":["date","periods"],"type":"object","properties":{"date":{"description":"The date that the provided periods apply to. Uses the YYYY-MM-DD date format.","type":"string","format":"date","example":"2024-10-28"},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsDateCreateOrUpdate","summary":"Electricity rate / Price periods / Date / Create or update","description":"Update the price periods for a specific date. This operation will overwrite all existing periods for the given date, so a complete list must be provided","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"date","schema":{"type":"string","format":"date","example":"2024-10-28","description":"Uses the YYYY-MM-DD date format."},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}},"required":["periods"]}}}},"responses":{"200":{"description":"Date successfully updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Date-specific Price Period","required":["date","periods"],"type":"object","properties":{"date":{"description":"The date that the provided periods apply to. Uses the YYYY-MM-DD date format.","type":"string","format":"date","example":"2024-10-28"},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"201":{"description":"Date successfully created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Date-specific Price Period","required":["date","periods"],"type":"object","properties":{"date":{"description":"The date that the provided periods apply to. Uses the YYYY-MM-DD date format.","type":"string","format":"date","example":"2024-10-28"},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsDateDelete","summary":"Electricity rate / Price periods / Date / Delete","description":"Delete the price periods for a specific date.","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"date","schema":{"type":"string","format":"date","example":"2024-10-28","description":"Uses the YYYY-MM-DD date format."},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/price-periods/week-day":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsWeekDayListing","summary":"Electricity rate / Price periods / Week day / Listing","description":"List all of the configured price period week days","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"title":"Week Day Price Period","required":["weekDay","periods"],"type":"object","properties":{"weekDay":{"description":"The weekday that the provided periods apply to. Can be one of the listed days of the week or `any` to signify that the periods apply to any week day.\nOnce an electricity rate has `any` day defined, further requests providing a specific weekday will be rejected.\nOnce an electricity rate has a specific week day defined, further requests providing `any` will be rejected.\n","type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/electricity-rates/v2.0/{electricityRate}/price-periods/week-day/{weekDay}":{"get":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsWeekDayRead","summary":"Electricity rate / Price periods / Week day / Read","description":"Get the price periods for a specific week day.","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"weekDay","description":"The week day which is being requested, updated or deleted","schema":{"type":"string","description":"Can be one of the listed days of the week or `any`.","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Week Day Price Period","required":["weekDay","periods"],"type":"object","properties":{"weekDay":{"description":"The weekday that the provided periods apply to. Can be one of the listed days of the week or `any` to signify that the periods apply to any week day.\nOnce an electricity rate has `any` day defined, further requests providing a specific weekday will be rejected.\nOnce an electricity rate has a specific week day defined, further requests providing `any` will be rejected.\n","type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsWeekDayCreateaOrUpdate","summary":"Electricity rate / Price periods / Week day / Create or update","description":"Update the price periods for a specific week day. This operation will overwrite all existing periods for the given day, so a complete list must be provided","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"weekDay","description":"The week day which is being requested, updated or deleted","schema":{"type":"string","description":"Can be one of the listed days of the week or `any`.","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}},"required":["periods"]}}}},"responses":{"200":{"description":"Weekday successfully updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Week Day Price Period","required":["weekDay","periods"],"type":"object","properties":{"weekDay":{"description":"The weekday that the provided periods apply to. Can be one of the listed days of the week or `any` to signify that the periods apply to any week day.\nOnce an electricity rate has `any` day defined, further requests providing a specific weekday will be rejected.\nOnce an electricity rate has a specific week day defined, further requests providing `any` will be rejected.\n","type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"201":{"description":"Weekday successfully created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"title":"Week Day Price Period","required":["weekDay","periods"],"type":"object","properties":{"weekDay":{"description":"The weekday that the provided periods apply to. Can be one of the listed days of the week or `any` to signify that the periods apply to any week day.\nOnce an electricity rate has `any` day defined, further requests providing a specific weekday will be rejected.\nOnce an electricity rate has a specific week day defined, further requests providing `any` will be rejected.\n","type":"string","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"periods":{"type":"array","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"tags":["resource / electricity rates"],"operationId":"electricityRatePricePeriodsWeekDayDelete","summary":"Electricity rate / Price periods / Week day / Delete","description":"Delete the price periods for a specific week day.","parameters":[{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},{"in":"path","name":"weekDay","description":"The week day which is being requested, updated or deleted","schema":{"type":"string","description":"Can be one of the listed days of the week or `any`.","enum":["mon","tue","wed","thu","fri","sat","sun","any"]},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evse-downtime-periods/v1.0":{"get":{"operationId":"evseDowntimePeriodsListing","tags":["resource / evse downtime periods"],"summary":"EVSE Downtime Periods / Listing","description":"Get all EVSE Downtime Periods","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"evseId":{"type":"integer"},"chargePointId":{"type":"integer","description":"Filter the periods in which the evses belong to the charge point"},"locationId":{"type":"integer"},"entryMode":{"type":"string","enum":["manual","automatic"]},"type":{"type":"string","enum":["downtime","exempt"]},"startedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Resources with `startedAt >= startedAfter`."},"stoppedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Resources with `stoppedAt <= stoppedBefore`."},"durationLessThan":{"type":"integer","description":"Resources with duration in minutes less than or equal given value."},"durationGreaterThan":{"type":"integer","description":"Resources with duration in minutes greater than or equal given value."},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["statusLog"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"evseId":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point to which the EVSE belongs for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","evseId","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"evseDowntimePeriodCreate","summary":"EVSE Downtime Period / Create","description":"Create Manual Exempt EVSE Downtime Period","tags":["resource / evse downtime periods"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"evseId":{"type":"integer"},"noticeId":{"type":"integer","description":"Allowed only notice with `type = exempt`!"},"startedAt":{"type":"string","format":"date-time"},"endedAt":{"type":"string","format":"date-time"}},"required":["evseId","noticeId","startedAt","endedAt"]}}}},"responses":{"201":{"description":"EVSE Downtime Period created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"evseId":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point to which the EVSE belongs for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","evseId","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evse-downtime-periods/v1.0/{evseDowntimePeriod}":{"parameters":[{"name":"evseDowntimePeriod","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"evseDowntimePeriodRead","summary":"EVSE Downtime Period / Read","description":"Get EVSE Downtime Period","tags":["resource / evse downtime periods"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["statusLog"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"evseId":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point to which the EVSE belongs for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","evseId","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"evseDowntimePeriodUpdate","summary":"EVSE Downtime Period / Update","description":"Update EVSE Downtime Period","tags":["resource / evse downtime periods"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"noticeId":{"type":"integer","nullable":true},"startedAt":{"type":"string","format":"date-time","description":"Allowed only for downtime period with `type = exempt AND entryMode = manual`"},"endedAt":{"type":"string","format":"date-time","description":"Allowed only for downtime period with `type = exempt AND entryMode = manual`"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"evseId":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","description":"ID of the charge point to which the EVSE belongs for which the downtime period is recorded."},"startedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for entering a downtime period."},"endedAt":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 formatted date. The time at which the EVSE changed its status to meet the requirements for exiting the downtime period."},"statusLog":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}},"id":{"type":"integer","readOnly":true},"locationId":{"type":"integer","nullable":true,"readOnly":true,"description":"Id of associated location."},"entryMode":{"type":"string","enum":["manual","automatic"],"readOnly":true,"description":"* `manual` - created by an admin\n* `automatic` - created automatically by the system.\n"},"noticeId":{"type":"integer","description":"Id of the predefined notices from Downtime Period Notice Resource"},"type":{"type":"string","enum":["downtime","exempt"],"readOnly":true},"statuses":{"type":"object","properties":{"system":{"type":"string","enum":["enabled","disabled","out of order","demo"],"description":"Shows the system status of the Charge Point.\n  * `enabled` - the charge point is fully operative.\n  * `disabled` - the charge point would not be shown on the map if it is a commercial public or commercial private with the relevant option for visibility nor could be claimed or found by ID if it is personal (home). </br>\n  * `demo` - acts as a simulator so different setups could be tested.\n  * `out of order` - the charge point is visible and shared with users, but a charging session\n"},"network":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardware":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}},"readOnly":true,"required":["system","network","hardware"],"description":"A snapshot of the statuses of the charge point at the time of creation of the downtime period."}},"required":["id","evseId","chargePointId","locationId","entryMode","type","statuses","startedAt","endedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"evseDowntimePeriodDelete","summary":"EVSE Downtime Period / Delete","description":"Delete Manual Created EVSE Downtime Period","tags":["resource / evse downtime periods"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evse-downtime-periods/v1.0/{evseDowntimePeriod}/status-log":{"parameters":[{"name":"evseDowntimePeriod","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"evseDowntimePeriodStatusLog","summary":"EVSE Downtime Period / Status Log","description":"Get the StatusLog entry that triggered this downtime period","tags":["resource / evse downtime periods"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"The StatusLog entry that triggered this downtime period. Null when no trigger StatusLog exists (legacy records or manual entries).","required":["id","timestamp","status"],"properties":{"id":{"type":"integer","description":"StatusLog record identifier"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the status change was recorded","example":"2024-01-01T12:00:00Z"},"status":{"type":"string","description":"The hardware or network status value"},"errorCode":{"type":"string","description":"OCPP error code or \"NoError\"","example":"NoError"},"info":{"type":"string","description":"Additional information from the charge point","example":"Connector successfully locked"},"vendorId":{"type":"string","description":"Vendor identifier","example":"ABB"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Human-readable description from vendor catalog","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action from vendor catalog","example":"Please ensure the charging cable is properly connected"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0":{"get":{"operationId":"evsesListingDeprecated","deprecated":true,"tags":["resource / evses"],"summary":"EVSEs / Listing","description":"Get all EVSEs","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"chargePointId":{"type":"string","format":"integer","description":"Only list EVSE on a certain charge point"},"physicalReference":{"type":"string","description":"Only list EVSE, identified by id (QR Code)"},"evseStatus":{"type":"string","enum":["active","disabled","out of order"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Only list EVSE with this hardware status"},"evseType":{"type":"string","enum":["ac","dc"],"description":"Only list EVSE with this type"},"connectorId":{"type":"string","format":"integer","description":"Only list EVSE with this connector"},"tariffGroupId":{"type":"string","format":"integer","description":"Only list EVSE with this tariff group"},"partnerId":{"type":"string","format":"integer","description":"Only list EVSE with this partner"},"roamingPlatformId":{"type":"string","format":"integer","description":"Only list EVSE with this roaming platform"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","readOnly":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"nullable":true,"readOnly":true},"roaming":{"type":"object","nullable":true,"readOnly":true,"properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming.","nullable":true},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we reveived from roaming (as were specified by the CPO).","nullable":true}}},"connectors":{"nullable":true,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},{"type":"string","nullable":true}]},"format":{"type":"string","enum":["socket","cable"],"nullable":true},"status":{"type":"string","enum":["active","disabled"],"nullable":true}}}},"physicalReference":{"type":"string","description":"Unique identifier of the EVSE. QR code or EVSE ID for Roaming.\n"},"type":{"type":"string","enum":["ac","dc"]},"networkId":{"type":"string","description":"The identifier of the EVSE within the station. Protocol specific. For OCPP use consecutive numbers starting from 1\n"},"status":{"type":"string","enum":["active","disabled","out of order"]},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Indicates the evse capability of accepting reservations.\n"},"maxPowerKw":{"type":"number","nullable":true,"description":"The max power displayed for the EVSE in the app. This value is NOT enforced, it is just to be displayed in the app.\n"},"maxVoltage":{"allOf":[{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},{"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"}]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["rst","rts","srt","str","trs","tsr"]},"midMeterCertificationEndYear":{"type":"integer","nullable":true,"description":"The mid meter certification end year."},"externalId":{"type":"string","nullable":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this EVSE will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n","readOnly":true}}}],"required":["physicalReference","type","maxVoltage","phases","networkId","status","allowsReservation"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"evseReadDeprecated","deprecated":true,"summary":"EVSE / Read","description":"Get a EVSE","tags":["resource / evses"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","readOnly":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"nullable":true,"readOnly":true},"roaming":{"type":"object","nullable":true,"readOnly":true,"properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming.","nullable":true},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we reveived from roaming (as were specified by the CPO).","nullable":true}}},"connectors":{"nullable":true,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},{"type":"string","nullable":true}]},"format":{"type":"string","enum":["socket","cable"],"nullable":true},"status":{"type":"string","enum":["active","disabled"],"nullable":true}}}},"physicalReference":{"type":"string","description":"Unique identifier of the EVSE. QR code or EVSE ID for Roaming.\n"},"type":{"type":"string","enum":["ac","dc"]},"networkId":{"type":"string","description":"The identifier of the EVSE within the station. Protocol specific. For OCPP use consecutive numbers starting from 1\n"},"status":{"type":"string","enum":["active","disabled","out of order"]},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Indicates the evse capability of accepting reservations.\n"},"maxPowerKw":{"type":"number","nullable":true,"description":"The max power displayed for the EVSE in the app. This value is NOT enforced, it is just to be displayed in the app.\n"},"maxVoltage":{"allOf":[{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},{"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"}]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["rst","rts","srt","str","trs","tsr"]},"midMeterCertificationEndYear":{"type":"integer","nullable":true,"description":"The mid meter certification end year."},"externalId":{"type":"string","nullable":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this EVSE will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n","readOnly":true}}}],"required":["physicalReference","type","maxVoltage","phases","networkId","status","allowsReservation"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"evseUpdateDeprecated","deprecated":true,"summary":"EVSE / Update","description":"Update a EVSE","tags":["resource / evses"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","readOnly":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"nullable":true,"readOnly":true},"roaming":{"type":"object","nullable":true,"readOnly":true,"properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming.","nullable":true},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we reveived from roaming (as were specified by the CPO).","nullable":true}}},"connectors":{"nullable":true,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},{"type":"string","nullable":true}]},"format":{"type":"string","enum":["socket","cable"],"nullable":true},"status":{"type":"string","enum":["active","disabled"],"nullable":true}}}},"physicalReference":{"type":"string","description":"Unique identifier of the EVSE. QR code or EVSE ID for Roaming.\n"},"type":{"type":"string","enum":["ac","dc"]},"networkId":{"type":"string","description":"The identifier of the EVSE within the station. Protocol specific. For OCPP use consecutive numbers starting from 1\n"},"status":{"type":"string","enum":["active","disabled","out of order"]},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Indicates the evse capability of accepting reservations.\n"},"maxPowerKw":{"type":"number","nullable":true,"description":"The max power displayed for the EVSE in the app. This value is NOT enforced, it is just to be displayed in the app.\n"},"maxVoltage":{"allOf":[{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},{"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"}]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["rst","rts","srt","str","trs","tsr"]},"midMeterCertificationEndYear":{"type":"integer","nullable":true,"description":"The mid meter certification end year."},"externalId":{"type":"string","nullable":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this EVSE will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n","readOnly":true}}}],"required":["physicalReference","type","maxVoltage","phases","networkId","status","allowsReservation"]}}}},"responses":{"200":{"description":"EVSE updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePointId":{"type":"integer","readOnly":true},"chargingProfile":{"type":"object","properties":{"id":{"type":"integer"},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"scheduleStart":{"type":"string","format":"datetime","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"chargingCompleteAt":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"datetime","nullable":true},"validFrom":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}},"nullable":true,"readOnly":true},"roaming":{"type":"object","nullable":true,"readOnly":true,"properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming.","nullable":true},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we reveived from roaming (as were specified by the CPO).","nullable":true}}},"connectors":{"nullable":true,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"allOf":[{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},{"type":"string","nullable":true}]},"format":{"type":"string","enum":["socket","cable"],"nullable":true},"status":{"type":"string","enum":["active","disabled"],"nullable":true}}}},"physicalReference":{"type":"string","description":"Unique identifier of the EVSE. QR code or EVSE ID for Roaming.\n"},"type":{"type":"string","enum":["ac","dc"]},"networkId":{"type":"string","description":"The identifier of the EVSE within the station. Protocol specific. For OCPP use consecutive numbers starting from 1\n"},"status":{"type":"string","enum":["active","disabled","out of order"]},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Indicates the evse capability of accepting reservations.\n"},"maxPowerKw":{"type":"number","nullable":true,"description":"The max power displayed for the EVSE in the app. This value is NOT enforced, it is just to be displayed in the app.\n"},"maxVoltage":{"allOf":[{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},{"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"}]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["rst","rts","srt","str","trs","tsr"]},"midMeterCertificationEndYear":{"type":"integer","nullable":true,"description":"The mid meter certification end year."},"externalId":{"type":"string","nullable":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this EVSE will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n","readOnly":true}}}],"required":["physicalReference","type","maxVoltage","phases","networkId","status","allowsReservation"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}/hardware-status-logs":{"parameters":[{"name":"evse","in":"path","description":"The unique ID of the EVSE","required":true,"schema":{"type":"integer","example":5678}}],"get":{"operationId":"listEvseHardwareStatusLogs","summary":"EVSE / Hardware Status Logs / Listing","description":"Get paginated list of hardware status logs for an EVSE with optional date filtering","parameters":[{"name":"filter","in":"query","description":"Filter options for status logs","required":false,"style":"deepObject","schema":{"type":"object","properties":{"createdAfter":{"description":"ISO 8601 formatted date. Only list status logs created after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Only list status logs created before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / evses"],"responses":{"200":{"description":"List of hardware status logs returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["status","timestamp","errorCode"],"properties":{"status":{"type":"string","description":"Hardware status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"},"errorCode":{"type":"string","description":"The type of error or \"NoError\"","example":"NoError"},"vendorId":{"type":"string","description":"The ID of the vendor","example":"ABB"},"info":{"type":"string","description":"Additional information about the status","example":"Connector successfully locked"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Detailed description of the vendor error code","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action for the customer","example":"Please ensure the charging cable is properly connected"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}/latest-hardware-status-log":{"parameters":[{"name":"evse","in":"path","description":"The unique ID of the EVSE","required":true,"schema":{"type":"integer","example":5678}}],"get":{"operationId":"getEvseLatestHardwareStatusLog","summary":"EVSE / Latest Hardware Status Log","description":"Get the latest hardware status log entry for an EVSE","tags":["resource / evses"],"responses":{"200":{"description":"Latest hardware status log returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["status","timestamp","errorCode"],"properties":{"status":{"type":"string","description":"Hardware status at the time of this log entry"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the entry was recorded","example":"2024-01-01T12:00:00Z"},"errorCode":{"type":"string","description":"The type of error or \"NoError\"","example":"NoError"},"vendorId":{"type":"string","description":"The ID of the vendor","example":"ABB"},"info":{"type":"string","description":"Additional information about the status","example":"Connector successfully locked"},"vendorErrorCode":{"type":"string","description":"Vendor-specific error code","example":"E001"},"errorCodeDescription":{"type":"string","description":"Detailed description of the vendor error code","example":"Communication timeout with vehicle"},"errorCodeCustomerAction":{"type":"string","description":"Recommended action for the customer","example":"Please ensure the charging cable is properly connected"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}/notes":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"EVSE ID"}],"get":{"operationId":"evseNotesListing","tags":["resource / evses"],"summary":"EVSE / Notes / Listing","description":"List all notes for a specific EVSE.\n\nNotes are returned with pinned notes first, then ordered by creation date descending.\n\n**Required permission:** `Notes.view`\n","parameters":[{"name":"filter","in":"query","style":"deepObject","schema":{"type":"object","properties":{"pinned":{"type":"boolean","description":"Filter by pinned status","example":true},"createdAfter":{"type":"string","format":"date-time","description":"Filter notes created on or after this ISO-8601 datetime","example":"2025-01-01T00:00:00Z"},"createdBefore":{"type":"string","format":"date-time","description":"Filter notes created on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter notes updated on or after this ISO-8601 datetime (useful for delta sync)","example":"2025-12-01T00:00:00Z"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter notes updated on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"evseNoteCreate","tags":["resource / evses"],"summary":"EVSE / Note / Create","description":"Create a new note for a specific EVSE.\n\n**Required permission:** `Notes.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["summary"],"properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note (required)","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note (optional)","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","default":false,"description":"Whether the note should be pinned (optional, defaults to false)","example":false}}}}}},"responses":{"201":{"description":"Note created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}/notes/{note}":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true,"description":"EVSE ID"},{"name":"note","in":"path","schema":{"type":"integer"},"required":true,"description":"Note ID"}],"get":{"operationId":"evseNoteShow","tags":["resource / evses"],"summary":"EVSE / Note / Read","description":"Get a specific note for an EVSE.\n\n**Required permission:** `Notes.view`\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"evseNoteUpdate","tags":["resource / evses"],"summary":"EVSE / Note / Update","description":"Update a specific note for an EVSE.\n\n**Required permissions:**\n- `Notes.update` for updating summary and details\n- `Notes.pin` for updating the pinned field (in addition to Notes.update if other fields are included)\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Updated maintenance note"},"details":{"type":"string","maxLength":2000,"nullable":true,"description":"Detailed content of the note. Send null to clear.","example":"Updated inspection schedule."},"pinned":{"type":"boolean","description":"Whether the note should be pinned. Requires Notes.pin permission.","example":true}}}}}},"responses":{"200":{"description":"Note updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"evseNoteDelete","tags":["resource / evses"],"summary":"EVSE / Note / Delete","description":"Delete a specific note from an EVSE.\n\nNotes are permanently deleted (hard delete).\n\n**Required permission:** `Notes.delete`\n","responses":{"204":{"description":"Note deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.0/{evse}/status":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}]},"/public-api/resources/evses/v2.1":{"post":{"operationId":"evseCreate","tags":["resource / evses"],"summary":"EVSE / Create","description":"Create new EVSE","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"chargePointId":{"type":"integer","description":"The ID of the charge point."}},"required":["chargePointId"]},{"required":["physicalReference","currentType","networkId","status"],"type":"object","properties":{"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year.","nullable":true},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked. Requires the Bookings to be activated for the operator and automatically enables allowsReservation when set to true."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"}}}]}}}},"responses":{"201":{"description":"EVSE created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"chargePointId":{"type":"integer","description":"The ID of the charge point."}},"required":["chargePointId"]},{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"evsesListing","summary":"EVSEs / Listing","description":"Get all EVSEs","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"chargePointId":{"type":"string","format":"integer","description":"Only list EVSEs on a certain charge point"},"physicalReference":{"type":"string","description":"Only list EVSEs, identified by id (QR Code)"},"externalId":{"type":"string","description":"Only list EVSEs, identified by externalId"},"roaming":{"type":"boolean","description":"If true, only roaming EVSEs will be returned. If false, only local EVSEs will be returned. If not passing, all EVSEs will be returned."},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"},"hasRoamingTariffIds":{"type":"boolean","description":"If true, only EVSEs with non-empty roaming.tariffIds array will be returned. If false, only EVSEs without roaming.tariffIds (null, empty array, or no roaming record) will be returned."},"hasTariffGroup":{"type":"boolean","description":"If true, only EVSEs with a tariffGroupId will be returned. If false, only EVSEs without a tariffGroupId will be returned."},"roamingOperatorIds":{"type":"array","items":{"type":"integer"},"description":"Array of roaming operator IDs. Only EVSEs belonging to one or more of the specified roaming operators will be returned."},"parkingSpaceId":{"type":"integer","description":"Filter EVSEs by associated parking space ID"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Filter EVSEs by current type. If 'ac', only AC EVSEs will be returned. If 'dc', only DC EVSEs will be returned. If not provided, all EVSEs will be returned."}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","externalAppData","notes"]}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / evses"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"chargePointId":{"type":"integer","description":"The ID of the charge point."}},"required":["chargePointId"]},{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/evses/v2.1/{evse}":{"parameters":[{"name":"evse","in":"path","schema":{"type":"integer"},"required":true}],"patch":{"operationId":"evseUpdate","summary":"EVSE / Update","description":"Update an EVSE","tags":["resource / evses"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","externalAppData","notes"]}},"deprecated":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year.","nullable":true},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","nullable":true},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked. Requires the Bookings to be activated for the operator and automatically enables allowsReservation when set to true."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"}}}}}},"responses":{"200":{"description":"EVSE updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"chargePointId":{"type":"integer","description":"The ID of the charge point."}},"required":["chargePointId"]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"accessibleParkingSpaces":{"type":"array","description":"Parking spaces accessible from this EVSE. Only included when include=accessibleParkingSpaces.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"evseRead","summary":"EVSE / Read","description":"Get an EVSE","tags":["resource / evses"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingProfile","connectors","externalAppData","notes","accessibleParkingSpaces"]}}}],"responses":{"200":{"description":"EVSE returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"chargePointId":{"type":"integer","description":"The ID of the charge point."}},"required":["chargePointId"]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to. Null for roaming EVSEs.","example":1},"physicalReference":{"type":"string","description":"The identifier that is presented to the users, so they can identify the EVSE at the location."},"emi3Id":{"type":"string","readOnly":true,"example":"BE*FOO*E1234","description":"The full EVSE identifier in EMI3 format (e.g., `BE*FOO*E1234`).\nFor local EVSEs, this is constructed as `{CountryCode}*{PartyId}*E{PhysicalReference}`,\nwhere `CountryCode` and `PartyId` come from the operator's roaming configuration\nand `PhysicalReference` is the EVSE's PhysicalReference.\nFor roaming EVSEs, this is the identifier as received from the roaming CPO (same value as `roaming.evseId`).\nOmitted from the response when the operator does not have a roaming party ID and country code configured.\n"},"label":{"type":"string","description":"The EVSE label will be exposed and visualized in the mobile application"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)"},"status":{"type":"string","description":"For roaming EVSEs the status can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO.","enum":["enabled","disabled","out of order"]},"midMeterCertificationEndYear":{"type":"integer","description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","description":"The ID of the tariff group attached to the EVSE. If the EVSE is not roaming and tariffGroupId is not specified, the default (free) tariff will be assigned. For roaming EVSEs the Tariff Group can only be updated if the option for manual management of EVSEs is enabled for the roaming CPO."},"allowsReservation":{"type":"boolean","description":"Manages whether reservations are allowed on this EVSE. Requires the Reservations to be activated for the system in order to enable for the EVSE."},"bookingEnabled":{"type":"boolean","description":"Indicates if the EVSE can be booked."},"monitoringEnabled":{"type":"boolean","description":"When disabled, this EVSE will not be listed or counted in the Faults & connectivity loss widget or lens. The charge point will still appear for charge point-level faults (network loss, hardware faulted). Defaults to true."},"powerOptions":{"type":"object","properties":{"maxPower":{"type":"integer","description":"in Wh","nullable":true},"maxVoltage":{"nullable":true,"description":"The maxVoltage of a charge point can fluctuate. Hence, when creating a charge point in the system, the maxVoltage is given as a range. For OCPI purposes it maps as follows: 220-240 = 230 110-130 = 120 400 = 400 380 = 380\n","type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"maxAmperage":{"type":"number","nullable":true},"phases":{"type":"string","nullable":true,"enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}}},"externalId":{"type":"string"},"roamingOperatorId":{"description":"For roaming EVSE's, the ID of the roaming operator is provided.","type":"integer"},"roaming":{"type":"object","properties":{"evseId":{"type":"string","description":"The EVSE identifier that is received through roaming. For example \"DE*ABC*E1234\".","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariff IDs that we receive from roaming (as specified by the CPO)."},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO."},"physicalReference":{"type":"string","nullable":true,"description":"A number/string printed on the outside of the EVSE for visual."},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}},"required":["evseId","tariffIds","capabilities","physicalReference","status"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted","occupied"],"nullable":true,"description":"Status reported by the charge point's evse:\n\n`available` - When a connector becomes available for a new user (Operative)\n\n`preparing` - When a connector becomes no longer available for a new user but there is no ongoing transaction (yet). Typically a connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n\n`charging` - When the contactor of a connector closes, allowing the vehicle to charge (operative)\n\n`suspendedEVSE` - When the vehicle is connected to the evse but the evse is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (operative)\n\n`suspendedEV` - When the vehicle is connected to the evse and the evse is offering energy but the vehicle is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (operative)\n\n`finishing` - When a transaction has stopped at a connector, but the connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (operative)\n\n`reserved` - When a evse becomes reserved as a result of a *reserve now* command (operative)\n\n`unavailable` - When a evse becomes unavailable as the result of a *change availability* command or an event upon which the charge point transitions to unavailable at its discretion. Upon receipt of a change availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the status notification shall be sent when the availability change becomes effective (inoperative)\n\n`faulted` - When a charge point or connector has reported an error and is not available for energy delivery (inoperative).\n\n`occupied` - If OCPP 2.0.1 is used, the EVSE hardware status is occupied when in session.\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past.\n"},"chargingProfile":{"type":"object","nullable":true,"properties":{"id":{"type":"integer","readOnly":true},"minChargingRate":{"type":"number","nullable":true},"schedulePeriods":{"type":"array","items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","description":"A number with not more than one decimal (decimal places <= 1)"},"numberPhases":{"type":"integer"}},"required":["startPeriod","limit"]}},"scheduleStart":{"type":"string","format":"date-time","nullable":true},"chargingRateUnit":{"type":"string","enum":["A","W"]},"stackLevel":{"type":"integer"},"chargingProfileKind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrencyKind":{"type":"string","enum":["Daily","Weekly"],"nullable":true},"chargingCompleteAt":{"type":"string","format":"date-time","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"validTo":{"type":"string","format":"date-time","nullable":true},"validFrom":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true}},"required":["id","minChargingRate","schedulePeriods","scheduleStart","chargingRateUnit","stackLevel","chargingProfileKind","recurrencyKind","chargingCompleteAt","purpose","validTo","validFrom","duration"]},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","gb-t-ac","gb-t-dc","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **gb-t-ac**: GB/T AC connector (Chinese standard)\n- **gb-t-dc**: GB/T DC connector (Chinese standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]},"status":{"type":"string","enum":["enabled","disabled"]}},"required":["id","type"]}},"externalAppData":{"description":"Used to hold any external application data related to the EVSE.","type":"object","nullable":true,"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","physicalReference","currentType","networkId","status","hardwareStatus","roamingOperatorId","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"accessibleParkingSpaces":{"type":"array","description":"Parking spaces accessible from this EVSE. Only included when include=accessibleParkingSpaces.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"evseDelete","summary":"EVSE / Delete","description":"Delete an EVSE","tags":["resource / evses"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/faqs/v2.0":{"get":{"operationId":"faqsListing","tags":["resource / faqs"],"summary":"FAQs / Listing","description":"Get all FAQs","parameters":[{"in":"query","name":"filter","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","question","answer","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"faqCreate","tags":["resource / faqs"],"summary":"FAQ / Create","description":"Create new FAQ","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["question","answer"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","question","answer","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/faqs/v2.0/{faq}":{"parameters":[{"name":"faq","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"faqRead","summary":"FAQ / Read","description":"Get a FAQ","tags":["resource / faqs"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","question","answer","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"faqUpdate","summary":"FAQ / Update","description":"FAQs","tags":["resource / faqs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"question":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"answer":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","question","answer","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"faqDelete","summary":"FAQ / Delete","description":"Delete a FAQ","tags":["resource / faqs"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/firmware-versions/v1.0":{"get":{"operationId":"firmwareVersionsListing","tags":["resource / firmware versions"],"summary":"Firmware Versions / Listing","description":"Get all Firmware Versions","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"vendorId":{"type":"array","items":{"type":"integer"},"description":"Filter by charge point vendor IDs."},"modelId":{"type":"array","items":{"type":"integer"},"description":"Filter by charge point model IDs."},"firmwareVersion":{"type":"string","description":"Filter by firmware version string. Matches both exact versions and versions that begin with the search string (e.g., \"1.2\" will match exactly \"1.2\" as well as versions like \"1.2.0\", \"1.2.3\", etc.)."}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["models"]}},"description":"Include related resources. Use 'models' to include compatible charge point models."}],"responses":{"200":{"description":"Successfully retrieved the list of firmware versions","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the firmware version"},"firmwareVersion":{"type":"string","description":"Version string of the firmware"},"details":{"type":"string","description":"Additional details about the firmware version"},"chargePointVendorId":{"type":"integer","description":"ID of the charge point vendor associated with this firmware version"},"fileUrl":{"type":"string","format":"uri","description":"Temporary URL to download the firmware file. Valid for 24 hours."},"signingCertificate":{"type":"string","description":"The certificate used to sign the firmware"},"signature":{"type":"string","description":"The digital signature of the firmware"},"models":{"type":"array","items":{"type":"integer"},"description":"IDs of charge point models compatible with this firmware version. Only included when requested with include[]=models.","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","firmwareVersion","chargePointVendorId","createdAt","updatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/firmware-versions/v1.0/{firmwareVersion}":{"parameters":[{"in":"path","name":"firmwareVersion","description":"The ID of the firmware version","schema":{"type":"integer"},"required":true}],"get":{"operationId":"firmwareVersionRead","summary":"Firmware Version / Read","description":"Get a Firmware Version","tags":["resource / firmware versions"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["models"]}},"description":"Include related resources. Use 'models' to include compatible charge point models."}],"responses":{"200":{"description":"Successfully retrieved the firmware version details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the firmware version"},"firmwareVersion":{"type":"string","description":"Version string of the firmware"},"details":{"type":"string","description":"Additional details about the firmware version"},"chargePointVendorId":{"type":"integer","description":"ID of the charge point vendor associated with this firmware version"},"fileUrl":{"type":"string","format":"uri","description":"Temporary URL to download the firmware file. Valid for 24 hours."},"signingCertificate":{"type":"string","description":"The certificate used to sign the firmware"},"signature":{"type":"string","description":"The digital signature of the firmware"},"models":{"type":"array","items":{"type":"integer"},"description":"IDs of charge point models compatible with this firmware version. Only included when requested with include[]=models.","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","firmwareVersion","chargePointVendorId","createdAt","updatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/firmware-versions/v1.0/{firmwareVersion}/attached-models":{"parameters":[{"in":"path","name":"firmwareVersion","description":"The ID of the firmware version","schema":{"type":"integer"},"required":true}],"get":{"operationId":"firmwareVersionAttachedModels","summary":"Firmware Version / Attached Models","description":"Get all charge point models attached to this firmware version","tags":["resource / firmware versions"],"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Successfully retrieved the list of attached charge point models","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"integer"},"description":"IDs of charge point models compatible with this firmware version"},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-activation-requests/v1.0":{"get":{"operationId":"listFlexibilityActivationRequests","summary":"Flexibility Activation Requests / Listing","description":"Get a list of Flexibility Requests","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"name":"filter","in":"query","required":false,"description":"Filter for the requests based on assetId","style":"deepObject","explode":true,"schema":{"type":"object","properties":{"assetId":{"type":"string","description":"The ID of the Flexibility Asset to filter requests by"}}}}],"tags":["resource / flexibility activation requests"],"responses":{"200":{"description":"A list of Flexibility Activation Requests","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Activation Request","readOnly":true},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the request creation","readOnly":true},"assetId":{"type":"number","description":"ID of the Flexibility Asset related to the request","readOnly":true},"periods":{"type":"array","items":{"allOf":[{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"energy":{"type":"integer","format":"int64","description":"The target energy (Wh) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true},"maxPower":{"type":"integer","format":"int64","description":"The target power (W) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true}}}]}}},"required":["id","assetId","timestamp","periods"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-activation-requests/v1.0/{flexibilityActivationRequest}":{"parameters":[{"name":"flexibilityActivationRequest","in":"path","required":true,"description":"ID of the Flexibility Activation Request","schema":{"type":"integer"}}],"get":{"operationId":"getFlexibilityActivationRequest","summary":"Flexibility Activation Requests / Read","description":"Get a flexibility activation request","tags":["resource / flexibility activation requests"],"responses":{"200":{"description":"Flexibility request returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Activation Request","readOnly":true},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the request creation","readOnly":true},"assetId":{"type":"number","description":"ID of the Flexibility Asset related to the request","readOnly":true},"periods":{"type":"array","items":{"allOf":[{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"energy":{"type":"integer","format":"int64","description":"The target energy (Wh) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true},"maxPower":{"type":"integer","format":"int64","description":"The target power (W) that the system should achieve during the specified time period. Only one is required: maxPower or energy.\n","nullable":true}}}]}}},"required":["id","assetId","timestamp","periods"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-assets/v1.0":{"post":{"operationId":"createFlexibilityAsset","tags":["resource / flexibility assets"],"summary":"Flexibility Assets / Create","description":"Create new flexibility asset","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}],"required":["dlmCircuitId","status","integrationId"]}}}},"responses":{"201":{"description":"Flexibility asset created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"listFlexibilityAssets","summary":"Flexibility Assets / Listing","description":"Get a list of Flexibility Assets","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"name":"filter","in":"query","required":false,"description":"Filters for the time range (updatedSince)","style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"updatedSince":{"description":"Filter for the assets updated since the given timestamp","type":"string","format":"date-time"}}}}],"tags":["resource / flexibility assets"],"responses":{"200":{"description":"A list of Flexibility Assets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}],"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-assets/v1.0/{flexibilityAsset}":{"parameters":[{"name":"flexibilityAsset","in":"path","required":true,"description":"ID of the Flexibility Asset","schema":{"type":"integer"}}],"patch":{"operationId":"updateFlexibilityAsset","summary":"Flexibility Assets / Update","description":"Update a flexibility asset. Changing the circuit will permanently delete all existing historical and forecast time series data and regenerate new data based on the selected circuit.","tags":["resource / flexibility assets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}]}}}},"responses":{"200":{"description":"Flexibility Asset updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"getFlexibilityAsset","summary":"Flexibility Assets / Read","description":"Get a flexibility asset","tags":["resource / flexibility assets"],"responses":{"200":{"description":"Flexibility asset returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"number","description":"Unique ID of the Flexibility Asset.","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"dlmCircuitId":{"type":"number","description":"ID of the DLM circuit."},"description":{"type":"string","description":"Short description of the flexibility asset.","nullable":true},"downwardRegulationLimit":{"type":"integer","format":"int64","description":"Downward regulation limit in Watts.","readOnly":true},"upwardRegulationLimit":{"type":"integer","format":"int64","description":"Upward regulation limit in Watts.","readOnly":true}}},{"type":"object","properties":{"integrationId":{"type":"number","description":"Flexibility integration."},"integrationParameters":{"type":"object","description":"Flexibility integration parameters.","additionalProperties":true}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"endsAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. If an end date is set the asset will be automatically disabled at that time. Historical time series and forecasts are not generated after the end date."}}}],"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteFlexibilityAsset","summary":"Flexibility Assets / Delete","description":"Delete a flexibility asset","tags":["resource / flexibility assets"],"responses":{"204":{"description":"Flexibility asset deleted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-assets/v1.0/{flexibilityAsset}/historical-time-series":{"get":{"operationId":"getHistoricalTimeSeries","summary":"Flexibility Assets / Historical Time Series","description":"Get Historical Time Series for a Flexibility Asset","parameters":[{"name":"flexibilityAsset","in":"path","required":true,"description":"ID of the Flexibility Asset","schema":{"type":"integer"}},{"name":"filter","in":"query","required":false,"description":"Filters for the time range (startTime and endTime)","style":"deepObject","explode":true,"schema":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / flexibility assets"],"responses":{"200":{"description":"Filtered list of Historical Time Series data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"assetId":{"type":"integer","description":"ID of the Flexibility Asset"},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"energy":{"type":"integer","format":"int64","description":"Energy output during the period in Wh."}},"required":["assetId","startTime","endTime","energy"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/flexibility-assets/v1.0/{flexibilityAsset}/time-series-forecast":{"get":{"operationId":"getTimeSeriesForecast","summary":"Flexibility Assets / Time Series Forecast","description":"Get Time Series Forecast for a Flexibility Asset","parameters":[{"name":"flexibilityAsset","in":"path","required":true,"description":"ID of the Flexibility Asset","schema":{"type":"integer"}},{"name":"filter","in":"query","required":false,"description":"Filters for the time range (startTime and endTime)","style":"deepObject","explode":true,"schema":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / flexibility assets"],"responses":{"200":{"description":"Filtered list of Time Series Forecast data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"assetId":{"type":"integer","description":"ID of the Flexibility Asset"},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"energy":{"type":"integer","format":"int64","description":"Predicted energy output during the period in Wh."},"downwardRegulationPotential":{"type":"integer","format":"int64","description":"Potential decrease in energy output in Wh."},"upwardRegulationPotential":{"type":"integer","format":"int64","description":"Potential increase in energy output in Wh."}},"required":["assetId","startTime","endTime","energy","downwardRegulationPotential","upwardRegulationPotential"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/id-tags/v2.0":{"get":{"operationId":"idTagsListing","tags":["resource / id tags"],"summary":"Id Tags / Listing","description":"Get all id tags","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"idTagUid":{"type":"string","format":"integer","description":"Only list Id tags with a certain UID"},"idLabel":{"type":"string","description":"Only list Id tags with a certain label"},"userId":{"type":"string","format":"integer","description":"Only list Id tags with a certain user id"},"expireAt":{"type":"string","format":"date-time","description":"Only list Id tags that have an expiration date grater or equal to the supplied date"},"status":{"type":"string","description":"Only list Id tags in this status","enum":["enabled","disabled","suspended"]},"type":{"type":"string","description":"Only list Id tags in this type","enum":["rfid","mac_address","emaid"]},"partnerId":{"type":"string","format":"integer","nullable":true,"description":"Only list ID tags assigned to the specified Partner ID. Pass null to list ID tags without a Partner assigned."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the id tags that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the id tags that were last updated on and before this datetime","type":"string","format":"date-time"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"idTagCreate","tags":["resource / id tags"],"summary":"Id Tag / Create","description":"Create new Id Tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["idTagUid","status","type"],"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"id":{"type":"integer","readOnly":true},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":false,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"201":{"description":"Id Tag created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/id-tags/v2.0/{idTag}":{"parameters":[{"name":"idTag","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"idTagRead","summary":"Id Tag / Read","description":"Get a Id Tag","tags":["resource / id tags"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"idTagUpdate","summary":"Id Tag / Update","description":"Update a Id Tag","tags":["resource / id tags"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"200":{"description":"Id Tag updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"idTagUid":{"type":"string","description":"Token used for authorization","example":123456},"idLabel":{"type":"string","description":"Visual or other label that could be associated with the ID Tag","nullable":true},"expireAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the ID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"type":{"type":"string","enum":["rfid","mac_address"]},"vehicleType":{"type":"string","nullable":true,"enum":[null,"company_car","private_car"]},"paymentMethodId":{"type":"string","nullable":true,"description":"The payment method that will be associated with the ID Tag.\n* For **credit/debit cards** the `paymentMethodId` should be provided\n* For **Corporate billing** - `corporate:{id}`\n* For **Subscription** - use `\"subscription\"` to use the user's active subscription\n* For **Auto selection** - use `\"auto\"` (recommended) or `null` (deprecated)\n* The \"last used\" concept has been replaced with \"auto\" selection which cycles through available payment methods.\n"},"userId":{"type":"integer","description":"Associate the ID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"externalId":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"description":"The administrator accounts of the selected Partner will be able to edit and delete the specified ID tag"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"idTagDelete","summary":"Id Tag / Delete","description":"Delete a Id Tag","tags":["resource / id tags"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/installation-and-maintenance-companies/v1.0":{"get":{"operationId":"getInstallationAndMaintenanceCompaniesList","tags":["resource / installation and maintenance companies"],"summary":"Installation And Maintenance Companies / Listing","description":"Get all Installation And Maintenance Companies","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"externalId":{"type":"string","description":"Filter by external identifier"},"countryCode":{"type":"string","description":"Filter by country code (ISO 3166-1 alpha-2)"},"integrationId":{"type":"integer","description":"Filter by Installer app integration ID"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"Lists the installation and maintenance companies that have been last updated after the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"Lists the installation and maintenance companies that have been last updated before the specified date and time, please provide the value as an ISO 8601 formatted date"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargePointIds"]}}},{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"The system ID"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"businessName":{"type":"string","description":"The internal name/identifier"},"integrationId":{"type":"integer","description":"The Installer app integration ID"},"externalId":{"type":"string","description":"External system identifier"},"companyName":{"type":"string","description":"Legal/display name"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"Region name"},"address":{"type":"string","description":"Street address"},"postCode":{"type":"string","description":"Postal code"},"contactPerson":{"type":"string","description":"Contact person name"},"email":{"type":"string","description":"Contact email"},"phone":{"type":"string","description":"Contact phone"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}},"required":["id","operatorId","businessName","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}}}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createInstallationAndMaintenanceCompany","tags":["resource / installation and maintenance companies"],"summary":"Installation And Maintenance Companies / Create","description":"Create Installation And Maintenance Company","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"businessName":{"type":"string","maxLength":255,"description":"The internal name/identifier (max 255 chars)"}},"required":["businessName"]},{"type":"object","properties":{"businessName":{"type":"string","maxLength":255,"description":"The internal name/identifier (max 255 chars)"},"integrationId":{"type":"integer","nullable":true,"description":"The system ID of the Installer app integration. Send null to clear."},"externalId":{"type":"string","maxLength":255,"nullable":true,"description":"External system identifier (max 255 chars). Send null to clear."},"companyName":{"type":"string","maxLength":255,"nullable":true,"description":"The legal/display name of the company (max 255 chars). Send null to clear."},"countryCode":{"description":"ISO 3166-1 alpha-2 country code. Send null to clear.","type":"string","nullable":true,"enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","maxLength":255,"nullable":true,"description":"City name (max 255 chars). Send null to clear."},"region":{"type":"string","maxLength":255,"nullable":true,"description":"Region/state/province name (max 255 chars). Send null to clear."},"address":{"type":"string","maxLength":255,"nullable":true,"description":"Street address (max 255 chars). Send null to clear."},"postCode":{"type":"string","maxLength":255,"nullable":true,"description":"Postal/ZIP code (max 255 chars). Send null to clear."},"contactPerson":{"type":"string","maxLength":255,"nullable":true,"description":"Name of the primary contact person (max 255 chars). Send null to clear."},"email":{"type":"string","format":"email","maxLength":255,"nullable":true,"description":"Contact email address (max 255 chars, email format validation). Send null to clear."},"phone":{"type":"string","maxLength":255,"nullable":true,"description":"Contact phone number (max 255 chars). Send null to clear."}}}]}}}},"responses":{"201":{"description":"Installation And Maintenance Company successfully created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The system ID"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"businessName":{"type":"string","description":"The internal name/identifier"},"integrationId":{"type":"integer","description":"The Installer app integration ID"},"externalId":{"type":"string","description":"External system identifier"},"companyName":{"type":"string","description":"Legal/display name"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"Region name"},"address":{"type":"string","description":"Street address"},"postCode":{"type":"string","description":"Postal code"},"contactPerson":{"type":"string","description":"Contact person name"},"email":{"type":"string","description":"Contact email"},"phone":{"type":"string","description":"Contact phone"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}},"required":["id","operatorId","businessName","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/installation-and-maintenance-companies/v1.0/{imCompany}":{"parameters":[{"name":"imCompany","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"getInstallationAndMaintenanceCompany","summary":"Installation And Maintenance Companies / Read","description":"Get Installation And Maintenance Company","tags":["resource / installation and maintenance companies"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargePointIds"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"The system ID"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"businessName":{"type":"string","description":"The internal name/identifier"},"integrationId":{"type":"integer","description":"The Installer app integration ID"},"externalId":{"type":"string","description":"External system identifier"},"companyName":{"type":"string","description":"Legal/display name"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"Region name"},"address":{"type":"string","description":"Street address"},"postCode":{"type":"string","description":"Postal code"},"contactPerson":{"type":"string","description":"Contact person name"},"email":{"type":"string","description":"Contact email"},"phone":{"type":"string","description":"Contact phone"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}},"required":["id","operatorId","businessName","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"updateInstallationAndMaintenanceCompany","summary":"Installation And Maintenance Companies / Update","description":"Update Installation And Maintenance Company","tags":["resource / installation and maintenance companies"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"businessName":{"type":"string","maxLength":255,"description":"The internal name/identifier (max 255 chars)"},"integrationId":{"type":"integer","nullable":true,"description":"The system ID of the Installer app integration. Send null to clear."},"externalId":{"type":"string","maxLength":255,"nullable":true,"description":"External system identifier (max 255 chars). Send null to clear."},"companyName":{"type":"string","maxLength":255,"nullable":true,"description":"The legal/display name of the company (max 255 chars). Send null to clear."},"countryCode":{"description":"ISO 3166-1 alpha-2 country code. Send null to clear.","type":"string","nullable":true,"enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","maxLength":255,"nullable":true,"description":"City name (max 255 chars). Send null to clear."},"region":{"type":"string","maxLength":255,"nullable":true,"description":"Region/state/province name (max 255 chars). Send null to clear."},"address":{"type":"string","maxLength":255,"nullable":true,"description":"Street address (max 255 chars). Send null to clear."},"postCode":{"type":"string","maxLength":255,"nullable":true,"description":"Postal/ZIP code (max 255 chars). Send null to clear."},"contactPerson":{"type":"string","maxLength":255,"nullable":true,"description":"Name of the primary contact person (max 255 chars). Send null to clear."},"email":{"type":"string","format":"email","maxLength":255,"nullable":true,"description":"Contact email address (max 255 chars, email format validation). Send null to clear."},"phone":{"type":"string","maxLength":255,"nullable":true,"description":"Contact phone number (max 255 chars). Send null to clear."}}}}}},"responses":{"200":{"description":"Installation And Maintenance Company successfully updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The system ID"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"businessName":{"type":"string","description":"The internal name/identifier"},"integrationId":{"type":"integer","description":"The Installer app integration ID"},"externalId":{"type":"string","description":"External system identifier"},"companyName":{"type":"string","description":"Legal/display name"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","description":"City name"},"region":{"type":"string","description":"Region name"},"address":{"type":"string","description":"Street address"},"postCode":{"type":"string","description":"Postal code"},"contactPerson":{"type":"string","description":"Contact person name"},"email":{"type":"string","description":"Contact email"},"phone":{"type":"string","description":"Contact phone"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"chargePointIds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The charge point system ID"}},"required":["id"]},"description":"List of charge point IDs associated with the installation and maintenance company"}},"required":["id","operatorId","businessName","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteInstallationAndMaintenanceCompany","summary":"Installation And Maintenance Companies / Delete","description":"Delete Installation And Maintenance Company","tags":["resource / installation and maintenance companies"],"responses":{"204":{"description":"Installation And Maintenance Company successfully deleted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/installer-jobs/v1.0":{"get":{"operationId":"getInstallerJobsList","tags":["resource / installer jobs"],"summary":"InstallerJobs / Listing","description":"Get all Installer Jobs","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"installationAndMaintenanceCompanyId":{"type":"integer"},"locationId":{"type":"integer"},"chargePointId":{"type":"integer"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installerAdminId":{"type":"integer"},"createdAfter":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been created after the specified date and time, please provide the value as an ISO 8601 formatted date"},"createdBefore":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been created before the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been last updated after the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been last updated before the specified date and time, please provide the value as an ISO 8601 formatted date"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createInstallerJob","tags":["resource / installer jobs"],"summary":"Installer Jobs / Create","description":"Create Installer Job","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"}},"required":["installationAndMaintenanceCompanyId","description"]},{"type":"object","properties":{"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job, if passed pin will be ignored"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the installer job, if passed and no installerAdminId is provided, the pin will be assigned to the installer job"},"description":{"type":"string"}}}]}}}},"responses":{"201":{"description":"Installer Job successfully created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/installer-jobs/v1.0/{installerJob}":{"parameters":[{"name":"installerJob","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"getInstallerJob","summary":"Installer Jobs / Read","description":"Get Installer Job","tags":["resource / installer jobs"],"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargePoints"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]},{"type":"object","properties":{"chargePoints":{"description":"List of charge points assigned to the installer job, only included when requested with include[]=chargePoints","type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true}}}}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"updateInstallerJob","summary":"Installer Jobs / Update","description":"Update Installer Job","tags":["resource / installer jobs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job, if passed pin will be ignored"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the installer job, if passed and no installerAdminId is provided, the pin will be assigned to the installer job"},"description":{"type":"string"}}}}}},"responses":{"200":{"description":"Installer Job successfully updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the installer job"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installationAndMaintenanceCompanyId":{"type":"integer","description":"The ID of the installation and maintenance company which the installer job is assigned to"},"locationId":{"type":"integer","description":"The ID of the location if such is assigned to the installer job"},"installerAdminId":{"type":"integer","description":"The ID of the installer admin if such is assigned to the installer job"},"pin":{"type":"string","minLength":4,"maxLength":12,"description":"The PIN of the installer job, it is used to verify access rights to execute the Installer job"},"description":{"type":"string"},"outcomeDetails":{"type":"string","description":"The outcome details of the installer job, provided to the `change-status` action when setting the status to \"completed\" or \"failed\""},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","status","installationAndMaintenanceCompanyId","description","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteInstallerJob","summary":"Installer Jobs / Delete","description":"Delete Installer Job","tags":["resource / installer jobs"],"responses":{"204":{"description":"Installer Job successfully deleted"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/invoices/v1.0":{"get":{"operationId":"invoicesListing","tags":["resource / invoices"],"summary":"Invoices / Listing","description":"Get all invoices","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"issuedFrom":{"type":"string","description":"Only list invoices issued after this time"},"issuedTo":{"type":"string","description":"Only list invoices issued before this time"},"externalId":{"type":"string","description":"Filter invoices by exact match of external ID"},"paymentStatus":{"type":"array","items":{"type":"string","enum":["paid","partially_paid","pending"]},"description":"Filter invoices by payment status. Accepts multiple comma-separated values."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["invoice","pro_forma","credit_note"],"description":"The type of the invoice"},"number":{"type":"string","description":"The unique number presented on the invoice"},"date":{"type":"string","format":"date-time","description":"The date on which the invoice was issued"},"userId":{"type":"integer","description":"The id of the user in the backend, to whom the invoice is being issued. Can be -1 in case the invoice is issued to no particular user"},"periodFrom":{"type":"string","format":"date-time","description":"The timestamp of the first transaction included in the invoice","nullable":true},"periodTo":{"type":"string","format":"date-time","description":"The timestamp of the last transaction included in the invoice","nullable":true},"totalEnergy":{"type":"number","description":"The total energy accounted by the sessions that the invoice transactions correspond to"},"totalAmount":{"type":"number","description":"The total amount (including tax) of the invoice"},"taxRate":{"type":"integer","description":"The tax percent applied to the invoice"},"taxAmount":{"type":"number","description":"The amount of tax applied to the invoice"},"service":{"type":"string","description":"The service for which the invoice is being issued"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"subtotal":{"type":"number","description":"Total price for the service"},"downloadUrl":{"type":"string","description":"The invoice can be downloaded from here. The link expires in 24 hours."},"paymentStatus":{"type":"string","enum":["paid","partially_paid","pending"]},"externalId":{"type":"string","description":"Reference identifier from external accounting or ERP system."},"client":{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"email":{"oneOf":[{"title":"Email Address","type":"string","format":"email"},{"title":"Empty Email","type":"string","minLength":0,"maxLength":0}]},"id":{"type":"string","description":"The ID identifying the client (personal id or company id)"},"taxId":{"type":"string"},"taxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"}},"required":["type","name","country"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","number","date","totalAmount","taxRate","taxAmount","service","quantity","unitPrice","subtotal"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/invoices/v1.0/{invoice}":{"get":{"operationId":"invoiceRead","parameters":[{"in":"path","name":"invoice","description":"The invoice ID to fetch","schema":{"type":"string"},"required":true}],"summary":"Invoice / Read","tags":["resource / invoices"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"type":{"type":"string","enum":["invoice","pro_forma","credit_note"],"description":"The type of the invoice"},"number":{"type":"string","description":"The unique number presented on the invoice"},"date":{"type":"string","format":"date-time","description":"The date on which the invoice was issued"},"userId":{"type":"integer","description":"The id of the user in the backend, to whom the invoice is being issued. Can be -1 in case the invoice is issued to no particular user"},"periodFrom":{"type":"string","format":"date-time","description":"The timestamp of the first transaction included in the invoice","nullable":true},"periodTo":{"type":"string","format":"date-time","description":"The timestamp of the last transaction included in the invoice","nullable":true},"totalEnergy":{"type":"number","description":"The total energy accounted by the sessions that the invoice transactions correspond to"},"totalAmount":{"type":"number","description":"The total amount (including tax) of the invoice"},"taxRate":{"type":"integer","description":"The tax percent applied to the invoice"},"taxAmount":{"type":"number","description":"The amount of tax applied to the invoice"},"service":{"type":"string","description":"The service for which the invoice is being issued"},"quantity":{"type":"number"},"unitPrice":{"type":"number"},"subtotal":{"type":"number","description":"Total price for the service"},"downloadUrl":{"type":"string","description":"The invoice can be downloaded from here. The link expires in 24 hours."},"paymentStatus":{"type":"string","enum":["paid","partially_paid","pending"]},"externalId":{"type":"string","description":"Reference identifier from external accounting or ERP system."},"client":{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"email":{"oneOf":[{"title":"Email Address","type":"string","format":"email"},{"title":"Empty Email","type":"string","minLength":0,"maxLength":0}]},"id":{"type":"string","description":"The ID identifying the client (personal id or company id)"},"taxId":{"type":"string"},"taxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"}},"required":["type","name","country"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","type","number","date","totalAmount","taxRate","taxAmount","service","quantity","unitPrice","subtotal"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/issues/v1.0":{"get":{"operationId":"issuesListing","tags":["resource / issues"],"summary":"Issues / Listing","description":"Get all issues with optional filtering and pagination","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","description":"Filters for issues listing","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"status":{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"},"workflowState":{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"assigneeId":{"type":"integer","description":"Filter by assigned admin user ID"},"keyResourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"keyResourceId":{"type":"integer","description":"Filter by key resource ID"},"createdAfter":{"type":"string","format":"date-time","description":"Filter issues created after this timestamp (ISO 8601 format)"},"createdBefore":{"type":"string","format":"date-time","description":"Filter issues created before this timestamp (ISO 8601 format)"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter issues updated after this timestamp (ISO 8601 format)"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter issues updated before this timestamp (ISO 8601 format)"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Issue resource with full details","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","description":"Detailed issue description (HTML content)"},"resolutionDetails":{"type":"string","description":"Details about how the issue was resolved or why it was closed. Only present when status is resolved, wont_fix, or non_issue."},"status":{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"readOnly":true,"description":"Computed from status - read-only"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"externalId":{"type":"string","description":"External system identifier (UUID format recommended)","maxLength":255},"assigneeAdminId":{"type":"integer","description":"ID of the admin user assigned to this issue"},"partnerId":{"type":"integer","description":"ID of the partner that owns this issue. Present only for partner-scoped issues.","readOnly":true},"keyResource":{"type":"object","description":"Reference to a related resource (charge point, location, or EVSE)","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","operatorId","title","status","workflowState","category","severity","priority","createdAt","updatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"issuesCreate","tags":["resource / issues"],"summary":"Issues / Create","description":"Create a new issue. Note - auto-resolution statuses (autoRecoveryInProgress, informationCollectionInProgress) cannot be set via API.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Payload for creating a new issue","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this issue.\nOptional for global admin tokens (defaults to creating a global issue if not provided).\nIgnored for operator-scoped tokens (uses the token's operator).\n","example":1},"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","nullable":true,"description":"Detailed issue description (HTML content)"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"status":{"allOf":[{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"}],"default":"new","description":"Issue status. Defaults to 'new' if not provided.\nNote: Auto-resolution statuses (auto_recovery_in_progress, information_collection_in_progress) cannot be set via API and will be rejected with validation error.\n"},"externalId":{"type":"string","nullable":true,"description":"External system identifier (UUID format recommended)","maxLength":255},"assigneeAdminId":{"type":"integer","nullable":true,"description":"ID of the admin user to assign this issue to"},"keyResource":{"type":"object","nullable":true,"description":"Primary resource this issue is related to (e.g., charge point, location, or EVSE).\nOnce set, this cannot be changed via update operations.\n","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session"],"description":"Type of resource that can be set as the key resource (primary subject) when creating an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]}},"required":["title","description","category","severity","priority"]}}}},"responses":{"201":{"description":"Issue created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Issue resource with full details","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","description":"Detailed issue description (HTML content)"},"resolutionDetails":{"type":"string","description":"Details about how the issue was resolved or why it was closed. Only present when status is resolved, wont_fix, or non_issue."},"status":{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"readOnly":true,"description":"Computed from status - read-only"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"externalId":{"type":"string","description":"External system identifier (UUID format recommended)","maxLength":255},"assigneeAdminId":{"type":"integer","description":"ID of the admin user assigned to this issue"},"partnerId":{"type":"integer","description":"ID of the partner that owns this issue. Present only for partner-scoped issues.","readOnly":true},"keyResource":{"type":"object","description":"Reference to a related resource (charge point, location, or EVSE)","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","operatorId","title","status","workflowState","category","severity","priority","createdAt","updatedAt"]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/issues/v1.0/{issue}":{"parameters":[{"in":"path","name":"issue","description":"The issue ID","schema":{"type":"integer"},"required":true}],"get":{"operationId":"issueRead","tags":["resource / issues"],"summary":"Issue / Read","description":"Get information for a single issue by ID","parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["relatedResources"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","description":"Issue resource with full details","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","description":"Detailed issue description (HTML content)"},"resolutionDetails":{"type":"string","description":"Details about how the issue was resolved or why it was closed. Only present when status is resolved, wont_fix, or non_issue."},"status":{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"readOnly":true,"description":"Computed from status - read-only"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"externalId":{"type":"string","description":"External system identifier (UUID format recommended)","maxLength":255},"assigneeAdminId":{"type":"integer","description":"ID of the admin user assigned to this issue"},"partnerId":{"type":"integer","description":"ID of the partner that owns this issue. Present only for partner-scoped issues.","readOnly":true},"keyResource":{"type":"object","description":"Reference to a related resource (charge point, location, or EVSE)","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","operatorId","title","status","workflowState","category","severity","priority","createdAt","updatedAt"]},{"type":"object","description":"Issue resource with optional includes (available via include parameter)","properties":{"relatedResources":{"type":"array","items":{"type":"object","description":"Reference to a related resource (charge point, location, or EVSE)","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]},"description":"Additional resources related to this issue. Available when include=relatedResources is specified."}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"issueUpdate","tags":["resource / issues"],"summary":"Issue / Update","description":"Update an existing issue. Supports partial updates (PATCH semantics).\nNotes:\n- keyResource cannot be updated after creation\n- Cannot set auto-resolution statuses (autoRecoveryInProgress, informationCollectionInProgress)\n- When setting status to resolved, wontFix, or nonIssue, resolutionDetails is required\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Payload for updating an existing issue (PATCH semantics - all fields optional)","properties":{"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","description":"Detailed issue description (HTML content)"},"status":{"allOf":[{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"}],"description":"Issue status. Cannot be set to auto_recovery_in_progress or information_collection_in_progress (auto-resolution statuses).\nWhen setting status to resolved, wont_fix, or non_issue, resolutionDetails is required.\n"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"externalId":{"type":"string","nullable":true,"description":"External system identifier (UUID format recommended). Set to null to clear.","maxLength":255},"assigneeAdminId":{"type":"integer","nullable":true,"description":"ID of the admin user to assign this issue to. Set to null to unassign."},"resolutionDetails":{"type":"string","nullable":true,"description":"Details about how the issue was resolved or why it was closed. Required when status is set to resolved, wont_fix, or non_issue."}}}}}},"responses":{"200":{"description":"Issue updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Issue resource with full details","properties":{"id":{"type":"integer","description":"System-generated unique identifier","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string","description":"Issue title","maxLength":255},"description":{"type":"string","description":"Detailed issue description (HTML content)"},"resolutionDetails":{"type":"string","description":"Details about how the issue was resolved or why it was closed. Only present when status is resolved, wont_fix, or non_issue."},"status":{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"readOnly":true,"description":"Computed from status - read-only"},"category":{"type":"string","enum":["network","payments_billing","product_offerings","ev_driver_ux","security","roaming","other"],"description":"Issue category:\n- **network**: Network connectivity or communication issues\n- **payments_billing**: Payment processing or billing-related issues\n- **product_offerings**: Issues with product features or tariff offerings\n- **ev_driver_ux**: EV driver user experience issues\n- **security**: Security-related concerns or incidents\n- **roaming**: Roaming-related issues\n- **other**: Issues not covered by other categories\n","example":"network"},"severity":{"type":"string","enum":["severe","significant","moderate","low"],"description":"Issue severity level:\n- **severe**: Critical impact requiring immediate attention\n- **significant**: Major impact affecting important functionality\n- **moderate**: Moderate impact with workaround available\n- **low**: Minor impact with minimal effect on operations\n","example":"significant"},"priority":{"type":"string","enum":["highest","high","medium","low"],"description":"Issue priority level:\n- **highest**: Must be addressed immediately\n- **high**: Should be addressed as soon as possible\n- **medium**: Should be addressed in normal workflow\n- **low**: Can be addressed when convenient\n","example":"high"},"externalId":{"type":"string","description":"External system identifier (UUID format recommended)","maxLength":255},"assigneeAdminId":{"type":"integer","description":"ID of the admin user assigned to this issue"},"partnerId":{"type":"integer","description":"ID of the partner that owns this issue. Present only for partner-scoped issues.","readOnly":true},"keyResource":{"type":"object","description":"Reference to a related resource (charge point, location, or EVSE)","properties":{"resourceType":{"type":"string","enum":["charge-point","location","evse","session","integration","roaming-cdr","roaming-connection"],"description":"Type of resource associated with an issue.\n- **charge-point**: Charge point equipment\n- **location**: Charging location\n- **evse**: Electric Vehicle Supply Equipment (individual charging outlet)\n- **session**: Charging session\n- **integration**: Integration setting (e.g., third-party service configuration)\n- **roaming-cdr**: Roaming charge detail record\n- **roaming-connection**: Roaming connection\n\nNote: Additional types (user) may appear in responses for issues created by automated systems.\n","example":"charge-point"},"id":{"type":"integer","description":"ID of the referenced resource"}},"required":["resourceType","id"]},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","operatorId","title","status","workflowState","category","severity","priority","createdAt","updatedAt"]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"issueDelete","tags":["resource / issues"],"summary":"Issue / Delete","description":"Delete an issue","responses":{"204":{"description":"Issue deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v1.0":{"get":{"operationId":"locationsListingDeprecated","deprecated":true,"tags":["resource / locations"],"summary":"Locations / Listing","description":"Get all locations","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"postCode":{"description":"The location post code","type":"string"},"partnerId":{"description":"To list Locations that have charge points of a specific Partner, use the ID of the Partner. To list locations that have only charge points that don't have a Partner assigned, use null","type":"string","nullable":true},"country":{"description":"The location country","type":"string"},"status":{"description":"The location status","type":"string"},"externalId":{"description":"The location external ID","type":"string","nullable":true}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","required":["name","geoposition","post_code","city","country","region"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"locationCreateDeprecated","deprecated":true,"summary":"Location / Create","tags":["resource / locations"],"description":"Create new location","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","required":["name","geoposition","post_code","city","country","region"]}]}}}},"responses":{"201":{"description":"Location created successfully","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","required":["name","geoposition","post_code","city","country","region"]}]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v1.0/{location}":{"parameters":[{"in":"path","name":"location","schema":{"type":"integer"},"required":true,"description":"Location ID"}],"get":{"operationId":"locationReadDeprecated","deprecated":true,"summary":"Location / Read","description":"Get a single location","tags":["resource / locations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","required":["name","geoposition","post_code","city","country","region"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"locationUpdateDeprecated","deprecated":true,"summary":"Location / Update","description":"Update a location","tags":["resource / locations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"200":{"description":"Location and updated successfully","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","required":["name","geoposition","post_code","city","country","region"]}]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"locationDeleteDeprecated","deprecated":true,"summary":"Location / Delete","description":"Delete a location","tags":["resource / locations"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0":{"post":{"operationId":"locationCreate","tags":["resource / locations"],"summary":"Location / Create","description":"Create a new location","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"paymentOptions":{"type":"array","nullable":true,"items":{"type":"string","enum":["EMV_CHIP_TERMINAL","NFC_CONTACTLESS_TERMINAL","QR_CODE_PAYMENT","WEB_PAYMENT","CASH_PAYMENT"],"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n- `EMV_CHIP_TERMINAL` - EMV chip card terminal (contact-based card payments)\n- `NFC_CONTACTLESS_TERMINAL` - NFC contactless payment terminal (tap-to-pay)\n- `QR_CODE_PAYMENT` - QR code-based payment\n- `WEB_PAYMENT` - Web-based payment (e.g., browser or app payment flow)\n- `CASH_PAYMENT` - Cash payment accepted\n"},"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified by the operator (unknown). Omitted from DATEX II reporting.\n- `[]` (empty array) - The operator explicitly confirmed that no payment options are available at this location.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all payment options\n- Send `[]` to store an empty payment options list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no payment options are configured (null in database)\n- When payment options are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"acceptedPaymentBrands":{"type":"array","nullable":true,"items":{"type":"string","enum":["VISA","MASTERCARD","MAESTRO","AMEX","GIROCARD","OTHER"],"description":"Payment card brands accepted at the charging location. Only applicable when payment terminal options (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`) are present in `paymentOptions`.\n\n- `VISA` - Visa\n- `MASTERCARD` - Mastercard\n- `MAESTRO` - Maestro\n- `AMEX` - American Express\n- `GIROCARD` - Girocard\n- `OTHER` - Other payment brand\n"},"description":"Payment card brands accepted at the charging location. Only applicable when `paymentOptions` includes a payment terminal option (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`).\n\nIf `paymentOptions` does not contain any terminal option, any provided `acceptedPaymentBrands` value is silently ignored and stored as `null`.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified or not applicable (no terminal options in `paymentOptions`).\n- `[]` (empty array) - The operator explicitly confirmed that no specific payment brands are accepted.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all accepted payment brands\n- Send `[]` to store an empty accepted payment brands list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n- If `paymentOptions` does not contain `EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`, this field is silently stored as `null`\n\n**Response behavior (GET):**\n- Field is omitted from the response when no accepted payment brands are configured (null in database)\n- When accepted payment brands are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true}}}],"required":["name","geoposition","address","country"]}}}},"responses":{"201":{"description":"Location created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming locations.","example":1},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"paymentOptions":{"type":"array","readOnly":true,"items":{"type":"string","enum":["EMV_CHIP_TERMINAL","NFC_CONTACTLESS_TERMINAL","QR_CODE_PAYMENT","WEB_PAYMENT","CASH_PAYMENT"],"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n- `EMV_CHIP_TERMINAL` - EMV chip card terminal (contact-based card payments)\n- `NFC_CONTACTLESS_TERMINAL` - NFC contactless payment terminal (tap-to-pay)\n- `QR_CODE_PAYMENT` - QR code-based payment\n- `WEB_PAYMENT` - Web-based payment (e.g., browser or app payment flow)\n- `CASH_PAYMENT` - Cash payment accepted\n"},"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified by the operator (unknown). Omitted from DATEX II reporting.\n- `[]` (empty array) - The operator explicitly confirmed that no payment options are available at this location.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no payment options are configured (null in database)\n- When payment options are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"acceptedPaymentBrands":{"type":"array","readOnly":true,"items":{"type":"string","enum":["VISA","MASTERCARD","MAESTRO","AMEX","GIROCARD","OTHER"],"description":"Payment card brands accepted at the charging location. Only applicable when payment terminal options (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`) are present in `paymentOptions`.\n\n- `VISA` - Visa\n- `MASTERCARD` - Mastercard\n- `MAESTRO` - Maestro\n- `AMEX` - American Express\n- `GIROCARD` - Girocard\n- `OTHER` - Other payment brand\n"},"description":"Payment card brands accepted at the charging location. Only applicable when `paymentOptions` includes a payment terminal option (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`).\n\nIf `paymentOptions` does not contain any terminal option, this field will be `null`.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no accepted payment brands are configured (null in database)\n- When accepted payment brands are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"locationImage":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"nullable":true,"readOnly":true,"description":"If `include[]=locationImage` is provided with the request, the `locationImageId` will be replaced with the `locationImage` object if a location image has been assigned to the Location"},"locationPin":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"readOnly":true,"description":"If `include[]=locationPin` is provided with the request, the `locationPin` object will be returned if a custom pin image has been assigned to the Location"},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true,"description":"If `include[]=images` is provided with the request, this array will contain the properties of all images assigned to the location."},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"chargingZones":{"type":"array","readOnly":true,"items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}},"description":"If `include[]=chargingZones` is provided with the request, the location charging zones will be provided here."},"roamingOperatorId":{"description":"For roaming Locations, the ID of the roaming operator is provided.","type":"integer"},"isRoaming":{"description":"Indicates whether this location belongs to an external roaming operator (true) or is a local location owned by the requesting operator (false).","type":"boolean","readOnly":true},"partnerIds":{"description":"If `include[]=partnerIds` is provided with the request, returns unique IDs of all partners associated with the location through its charge points. Returns an empty array when no charge points have partner assignments.","type":"array","readOnly":true,"items":{"type":"integer"}},"roaming":{"type":"object","readOnly":true,"description":"Contains details about the owner, operator, and suboperator of the location as provided by the CPO partner via OCPI.","properties":{"owner":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location owner."}}},"operator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location operator."}}},"suboperator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location suboperator."}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this location will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}}},{"type":"object","properties":{"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]}}}],"required":["id","operatorId","name","geoposition","address","city","country","roamingOperatorId","isRoaming"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"locationsListing","summary":"Locations / Listing","description":"Get all locations","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"state":{"anyOf":[{"description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"description":"For cases when the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"description":"For cases when the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]}]},"region":{"type":"string"},"city":{"type":"string"},"partnerId":{"type":"integer"},"externalId":{"type":"string"},"tag":{"type":"string","description":"Only list Locations that have the specific tag assigned."},"roaming":{"type":"boolean","description":"When true - returns only roaming locations. When false - returns only local locations owned by the authenticated operator."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the locations that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the locations that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only locations that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only locations that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingZones","externalAppData","images","locationImage","locationPin","notes","partnerIds"]}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / locations"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming locations.","example":1},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"paymentOptions":{"type":"array","readOnly":true,"items":{"type":"string","enum":["EMV_CHIP_TERMINAL","NFC_CONTACTLESS_TERMINAL","QR_CODE_PAYMENT","WEB_PAYMENT","CASH_PAYMENT"],"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n- `EMV_CHIP_TERMINAL` - EMV chip card terminal (contact-based card payments)\n- `NFC_CONTACTLESS_TERMINAL` - NFC contactless payment terminal (tap-to-pay)\n- `QR_CODE_PAYMENT` - QR code-based payment\n- `WEB_PAYMENT` - Web-based payment (e.g., browser or app payment flow)\n- `CASH_PAYMENT` - Cash payment accepted\n"},"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified by the operator (unknown). Omitted from DATEX II reporting.\n- `[]` (empty array) - The operator explicitly confirmed that no payment options are available at this location.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no payment options are configured (null in database)\n- When payment options are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"acceptedPaymentBrands":{"type":"array","readOnly":true,"items":{"type":"string","enum":["VISA","MASTERCARD","MAESTRO","AMEX","GIROCARD","OTHER"],"description":"Payment card brands accepted at the charging location. Only applicable when payment terminal options (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`) are present in `paymentOptions`.\n\n- `VISA` - Visa\n- `MASTERCARD` - Mastercard\n- `MAESTRO` - Maestro\n- `AMEX` - American Express\n- `GIROCARD` - Girocard\n- `OTHER` - Other payment brand\n"},"description":"Payment card brands accepted at the charging location. Only applicable when `paymentOptions` includes a payment terminal option (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`).\n\nIf `paymentOptions` does not contain any terminal option, this field will be `null`.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no accepted payment brands are configured (null in database)\n- When accepted payment brands are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"locationImage":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"nullable":true,"readOnly":true,"description":"If `include[]=locationImage` is provided with the request, the `locationImageId` will be replaced with the `locationImage` object if a location image has been assigned to the Location"},"locationPin":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"readOnly":true,"description":"If `include[]=locationPin` is provided with the request, the `locationPin` object will be returned if a custom pin image has been assigned to the Location"},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true,"description":"If `include[]=images` is provided with the request, this array will contain the properties of all images assigned to the location."},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"chargingZones":{"type":"array","readOnly":true,"items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}},"description":"If `include[]=chargingZones` is provided with the request, the location charging zones will be provided here."},"roamingOperatorId":{"description":"For roaming Locations, the ID of the roaming operator is provided.","type":"integer"},"isRoaming":{"description":"Indicates whether this location belongs to an external roaming operator (true) or is a local location owned by the requesting operator (false).","type":"boolean","readOnly":true},"partnerIds":{"description":"If `include[]=partnerIds` is provided with the request, returns unique IDs of all partners associated with the location through its charge points. Returns an empty array when no charge points have partner assignments.","type":"array","readOnly":true,"items":{"type":"integer"}},"roaming":{"type":"object","readOnly":true,"description":"Contains details about the owner, operator, and suboperator of the location as provided by the CPO partner via OCPI.","properties":{"owner":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location owner."}}},"operator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location operator."}}},"suboperator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location suboperator."}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this location will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}}},{"type":"object","properties":{"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]}}}],"required":["id","operatorId","name","geoposition","address","city","country","roamingOperatorId","isRoaming"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0/{location}":{"parameters":[{"name":"location","in":"path","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["chargingZones","externalAppData","images","locationImage","locationPin","notes","partnerIds"]}}}],"patch":{"operationId":"locationUpdate","summary":"Location / Update","description":"Update a location","tags":["resource / locations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true}}}]}}}},"responses":{"200":{"description":"Location updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming locations.","example":1},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"paymentOptions":{"type":"array","readOnly":true,"items":{"type":"string","enum":["EMV_CHIP_TERMINAL","NFC_CONTACTLESS_TERMINAL","QR_CODE_PAYMENT","WEB_PAYMENT","CASH_PAYMENT"],"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n- `EMV_CHIP_TERMINAL` - EMV chip card terminal (contact-based card payments)\n- `NFC_CONTACTLESS_TERMINAL` - NFC contactless payment terminal (tap-to-pay)\n- `QR_CODE_PAYMENT` - QR code-based payment\n- `WEB_PAYMENT` - Web-based payment (e.g., browser or app payment flow)\n- `CASH_PAYMENT` - Cash payment accepted\n"},"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified by the operator (unknown). Omitted from DATEX II reporting.\n- `[]` (empty array) - The operator explicitly confirmed that no payment options are available at this location.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no payment options are configured (null in database)\n- When payment options are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"acceptedPaymentBrands":{"type":"array","readOnly":true,"items":{"type":"string","enum":["VISA","MASTERCARD","MAESTRO","AMEX","GIROCARD","OTHER"],"description":"Payment card brands accepted at the charging location. Only applicable when payment terminal options (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`) are present in `paymentOptions`.\n\n- `VISA` - Visa\n- `MASTERCARD` - Mastercard\n- `MAESTRO` - Maestro\n- `AMEX` - American Express\n- `GIROCARD` - Girocard\n- `OTHER` - Other payment brand\n"},"description":"Payment card brands accepted at the charging location. Only applicable when `paymentOptions` includes a payment terminal option (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`).\n\nIf `paymentOptions` does not contain any terminal option, this field will be `null`.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no accepted payment brands are configured (null in database)\n- When accepted payment brands are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"locationImage":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"nullable":true,"readOnly":true,"description":"If `include[]=locationImage` is provided with the request, the `locationImageId` will be replaced with the `locationImage` object if a location image has been assigned to the Location"},"locationPin":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"readOnly":true,"description":"If `include[]=locationPin` is provided with the request, the `locationPin` object will be returned if a custom pin image has been assigned to the Location"},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true,"description":"If `include[]=images` is provided with the request, this array will contain the properties of all images assigned to the location."},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"chargingZones":{"type":"array","readOnly":true,"items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}},"description":"If `include[]=chargingZones` is provided with the request, the location charging zones will be provided here."},"roamingOperatorId":{"description":"For roaming Locations, the ID of the roaming operator is provided.","type":"integer"},"isRoaming":{"description":"Indicates whether this location belongs to an external roaming operator (true) or is a local location owned by the requesting operator (false).","type":"boolean","readOnly":true},"partnerIds":{"description":"If `include[]=partnerIds` is provided with the request, returns unique IDs of all partners associated with the location through its charge points. Returns an empty array when no charge points have partner assignments.","type":"array","readOnly":true,"items":{"type":"integer"}},"roaming":{"type":"object","readOnly":true,"description":"Contains details about the owner, operator, and suboperator of the location as provided by the CPO partner via OCPI.","properties":{"owner":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location owner."}}},"operator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location operator."}}},"suboperator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location suboperator."}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this location will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}}},{"type":"object","properties":{"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]}}}],"required":["id","operatorId","name","geoposition","address","city","country","roamingOperatorId","isRoaming"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"locationRead","summary":"Location / Read","description":"Get a location","tags":["resource / locations"],"responses":{"200":{"description":"Location returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"readOnly":true,"description":"The ID of the operator this resource belongs to. Null for roaming locations.","example":1},"externalId":{"type":"string","nullable":true},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"shortDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"additionalDescription":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"geoposition":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["latitude","longitude"]},"address":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The full address of the location"},"streetAddress":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The street address of the location"},"city":{"type":"string","nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"postCode":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"parkingType":{"type":"string","nullable":true,"enum":["ALONG_MOTORWAY","PARKING_GARAGE","PARKING_LOT","ON_DRIVEWAY","ON_STREET","UNDERGROUND_GARAGE"],"description":"Indicates the type of parking available at the charging location. This field helps EV drivers understand the physical parking environment before arrival.\n\n**Valid values:**\n- `ALONG_MOTORWAY` - Located along a motorway/highway, typically at rest areas or service stations\n- `PARKING_GARAGE` - Multi-level parking garage structure, either above-ground or mixed-use\n- `PARKING_LOT` - Surface parking lot, open-air parking area\n- `ON_DRIVEWAY` - Located on a private driveway, typically residential or small business\n- `ON_STREET` - Street-side parking, curbside charging locations\n- `UNDERGROUND_GARAGE` - Underground parking structure, subterranean parking facility\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear the parking type\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no parking type is configured (null in database)\n- When present, returns one of the valid enum values listed above\n"},"accessMethods":{"type":"array","nullable":true,"items":{"type":"string","enum":["OPEN","TOKEN","LICENSE_PLATE","ACCESS_CODE","INTERCOM","PARKING_TICKET"]},"description":"Physical access methods available at this location. Multiple methods can be selected if the site supports different access types.\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all access methods\n- Send `[]` to store an empty access methods list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no access methods are configured (null in database)\n- When access methods are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n\n**Available methods:**\n- `OPEN` - Publicly accessible without restrictions\n- `TOKEN` - Access via RFID token or card\n- `LICENSE_PLATE` - Access via license plate recognition\n- `ACCESS_CODE` - Access via PIN/access code entry\n- `INTERCOM` - Access via intercom system\n- `PARKING_TICKET` - Access via parking ticket validation\n","example":["OPEN","TOKEN"]},"facilities":{"type":"array","nullable":true,"items":{"type":"string","enum":["AIRPORT","BATHROOM","BIKE_SHARING","BUS_STOP","CAFE","CARPOOL_PARKING","FUEL_STATION","HOTEL","MALL","METRO_STATION","MUSEUM","NATURE","PARKING_LOT","RECREATION_AREA","RESTAURANT","SPORT","STAFFED","SUPERMARKET","TAXI_STAND","TRAIN_STATION","TRAM_STOP","WIFI"]},"description":"Describes amenities and facilities available at or near the charging location. Most values are self-explanatory. Special categories include:\n- `RECREATION_AREA` - Parks, playgrounds, or leisure facilities\n- `CARPOOL_PARKING` - Dedicated parking for carpooling/ridesharing\n- `NATURE` - Natural attractions or green spaces\n- `STAFFED` - Location has staff present\n- `BATHROOM` - Bathroom facilities available\n\n**Request behavior (POST/PATCH):**\n- Optional field when creating or updating locations\n- Send `null` to clear all facilities\n- Send `[]` to store an empty facilities list\n- Duplicate values are automatically de-duplicated before storage\n- Omit the field in PATCH requests to leave the existing value unchanged\n\n**Response behavior (GET):**\n- Field is omitted from the response when no facilities are configured (null in database)\n- When facilities are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"paymentOptions":{"type":"array","readOnly":true,"items":{"type":"string","enum":["EMV_CHIP_TERMINAL","NFC_CONTACTLESS_TERMINAL","QR_CODE_PAYMENT","WEB_PAYMENT","CASH_PAYMENT"],"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n- `EMV_CHIP_TERMINAL` - EMV chip card terminal (contact-based card payments)\n- `NFC_CONTACTLESS_TERMINAL` - NFC contactless payment terminal (tap-to-pay)\n- `QR_CODE_PAYMENT` - QR code-based payment\n- `WEB_PAYMENT` - Web-based payment (e.g., browser or app payment flow)\n- `CASH_PAYMENT` - Cash payment accepted\n"},"description":"Payment methods accepted at the charging location, as required by AFIR (Alternative Fuels Infrastructure Regulation) for regulatory reporting.\n\n**Null vs empty semantics:**\n- `null` - Not yet specified by the operator (unknown). Omitted from DATEX II reporting.\n- `[]` (empty array) - The operator explicitly confirmed that no payment options are available at this location.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no payment options are configured (null in database)\n- When payment options are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"acceptedPaymentBrands":{"type":"array","readOnly":true,"items":{"type":"string","enum":["VISA","MASTERCARD","MAESTRO","AMEX","GIROCARD","OTHER"],"description":"Payment card brands accepted at the charging location. Only applicable when payment terminal options (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`) are present in `paymentOptions`.\n\n- `VISA` - Visa\n- `MASTERCARD` - Mastercard\n- `MAESTRO` - Maestro\n- `AMEX` - American Express\n- `GIROCARD` - Girocard\n- `OTHER` - Other payment brand\n"},"description":"Payment card brands accepted at the charging location. Only applicable when `paymentOptions` includes a payment terminal option (`EMV_CHIP_TERMINAL` or `NFC_CONTACTLESS_TERMINAL`).\n\nIf `paymentOptions` does not contain any terminal option, this field will be `null`.\n\n**Response behavior (GET):**\n- Field is omitted from the response when no accepted payment brands are configured (null in database)\n- When accepted payment brands are configured but the array is empty, returns an empty array `[]`\n- When present, returns an array of valid enum values listed above\n"},"locationImage":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"nullable":true,"readOnly":true,"description":"If `include[]=locationImage` is provided with the request, the `locationImageId` will be replaced with the `locationImage` object if a location image has been assigned to the Location"},"locationPin":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"],"readOnly":true,"description":"If `include[]=locationPin` is provided with the request, the `locationPin` object will be returned if a custom pin image has been assigned to the Location"},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true,"description":"If `include[]=images` is provided with the request, this array will contain the properties of all images assigned to the location."},"workingHours":{"type":"object","properties":{"isAlwaysOpen":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"allowChargingOutsideWorkingHours":{"type":"boolean","description":"When enabled, charging sessions can be started even when the location\nis outside its working hours. The location will still appear as closed\nto users. When this is true, stopSessionOutsideWorkingHours is\neffectively ignored.\n"},"stopSessionOutsideWorkingHours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"alwaysOpenForUserGroupIds":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any working hour intervals, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}}}},"chargingZones":{"type":"array","readOnly":true,"items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}},"description":"If `include[]=chargingZones` is provided with the request, the location charging zones will be provided here."},"roamingOperatorId":{"description":"For roaming Locations, the ID of the roaming operator is provided.","type":"integer"},"isRoaming":{"description":"Indicates whether this location belongs to an external roaming operator (true) or is a local location owned by the requesting operator (false).","type":"boolean","readOnly":true},"partnerIds":{"description":"If `include[]=partnerIds` is provided with the request, returns unique IDs of all partners associated with the location through its charge points. Returns an empty array when no charge points have partner assignments.","type":"array","readOnly":true,"items":{"type":"integer"}},"roaming":{"type":"object","readOnly":true,"description":"Contains details about the owner, operator, and suboperator of the location as provided by the CPO partner via OCPI.","properties":{"owner":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location owner."}}},"operator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location operator."}}},"suboperator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the location suboperator."}}}}},"tags":{"type":"array","items":{"type":"string"}},"externalAppData":{"description":"Used to hold any external application data related to the Location.","type":"object","nullable":true,"additionalProperties":true},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this location will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."},"lastUpdatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 formatted date"}}},{"type":"object","properties":{"status":{"type":"string","description":"Deprecated.","enum":["enabled","disabled"]}}}],"required":["id","operatorId","name","geoposition","address","city","country","roamingOperatorId","isRoaming"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"locationDelete","summary":"Location / Delete","description":"Delete a location","tags":["resource / locations"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0/{location}/charging-zones":{"parameters":[{"name":"location","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"locationChargingZonesListing","summary":"Location / Charging Zones / Listing","tags":["resource / locations"],"description":"Get all Charging Zones","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"locationChargingZoneCreate","summary":"Location / Charging Zone / Create","tags":["resource / locations"],"description":"Create a new Charging Zone","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}}}},"responses":{"201":{"description":"Charging Zone is created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0/{location}/charging-zones/{chargingZone}":{"parameters":[{"name":"location","in":"path","schema":{"type":"integer"},"required":true},{"in":"path","name":"chargingZone","schema":{"type":"integer"},"required":true}],"get":{"operationId":"locationChargingZoneRead","summary":"Location / Charging Zone / Read","tags":["resource / locations"],"description":"Get a Charging Zone","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"locationChargingZoneUpdate","summary":"Location / Charging Zones / Update","tags":["resource / locations"],"description":"Update a existing Charging Zone","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"nullable":true,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}}}},"responses":{"200":{"description":"Charging Zone is updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Internal name of the Charging Zone. This isn't visible to end-users in the app."},"floorLevel":{"type":"string","maxLength":4,"description":"Floor level where charging zone is located (e.g., '2', 'B1', 'G'). Optional, max 4 characters."},"locationId":{"type":"integer","readOnly":true,"description":"The ID of the Location, which the Charging Zone belongs to."},"status":{"type":"string","enum":["enabled","disabled"]},"additionalInfo":{"description":"Additional information for the charging zone that is shown in the mobile app when the Location is viewed.","type":"object","properties":{"enabled":{"type":"boolean"},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"locationChargingZoneDelete","summary":"Location / Charging Zone / Delete","tags":["resource / locations"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0/{location}/notes":{"parameters":[{"name":"location","in":"path","schema":{"type":"integer"},"required":true,"description":"Location ID"}],"get":{"operationId":"locationNotesListing","tags":["resource / locations"],"summary":"Location / Notes / Listing","description":"List all notes for a specific location.\n\nNotes are returned with pinned notes first, then ordered by creation date descending.\n\n**Required permission:** `Notes.view`\n","parameters":[{"name":"filter","in":"query","style":"deepObject","schema":{"type":"object","properties":{"pinned":{"type":"boolean","description":"Filter by pinned status","example":true},"createdAfter":{"type":"string","format":"date-time","description":"Filter notes created on or after this ISO-8601 datetime","example":"2025-01-01T00:00:00Z"},"createdBefore":{"type":"string","format":"date-time","description":"Filter notes created on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter notes updated on or after this ISO-8601 datetime (useful for delta sync)","example":"2025-12-01T00:00:00Z"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter notes updated on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"locationNoteCreate","tags":["resource / locations"],"summary":"Location / Note / Create","description":"Create a new note for a specific location.\n\n**Required permission:** `Notes.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["summary"],"properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note (required)","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note (optional)","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","default":false,"description":"Whether the note should be pinned (optional, defaults to false)","example":false}}}}}},"responses":{"201":{"description":"Note created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/locations/v2.0/{location}/notes/{note}":{"parameters":[{"name":"location","in":"path","schema":{"type":"integer"},"required":true,"description":"Location ID"},{"name":"note","in":"path","schema":{"type":"integer"},"required":true,"description":"Note ID"}],"get":{"operationId":"locationNoteShow","tags":["resource / locations"],"summary":"Location / Note / Read","description":"Get a specific note for a location.\n\n**Required permission:** `Notes.view`\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"locationNoteUpdate","tags":["resource / locations"],"summary":"Location / Note / Update","description":"Update a specific note for a location.\n\n**Required permissions:**\n- `Notes.update` for updating summary and details\n- `Notes.pin` for updating the pinned field (in addition to Notes.update if other fields are included)\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Updated maintenance note"},"details":{"type":"string","maxLength":2000,"nullable":true,"description":"Detailed content of the note. Send null to clear.","example":"Updated inspection schedule."},"pinned":{"type":"boolean","description":"Whether the note should be pinned. Requires Notes.pin permission.","example":true}}}}}},"responses":{"200":{"description":"Note updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"locationNoteDelete","tags":["resource / locations"],"summary":"Location / Note / Delete","description":"Delete a specific note from a location.\n\nNotes are permanently deleted (hard delete).\n\n**Required permission:** `Notes.delete`\n","responses":{"204":{"description":"Note deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/operators/v1.0":{"get":{"operationId":"operatorsListing","summary":"Operators / Listing","description":"Get all operators the authenticated user has access to","tags":["resource / operators"],"parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Operator ID"},"name":{"type":"string","readOnly":true,"description":"Operator name"},"email":{"type":"string","format":"email","readOnly":true,"description":"Primary contact email"},"phone":{"type":"string","readOnly":true,"description":"Primary contact phone"},"timezone":{"type":"string","readOnly":true,"description":"Operator's timezone","example":"Europe/Sofia"},"locale":{"type":"string","readOnly":true,"description":"Default locale","example":"en"},"currency":{"readOnly":true,"description":"ISO 4217 currency code","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"readOnly":true,"description":"ISO 3166-1 alpha-2 country code"},"default":{"type":"boolean","readOnly":true,"description":"Whether this is the default operator"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"Last update timestamp"}},"required":["id","name","currency","default","createdAt","updatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/operators/v1.0/{operator}":{"parameters":[{"name":"operator","in":"path","schema":{"type":"integer"},"required":true,"description":"The operator ID"}],"get":{"operationId":"operatorRead","summary":"Operator / Read","description":"Get a single operator by ID","tags":["resource / operators"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Operator ID"},"name":{"type":"string","readOnly":true,"description":"Operator name"},"email":{"type":"string","format":"email","readOnly":true,"description":"Primary contact email"},"phone":{"type":"string","readOnly":true,"description":"Primary contact phone"},"timezone":{"type":"string","readOnly":true,"description":"Operator's timezone","example":"Europe/Sofia"},"locale":{"type":"string","readOnly":true,"description":"Default locale","example":"en"},"currency":{"readOnly":true,"description":"ISO 4217 currency code","type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"readOnly":true,"description":"ISO 3166-1 alpha-2 country code"},"default":{"type":"boolean","readOnly":true,"description":"Whether this is the default operator"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Creation timestamp"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"Last update timestamp"}},"required":["id","name","currency","default","createdAt","updatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/parking-spaces/v1.0":{"post":{"operationId":"createParkingSpace","tags":["resource / parking spaces"],"summary":"Parking Space / Create","description":"Create new Parking Space","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["locationId","label"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used (default)\n- **disabled**: Parking space is inactive and cannot be used\n","default":"enabled"},"occupancyStatus":{"type":"string","default":"unknown","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"}}}]}}}},"responses":{"201":{"description":"Parking Space created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used\n- **disabled**: Parking space is inactive and cannot be used\n"},"occupancyStatus":{"type":"string","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"},"accessibleEvses":{"type":"array","description":"EVSEs associated with this parking space. Contains the position of the EVSE and is the primary of the parking space when include=accessibleEvses is used.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId","locationId","label","status","occupancyStatus","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"listParkingSpace","summary":"Parking Space / Listing","description":"Get all Parking spaces","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"externalId":{"type":"string"},"evseId":{"type":"string","format":"integer","description":"Only list Parking spaces on a certain EVSE"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the parking spaces that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the parking spaces that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the parking space records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the parking space records that were created on and before this datetime","type":"string","format":"date-time"},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","description":"Filter by whether the parking space has overhead coverage/roof protection"},"lighting":{"type":"boolean","description":"Filter by whether the parking space has lighting installed"},"dangerousGoodsAllowed":{"type":"boolean","description":"Filter by whether vehicles carrying dangerous goods are permitted"},"reservationRequired":{"type":"boolean","description":"Filter by whether prior reservation is required to use this parking space"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["evses","accessibleEvses"]}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / parking spaces"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used\n- **disabled**: Parking space is inactive and cannot be used\n"},"occupancyStatus":{"type":"string","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"},"accessibleEvses":{"type":"array","description":"EVSEs associated with this parking space. Contains the position of the EVSE and is the primary of the parking space when include=accessibleEvses is used.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId","locationId","label","status","occupancyStatus","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/parking-spaces/v1.0/{parkingSpace}":{"parameters":[{"name":"parkingSpace","in":"path","schema":{"type":"integer"},"required":true}],"put":{"operationId":"updateParkingSpace","summary":"Parking Space / Update","description":"Update Parking Space","deprecated":true,"tags":["resource / parking spaces"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["locationId","label"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used (default)\n- **disabled**: Parking space is inactive and cannot be used\n","default":"enabled"},"occupancyStatus":{"type":"string","default":"unknown","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"}}}]}}}},"responses":{"200":{"description":"Parking Space updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used\n- **disabled**: Parking space is inactive and cannot be used\n"},"occupancyStatus":{"type":"string","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"},"accessibleEvses":{"type":"array","description":"EVSEs associated with this parking space. Contains the position of the EVSE and is the primary of the parking space when include=accessibleEvses is used.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId","locationId","label","status","occupancyStatus","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"parkingSpaceUpdate","summary":"Parking Space / Update","description":"Update a Parking Space","tags":["resource / parking spaces"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used (default)\n- **disabled**: Parking space is inactive and cannot be used\n","default":"enabled"},"occupancyStatus":{"type":"string","default":"unknown","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"}}}]}}}},"responses":{"200":{"description":"Parking Space updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used\n- **disabled**: Parking space is inactive and cannot be used\n"},"occupancyStatus":{"type":"string","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"},"accessibleEvses":{"type":"array","description":"EVSEs associated with this parking space. Contains the position of the EVSE and is the primary of the parking space when include=accessibleEvses is used.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId","locationId","label","status","occupancyStatus","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["evses","accessibleEvses"]}}}],"operationId":"getParkingSpace","summary":"Parking Space / Read","description":"Get Parking Space","tags":["resource / parking spaces"],"responses":{"200":{"description":"Parking Space returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the parking space."},"locationId":{"type":"integer","description":"The ID of the location this parking space belongs to."},"label":{"type":"string","description":"Display label for the parking space (max 255 characters)."},"externalId":{"type":"string","description":"External system identifier for integration purposes. Unique per operator."},"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90,"nullable":true,"description":"GPS latitude coordinate (7 decimal places precision)."},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180,"nullable":true,"description":"GPS longitude coordinate (7 decimal places precision)."},"directions":{"type":"string","maxLength":1000,"nullable":true,"description":"Textual navigation instructions to find the parking space."},"properties":{"type":"object","description":"Physical characteristics and special features of the parking space.","properties":{"width":{"type":"integer","minimum":0,"maximum":500,"nullable":true,"description":"Width of the parking space in centimeters."},"length":{"type":"integer","minimum":0,"maximum":2000,"nullable":true,"description":"Length of the parking space in centimeters."},"driveThrough":{"type":"boolean","default":false,"description":"Indicates if the parking space supports drive-through access."},"refrigerationOutlet":{"type":"boolean","default":false,"description":"Indicates if the parking space has a refrigeration outlet for auxiliary power."},"parkingDirection":{"type":"string","enum":["parallel","perpendicular","angle"],"description":"Parking space orientation relative to the street or access lane:\n- **parallel**: Vehicle parked parallel to the street or access lane\n- **perpendicular**: Vehicle parked perpendicular (90 degrees) to the street or access lane\n- **angle**: Vehicle parked at an angle to the street or access lane (typically 45-60 degrees)\n"},"roofed":{"type":"boolean","default":false,"description":"Indicates whether the parking space has overhead coverage/roof protection."},"lighting":{"type":"boolean","default":false,"description":"Indicates whether the parking space has lighting installed."}}},"accessibility":{"type":"object","description":"Accessibility features for disabled users.","properties":{"disabilitiesAccessible":{"type":"boolean","default":false,"description":"Indicates if the parking space is suitable but not necessarily designated or restricted only for use by people with disabilities."},"kerbHeightCm":{"type":"integer","minimum":0,"maximum":100,"default":0,"description":"Height of the kerb in centimeters."},"hearingLoop":{"type":"boolean","default":false,"description":"Indicates if a hearing loop system is available."},"tactilePaving":{"type":"boolean","default":false,"description":"Indicates if tactile paving is present for visually impaired users."},"brailleSignage":{"type":"boolean","default":false,"description":"Indicates if braille signage is available."},"visualSignage":{"type":"boolean","default":false,"description":"Indicates if clear visual signage is present."},"audioAnnouncements":{"type":"boolean","default":false,"description":"Indicates if audio announcements are available."},"accessiblePaymentTerminal":{"type":"boolean","default":false,"description":"Indicates if an accessible payment terminal is available."}}},"vehicleRestrictions":{"type":"object","description":"Vehicle size restrictions and access rules.","properties":{"maxWidth":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle width in centimeters."},"maxLength":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle length in centimeters."},"maxHeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle height in centimeters."},"maxWeight":{"type":"integer","minimum":0,"nullable":true,"description":"Maximum vehicle weight in kilograms."},"supportedVehicleTypes":{"type":"array","nullable":true,"description":"Array of OCPI 2.3 compliant vehicle types allowed at this parking space. Send null or empty array to clear.","items":{"type":"string","enum":["twoAndThreeWheelVehiclesAndQuadricycles","passengerVehicles","passengerVehiclesWithTrailer","lightDutyVans","heavyDutyTractorUnitsWithoutTrailer","heavyDutyTrucksWithoutArticulationPoint","heavyDutyTrucksWithTrailerAttached","busesOrMotorCoaches"],"description":"Supported vehicle types compliant with OCPI 2.3 standard:\n- **twoAndThreeWheelVehiclesAndQuadricycles**: Motorcycles, scooters, quadricycles\n- **passengerVehicles**: Standard passenger cars\n- **passengerVehiclesWithTrailer**: Cars towing trailers\n- **lightDutyVans**: Light commercial vans\n- **heavyDutyTractorUnitsWithoutTrailer**: Tractor units (no trailer attached)\n- **heavyDutyTrucksWithoutArticulationPoint**: Rigid trucks\n- **heavyDutyTrucksWithTrailerAttached**: Articulated lorries\n- **busesOrMotorCoaches**: Buses and coaches\n"}},"restrictedToSpecificVehicleTypes":{"type":"boolean","default":false,"description":"Indicates that the parking space is only allowed for the specific vehicle types."},"evOnly":{"type":"boolean","default":false,"description":"Parking space is restricted to electric vehicles only."},"whileChargingOnly":{"type":"boolean","default":false,"description":"Parking allowed only while actively charging."},"disabledPermitOnly":{"type":"boolean","default":false,"description":"Disabled parking permit required."},"customersOnly":{"type":"boolean","default":false,"description":"Restricted to customers of the operator."},"staffOnly":{"type":"boolean","default":false,"description":"Restricted to staff/employees only."},"deliveriesOnly":{"type":"boolean","default":false,"description":"Restricted to delivery vehicles only."},"permitRequired":{"type":"boolean","default":false,"description":"General parking permit required."},"taxisOnly":{"type":"boolean","default":false,"description":"Restricted to licensed taxis only."},"parkAndRide":{"type":"boolean","default":false,"description":"Designated as a park and ride facility."},"dangerousGoodsAllowed":{"type":"boolean","default":false,"description":"Indicates whether vehicles carrying dangerous goods are permitted to use this parking space."},"reservationRequired":{"type":"boolean","default":false,"description":"Indicates whether prior reservation is required to use this parking space."},"timeLimit":{"type":"integer","minimum":0,"description":"Maximum allowed parking duration in minutes. Value of 0 indicates no time limit."}}},"compliance":{"type":"object","description":"Compliance standards and certifications applicable to this parking space.","properties":{"standards":{"type":"array","description":"List of compliance standards applicable to this parking space (e.g., \"PAS 1899\", \"ISO 17438\"). Each standard identifier limited to 100 characters.","items":{"type":"string","maxLength":100}},"apdsReference":{"type":"string","maxLength":255,"description":"Reference identifier for the Accessible Parking Data Standard (APDS) specification."}}},"disabilitiesAccessible":{"deprecated":true,"type":"boolean"},"evses":{"deprecated":true,"type":"array","items":{"type":"integer"},"description":"The list of EVSE IDs at the same Parking Space. EVSEs must belong to the same charging zone. Each EVSE will be auto-assigned with position \"front\" and marked as not primary."}}},{"type":"object","properties":{"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"status":{"type":"string","enum":["enabled","disabled"],"description":"Current operational status of the parking space:\n- **enabled**: Parking space is active and can be used\n- **disabled**: Parking space is inactive and cannot be used\n"},"occupancyStatus":{"type":"string","enum":["unknown","available","occupied"],"description":"Current occupancy status of the parking space:\n- **unknown**: Occupancy status cannot be determined (default)\n- **available**: Parking space is free and ready for use\n- **occupied**: Parking space is currently in use\n"},"accessibleEvses":{"type":"array","description":"EVSEs associated with this parking space. Contains the position of the EVSE and is the primary of the parking space when include=accessibleEvses is used.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}],"required":["id","operatorId","locationId","label","status","occupancyStatus","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteParkingSpace","summary":"Parking Space / Delete","description":"Delete Parking Space","tags":["resource / parking spaces"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/parking-spaces/v1.0/{parkingSpace}/evses":{"parameters":[{"name":"parkingSpace","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"parkingSpacesEvsesListing","summary":"Parking Space / EVSEs / Listing","description":"Get all EVSEs associated with this parking space.","tags":["resource / parking spaces"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","description":"EVSEs associated with this parking space.","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"parkingSpacesEvsesSync","tags":["resource / parking spaces"],"summary":"Parking Space / EVSEs / Update","description":"Sync multiple EVSEs to the Parking Space at once, setting their position and primary status.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","description":"Represents how an EVSE is linked to a parking space, including its physical position and whether it's the primary EVSE for that space.","properties":{"parkingSpaceId":{"type":"integer","description":"The ID of the associated parking space."},"evseId":{"type":"integer","description":"The ID of the associated EVSE."},"position":{"description":"The position of the EVSE relative to the parking space.","type":"string","enum":["front","rear","left","right","frontLeft","frontRight","rearLeft","rearRight"]},"isPrimary":{"type":"boolean","description":"Indicates if this is the primary EVSE for the parking space. Only one EVSE can be marked as primary per parking space."}},"required":["parkingSpaceId","evseId","position","isPrimary"]}}}}},"responses":{"204":{"description":"Given EVSEs are synchronized successfully to the Parking space"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}}},"/public-api/resources/partner-contracts/v1.0":{"get":{"operationId":"partnerContractsListing","tags":["resource / partner contracts"],"summary":"Partner Contracts / Listing","description":"Get all Partner Contracts","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Lists only partner contracts with the specified contract type."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the partner contracts that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the partner contracts that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the partner contract records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the partner contract records that were created on and before this datetime","type":"string","format":"date-time"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","title","partnerId","startDate"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerContractCreate","tags":["resource / partner contracts"],"summary":"Partner Contract / Create","description":"Create new Partner Contract","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}}},"required":["title","partnerId","startDate"]}}}},"responses":{"201":{"description":"Partner Contract created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","title","partnerId","startDate"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-contracts/v1.0/{partnerContract}":{"parameters":[{"name":"partnerContract","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"partnerContractRead","summary":"Partner Contract / Read","description":"Get a Partner Contract","tags":["resource / partner contracts"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","title","partnerId","startDate"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"partnerContractUpdate","summary":"Partner Contract / Update","description":"Update a Partner Contract","tags":["resource / partner contracts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}}},"required":["title","partnerId","startDate"]}}}},"responses":{"200":{"description":"Partner Contract updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","title","partnerId","startDate"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"partnerContractPatch","summary":"Partner Contract / Patch","description":"Partially update a Partner Contract. Only provided fields are updated; omitted fields retain their current values.","tags":["resource / partner contracts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"All fields are optional for partial updates. Only provided fields are updated.","properties":{"title":{"type":"string"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}}}}}}},"responses":{"200":{"description":"Partner Contract updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"title":{"type":"string"},"partnerId":{"type":"integer"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Indicates the business relationship model for the contract. `revenueSharing` means the operator is the supplier and remits a share to the partner. `paymentFacilitation` means the partner is the supplier and the operator acts as payment facilitator."},"startDate":{"type":"string","format":"date-time","description":"The contract is effective from the first of the selected month."},"endDate":{"type":"string","format":"date-time","nullable":true,"description":"The contract expires at the last day of the selected month. If nothing is selected, there is no expiration date."},"autoRenewal":{"type":"boolean"},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","maxLength":255},"accessAndPermissions":{"type":"object","properties":{"sessionsRemoteControl":{"type":"boolean","description":"Allows the partner to start/stop session, unlock connector, trigger message, set a charging profile and get the composite schedule."},"startReservation":{"type":"boolean","description":"Allows the partner to make reservations."},"stopReservation":{"type":"boolean","description":"Allows the partner to cancel reservations."},"resetChargePoint":{"type":"boolean","description":"Allows the partner to reset charge points."},"firmwareUpdate":{"type":"boolean","description":"Allows the partner to make firmware updates to the charge points."}}},"revenueSharing":{"type":"object","properties":{"partnerSharePercentageAcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"partnerSharePercentageDcEvse":{"type":"number","format":"float","minimum":0,"maximum":100},"excludeConnectionFee":{"type":"boolean","description":"If the tariff has a Connection fee, this fee would not be included in the revenue sharing with the Partner and will remain entirely for the Operator."},"deductElectricityCost":{"type":"boolean","description":"The cost of the electricity would first be deducted from the collected revenue and then the Revenue sharing rules will be applied."},"reimburseForElectricityCost":{"type":"boolean","description":"If set to true, the Partner would receive not only their share of the revenue but also a reimbursement for the cost of the electricity. The formula to calculate the amount to be received by the Partner is (Revenue - Electricity cost) x Partner percentage + Electricity cost. It could be supplied only if deductElectricityCost is set to true."},"fixedFeePerSessionAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on AC Charging Station."},"fixedFeePerSessionDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed session and subtracted from the Partner's share of the revenue for each session on DC Charging Station."},"feePerKwhAc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on AC Charging Station."},"feePerKwhDc":{"type":"number","format":"float","nullable":true,"description":"Additional flat fee that is applied for every billed kWh and subtracted from the Partner's share of the revenue for each kWh billed on DC Charging Station."},"handlingFee":{"type":"number","format":"float","minimum":0,"maximum":100,"nullable":true,"description":"Additional percentage fee to be applied on the total amount paid by the user for the session. This fee is then subtracted from the Partner's share of the revenue."}}},"monthlyPlatformFees":{"type":"object","properties":{"perChargePoint":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perAcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."},"perDcEvse":{"type":"number","format":"float","description":"The provided amount should be excluding VAT."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","title","partnerId","startDate"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerContractDelete","summary":"Partner Contract / Delete","description":"Delete a Partner Contract","tags":["resource / partner contracts"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-expenses/v1.0":{"get":{"operationId":"expensesListingDeprecated","deprecated":true,"tags":["resource / revenues & expenses"],"summary":"Expenses / Listing","description":"Get all expenses","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain partner"},"dateFrom":{"type":"string","format":"date-time","description":"Date from based on created at"},"dateTo":{"type":"string","format":"date-time","description":"Date to based on created at"},"origin":{"type":"string","enum":["platform-fee-emsp","platform-fee-cpo","user-custom-fee","session-emsp"],"description":"Only list revenue by origin"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list expenses by currency"}}}},{"in":"query","name":"withBreakdown","description":"A detailed information about the expense \"platform-fee-cpo\" is returned, based on the contract details.","schema":{"type":"boolean","default":false}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"partnerName":{"type":"string"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string"},"period":{"type":"string","description":"Month and year the expense refers to"},"totalAmount":{"type":"number"},"chargingSessionId":{"type":"integer","nullable":true},"startedAt":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"string","nullable":true,"description":"Charging Session duration"},"chargePointName":{"type":"string","nullable":true},"authorization":{"type":"string","nullable":true,"description":"Source of authorisation"},"subtotal":{"type":"number","nullable":true},"operatorDiscountPercentage":{"type":"number","format":"decimal","nullable":true},"operatorDiscountAmount":{"type":"number","format":"decimal","nullable":true},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"breakdown":{"type":"array","items":{"type":"object","description":"Expense Breakdown","properties":{"partnerContractId":{"type":"integer"},"numberOfChargePoints":{"type":"integer"},"totalPlatformFeeChargePoints":{"type":"number"},"numberOfAcEvses":{"type":"integer"},"totalPlatformFeeAcEvses":{"type":"number"},"numberOfDcEvses":{"type":"integer"},"totalPlatformFeeDcEvses":{"type":"number"}},"required":["partnerContractId","numberOfChargePoints","totalPlatformFeeChargePoints","numberOfAcEvses","totalPlatformFeeAcEvses","numberOfDcEvses","totalPlatformFeeDcEvses"]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","partnerName","date","origin","totalAmount","currency"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-expenses/v1.1":{"get":{"operationId":"expensesListing","deprecated":true,"tags":["resource / revenues & expenses"],"summary":"Expenses / Listing","description":"This endpoint is deprecated. Use v1.2 for tax-inclusive amount breakdowns.\n\nGet all expenses","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain partner"},"settlementReportId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain settlement report"},"dateBefore":{"type":"string","format":"date-time"},"dateAfter":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["platform-fee-emsp","platform-fee-cpo","private-evse-access-fee","user-custom-fee","session-emsp"],"description":"Only list expenses by origin"},"currencyCode":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list expenses by currency"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the expense records that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the expense records that were last updated on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"withBreakdown","description":"A detailed information about the expense \"platform-fee-cpo\" is returned, based on the contract details.","schema":{"type":"boolean","default":false}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"partnerName":{"type":"string"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["platform-fee-emsp","platform-fee-cpo","private-evse-access-fee","user-custom-fee","session-emsp"]},"period":{"type":"string","description":"Month and year the expense refers to. Applicable for records with platform-fee-emsp, platform-fee-cpo, or private-evse-access-fee origin","example":"November 2025"},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"settlementReportId":{"type":"integer","nullable":true},"chargingSessionId":{"type":"integer","nullable":true},"startedAt":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"string","nullable":true,"description":"Charging Session duration"},"chargePointName":{"type":"string","nullable":true},"chargePointId":{"type":"integer","description":"Charge point ID. Only applicable for records with private-evse-access-fee origin"},"evseCount":{"type":"integer","description":"Number of EVSEs accessed on this charge point. Only applicable for records with private-evse-access-fee origin"},"authorization":{"type":"string","nullable":true,"description":"Source of authorisation"},"operatorDiscountPercentage":{"type":"number","format":"decimal","nullable":true},"operatorDiscountAmount":{"type":"number","format":"decimal","nullable":true},"breakdown":{"type":"array","items":{"type":"object","description":"Expense Breakdown","properties":{"partnerContractId":{"type":"integer"},"numberOfChargePoints":{"type":"integer"},"totalPlatformFeeChargePoints":{"type":"number"},"numberOfAcEvses":{"type":"integer"},"totalPlatformFeeAcEvses":{"type":"number"},"numberOfDcEvses":{"type":"integer"},"totalPlatformFeeDcEvses":{"type":"number"}},"required":["partnerContractId","numberOfChargePoints","totalPlatformFeeChargePoints","numberOfAcEvses","totalPlatformFeeAcEvses","numberOfDcEvses","totalPlatformFeeDcEvses"]}}},"required":["id","partnerId","partnerName","date","origin","totalAmount","currencyCode","settlementReportId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-expenses/v1.2":{"get":{"operationId":"expensesV1_2Listing","tags":["resource / revenues & expenses"],"summary":"Expenses / Listing","description":"Get all expenses","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain partner"},"settlementReportId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain settlement report"},"origin":{"type":"string","enum":["platform-fee-emsp","platform-fee-cpo","private-evse-access-fee","user-custom-fee","session-emsp"],"description":"Only list expenses by origin"},"currencyCode":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list expenses by currency"},"dateBefore":{"type":"string","format":"date-time"},"dateAfter":{"type":"string","format":"date-time"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the expense records that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the expense records that were last updated on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"withBreakdown","description":"A detailed information about the expense \"platform-fee-cpo\" is returned, based on the contract details.","schema":{"type":"boolean","default":false}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["platform-fee-emsp","platform-fee-cpo","private-evse-access-fee","user-custom-fee","session-emsp"]},"period":{"type":"string","description":"Month and year the expense refers to. Applicable for records with platform-fee-emsp, platform-fee-cpo, or private-evse-access-fee origin","example":"November 2025"},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"settlementReportId":{"type":"integer","nullable":true},"chargingSessionId":{"type":"integer"},"startedAt":{"type":"string","format":"date-time"},"duration":{"type":"string","description":"Charging Session duration"},"chargePointId":{"type":"integer","description":"Charge point ID. Only applicable for records with private-evse-access-fee origin"},"evseCount":{"type":"integer","description":"Number of EVSEs accessed on this charge point. Only applicable for records with private-evse-access-fee origin"},"authorization":{"type":"string","description":"Source of authorisation"},"operatorDiscountPercentage":{"type":"number","format":"decimal"},"operatorDiscountAmount":{"type":"number","format":"decimal"},"breakdown":{"type":"array","items":{"type":"object","description":"Expense Breakdown","properties":{"partnerContractId":{"type":"integer"},"numberOfChargePoints":{"type":"integer"},"totalPlatformFeeChargePoints":{"type":"number"},"numberOfAcEvses":{"type":"integer"},"totalPlatformFeeAcEvses":{"type":"number"},"numberOfDcEvses":{"type":"integer"},"totalPlatformFeeDcEvses":{"type":"number"}},"required":["partnerContractId","numberOfChargePoints","totalPlatformFeeChargePoints","numberOfAcEvses","totalPlatformFeeAcEvses","numberOfDcEvses","totalPlatformFeeDcEvses"]}}},"required":["id","partnerId","date","origin","totalAmount","currencyCode","settlementReportId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-invites/v1.0":{"get":{"operationId":"partnerInvitesListing","summary":"Partner Invites / Listing","tags":["resource / partner invites"],"description":"Get all partner invites","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list expenses associated with a certain partner"},"status":{"type":"string","enum":["pending","sent","accepted"],"description":"Only list invites in this status"},"createdFrom":{"type":"string","format":"date-time"},"createdTo":{"type":"string","format":"date-time"},"userId":{"type":"string","format":"integer","description":"Only list partner invite records accepted by a certain user"},"inviteEmail":{"type":"string","format":"email","description":"Only list partner invite records sent to a particular email address"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the partner invites that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the partner invites that were last updated on and before this datetime","type":"string","format":"date-time"},"acceptedAfter":{"description":"ISO 8601 formatted date. Lists only the partner invites that were accepted on and after this datetime","type":"string","format":"date-time"},"acceptedBefore":{"description":"ISO 8601 formatted date. Lists only the partner invites that were accepted on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerInviteCreate","tags":["resource / partner invites"],"summary":"Partner Invite / Create","description":"Create new invite","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Partner Invite","properties":{"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","format":"email","description":"Required by default. Prohibited if sendViaEmail is false."},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used. Prohibited if `sendViaEmail` is false."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"description":"The url is shown only for \"Sent\" or \"Pending\" statuses."},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}}},"required":["partnerId"]}}}},"responses":{"201":{"description":"Invite created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-invites/v1.0/{partnerInvite}":{"get":{"operationId":"partnerInviteRead","summary":"Partner Invite / Read","tags":["resource / partner invites"],"description":"Get a invite","parameters":[{"in":"path","name":"partnerInvite","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"partnerInviteUpdate","summary":"Partner Invite / Update","tags":["resource / partner invites"],"description":"Update a invite","parameters":[{"in":"path","name":"partnerInvite","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Partner Invite","properties":{"partnerId":{"type":"integer"},"sendViaEmail":{"readOnly":true,"type":"boolean"},"email":{"type":"string","format":"email","readOnly":true,"description":"Required by default. Prohibited if `sendViaEmail` is false."},"language":{"type":"string","readOnly":true,"description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used. Prohibited if `sendViaEmail` is false."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"description":"The url is shown only for \"Sent\" or \"Pending\" statuses."},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}}}}}}},"responses":{"200":{"description":"Invite updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerInviteDelete","summary":"Partner Invite / Delete","tags":["resource / partner invites"],"description":"Delete an invite","parameters":[{"in":"path","name":"partnerInvite","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-revenues/v1.0":{"get":{"operationId":"revenuesListingDeprecated","deprecated":true,"tags":["resource / revenues & expenses"],"summary":"Revenues / Listing","description":"Get all revenues","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list revenue associated with a certain partner"},"dateFrom":{"type":"string","format":"date-time","description":"Date from based on created at"},"dateTo":{"type":"string","format":"date-time","description":"Date to based on created at"},"origin":{"type":"string","enum":["electricity-tax-reimbursement","session-cpo"],"description":"Only list revenue by origin"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list revenue by currency"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"partnerName":{"type":"string"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string"},"chargingSessionId":{"type":"integer"},"startedAt":{"type":"string","format":"date-time"},"duration":{"type":"string","description":"Charging Session duration"},"chargePointName":{"type":"string"},"authorization":{"type":"string","description":"Source of authorisation","nullable":true},"totalAmount":{"type":"number"},"electricityCost":{"type":"number","nullable":true},"remainingRevenue":{"type":"number"},"operatorShare":{"type":"number"},"partnerShare":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","partnerName","date","origin","totalAmount","partnerShare","currency"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-revenues/v1.1":{"get":{"operationId":"revenuesListing","deprecated":true,"tags":["resource / revenues & expenses"],"summary":"Revenues / Listing","description":"This endpoint is deprecated. Use v1.2 for tax-inclusive amount breakdowns.\n\nGet all revenues","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list revenue associated with a certain partner"},"settlementReportId":{"type":"string","format":"integer","description":"Only list revenue associated with a certain settlement report"},"dateBefore":{"type":"string","format":"date-time"},"dateAfter":{"type":"string","format":"date-time"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the revenue records that were last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the revenue records that were last updated on and before this datetime"},"origin":{"type":"string","enum":["electricity-tax-reimbursement","private-evse-access-fee","session-cpo"],"description":"Only list revenue by origin"},"currencyCode":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list revenue by currency"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"partnerName":{"type":"string"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["electricity-tax-reimbursement","private-evse-access-fee","session-cpo"]},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"operatorShare":{"type":"number"},"partnerShare":{"type":"number"},"currencyCode":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"settlementReportId":{"type":"integer","nullable":true},"period":{"type":"string","description":"Month and year the revenue applies to. Only applicable for records with private-evse-access-fee origin","example":"November 2025"},"chargePointId":{"type":"integer","description":"Charge point ID. Only applicable for records with private-evse-access-fee origin"},"evseCount":{"type":"integer","description":"Number of EVSEs accessed on this charge point. Only applicable for records with private-evse-access-fee origin"},"chargingSessionId":{"type":"integer"},"startedAt":{"type":"string","format":"date-time"},"duration":{"type":"string","description":"Charging Session duration"},"chargePointName":{"type":"string"},"authorization":{"type":"string","description":"Source of authorisation","nullable":true},"electricityCost":{"type":"number","nullable":true},"remainingRevenue":{"type":"number"},"collectedAt":{"type":"string","format":"date-time","nullable":true,"description":"If not null, the session amount has been fully collected **Only applicable for records with session-cpo origin**"}},"required":["id","partnerId","partnerName","date","origin","totalAmount","partnerShare","operatorShare","currencyCode","settlementReportId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-revenues/v1.2":{"get":{"operationId":"revenuesV1_2Listing","tags":["resource / revenues & expenses"],"summary":"Revenues / Listing","description":"Get all revenues","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"string","format":"integer","description":"Only list revenue associated with a certain partner"},"settlementReportId":{"type":"string","format":"integer","description":"Only list revenue associated with a certain settlement report"},"origin":{"type":"string","enum":["electricity-tax-reimbursement","private-evse-access-fee","session-cpo"],"description":"Only list revenue by origin"},"currencyCode":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217). Only list revenue by currency"},"dateBefore":{"type":"string","format":"date-time"},"dateAfter":{"type":"string","format":"date-time"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the revenue records that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the revenue records that were last updated on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"date":{"type":"string","format":"date-time"},"origin":{"type":"string","enum":["electricity-tax-reimbursement","private-evse-access-fee","session-cpo"]},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"operatorShare":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"partnerShare":{"type":"object","properties":{"withoutTax":{"type":"number"},"withTax":{"type":"number"}},"required":["withoutTax"]},"currencyCode":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"settlementReportId":{"type":"integer","nullable":true},"period":{"type":"string","description":"Month and year the revenue applies to. Only applicable for records with private-evse-access-fee origin","example":"November 2025"},"chargePointId":{"type":"integer","description":"Charge point ID. Only applicable for records with private-evse-access-fee origin"},"evseCount":{"type":"integer","description":"Number of EVSEs accessed on this charge point. Only applicable for records with private-evse-access-fee origin"},"chargingSessionId":{"type":"integer"},"startedAt":{"type":"string","format":"date-time"},"duration":{"type":"string","description":"Charging Session duration"},"authorization":{"type":"string","description":"Source of authorisation"},"electricityCost":{"type":"object","properties":{"withoutTax":{"type":"number"}},"required":["withoutTax"]},"remainingRevenue":{"type":"object","properties":{"withoutTax":{"type":"number"}},"required":["withoutTax"]},"collectedAt":{"type":"string","format":"date-time","description":"The date at which the session amount has been fully collected. Only applicable for records with session-cpo origin"}},"required":["id","partnerId","date","origin","totalAmount","partnerShare","operatorShare","currencyCode","settlementReportId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/partner-settlement-reports/v1.0":{"get":{"operationId":"partnerSettlementReportsListing","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Reports / Listing","description":"Get all Partner Settlement Reports","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"integer"},"periodAfter":{"type":"string","format":"date"},"periodBefore":{"type":"string","format":"date"},"externalId":{"type":"string"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique settlement report identifier."},"partnerId":{"type":"integer","description":"Unique identifier of the partner involved in the settlement."},"number":{"type":"string","description":"Settlement report reference number."},"date":{"type":"string","format":"date","description":"Date the settlement report was generated."},"periodStart":{"type":"string","format":"date","description":"Start date of the period covered by the report."},"periodEnd":{"type":"string","format":"date","description":"End date of the period covered by the report."},"currencyCode":{"type":"string","description":"Currency used in the settlement (e.g., USD, EUR)."},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"}},"required":["withoutTax"],"description":"Total settlement amount."},"totalExpenses":{"type":"number","description":"Total expenses incurred during the settlement period."},"totalRevenue":{"type":"number","description":"Total revenue generated during the settlement period."},"totalAwaitedRevenue":{"type":"number","description":"Revenue expected but not yet collected."},"totalCollectedRevenue":{"type":"number","description":"Revenue collected during the settlement period."},"totalCollectedRevenueFromPreviousPeriod":{"type":"number","description":"Revenue collected during this period, but related to a previous periods."},"totalEnergyCpoWh":{"type":"number","description":"Total amount of energy (in Wh) delivered by the Charge Point Operator."},"totalEnergyEmspWh":{"type":"number","description":"Total amount of energy (in Wh) consumed by the EMSP."},"supplier":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]}],"description":"Company details for the entity supplying the service - the CPO."},"customer":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]},{"type":"object","properties":{"bankIban":{"type":"string","nullable":true},"bankName":{"type":"string","nullable":true},"bankAddress":{"type":"string","nullable":true},"bankCode":{"type":"string","nullable":true},"bankAccountNumber":{"type":"string","nullable":true},"bankAccountType":{"type":"string","nullable":true}},"required":["bankIban","bankName","bankAddress","bankCode","bankAccountNumber","bankAccountType"]}],"description":"Company details for the entity receiving the service - the Partner/EMSP."},"downloadUrl":{"type":"string","format":"url","description":"Link to download the full settlement report document."},"externalId":{"type":"string","description":"External invoice or reference ID for integration with external accounting systems."},"deductedFees":{"description":"Aggregated deducted fees for the settlement period. Included only when at least one fee is non-zero.","type":"object","properties":{"feePerSessionAc":{"type":"number","description":"Total fixed fee for AC sessions in the settlement period."},"feePerSessionDc":{"type":"number","description":"Total fixed fee for DC sessions in the settlement period."},"feePerKwhAc":{"type":"number","description":"Total fee per AC kWh delivered in the settlement period."},"feePerKwhDc":{"type":"number","description":"Total fee per DC kWh delivered in the settlement period."},"handlingFee":{"type":"number","description":"Total percentage-based handling fee for the settlement period."}},"required":["feePerSessionAc","feePerSessionDc","feePerKwhAc","feePerKwhDc","handlingFee"]}},"required":["id","partnerId","number","date","periodStart","periodEnd","currencyCode","totalAmount","totalExpenses","totalRevenue","totalAwaitedRevenue","totalCollectedRevenue","totalCollectedRevenueFromPreviousPeriod","totalEnergyCpoWh","totalEnergyEmspWh","supplier","customer","downloadUrl"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}},"required":["data","links","meta"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-settlement-reports/v1.0/{partnerSettlementReport}":{"get":{"operationId":"partnerSettlementReportRead","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Read","description":"Get a single Partner Settlement Report","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","description":"Unique settlement report identifier."},"partnerId":{"type":"integer","description":"Unique identifier of the partner involved in the settlement."},"number":{"type":"string","description":"Settlement report reference number."},"date":{"type":"string","format":"date","description":"Date the settlement report was generated."},"periodStart":{"type":"string","format":"date","description":"Start date of the period covered by the report."},"periodEnd":{"type":"string","format":"date","description":"End date of the period covered by the report."},"currencyCode":{"type":"string","description":"Currency used in the settlement (e.g., USD, EUR)."},"totalAmount":{"type":"object","properties":{"withoutTax":{"type":"number"}},"required":["withoutTax"],"description":"Total settlement amount."},"totalExpenses":{"type":"number","description":"Total expenses incurred during the settlement period."},"totalRevenue":{"type":"number","description":"Total revenue generated during the settlement period."},"totalAwaitedRevenue":{"type":"number","description":"Revenue expected but not yet collected."},"totalCollectedRevenue":{"type":"number","description":"Revenue collected during the settlement period."},"totalCollectedRevenueFromPreviousPeriod":{"type":"number","description":"Revenue collected during this period, but related to a previous periods."},"totalEnergyCpoWh":{"type":"number","description":"Total amount of energy (in Wh) delivered by the Charge Point Operator."},"totalEnergyEmspWh":{"type":"number","description":"Total amount of energy (in Wh) consumed by the EMSP."},"supplier":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]}],"description":"Company details for the entity supplying the service - the CPO."},"customer":{"allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["individual","company"]},"name":{"type":"string"},"contactPerson":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"regNo":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"email":{"type":"string","nullable":true}},"required":["type","name","contactPerson","country","region","city","postCode","address","regNo","taxId","phone","email"]},{"type":"object","properties":{"bankIban":{"type":"string","nullable":true},"bankName":{"type":"string","nullable":true},"bankAddress":{"type":"string","nullable":true},"bankCode":{"type":"string","nullable":true},"bankAccountNumber":{"type":"string","nullable":true},"bankAccountType":{"type":"string","nullable":true}},"required":["bankIban","bankName","bankAddress","bankCode","bankAccountNumber","bankAccountType"]}],"description":"Company details for the entity receiving the service - the Partner/EMSP."},"downloadUrl":{"type":"string","format":"url","description":"Link to download the full settlement report document."},"externalId":{"type":"string","description":"External invoice or reference ID for integration with external accounting systems."},"deductedFees":{"description":"Aggregated deducted fees for the settlement period. Included only when at least one fee is non-zero.","type":"object","properties":{"feePerSessionAc":{"type":"number","description":"Total fixed fee for AC sessions in the settlement period."},"feePerSessionDc":{"type":"number","description":"Total fixed fee for DC sessions in the settlement period."},"feePerKwhAc":{"type":"number","description":"Total fee per AC kWh delivered in the settlement period."},"feePerKwhDc":{"type":"number","description":"Total fee per DC kWh delivered in the settlement period."},"handlingFee":{"type":"number","description":"Total percentage-based handling fee for the settlement period."}},"required":["feePerSessionAc","feePerSessionDc","feePerKwhAc","feePerKwhDc","handlingFee"]}},"required":["id","partnerId","number","date","periodStart","periodEnd","currencyCode","totalAmount","totalExpenses","totalRevenue","totalAwaitedRevenue","totalCollectedRevenue","totalCollectedRevenueFromPreviousPeriod","totalEnergyCpoWh","totalEnergyEmspWh","supplier","customer","downloadUrl"]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-settlement-reports/v1.0/{partnerSettlementReport}/records":{"get":{"operationId":"partnerSettlementReportPartnerSettlementRecordsListing","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Partner Settlement Records / Listing","description":"Get all Partner Settlement Records","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]},{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}},"required":["data","links","meta"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerSettlementReportPartnerSettlementRecordCreate","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Partner Settlement Record / Create","description":"Create Partner Settlement Record","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]},{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partner-settlement-reports/v1.0/{partnerSettlementReport}/records/{PartnerSettlementRecord}":{"get":{"operationId":"partnertSettlementReportPartnerSettlementRecordRead","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Partner Settlement Record / Read","description":"Read Partner Settlement Record","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true},{"in":"path","name":"PartnerSettlementRecord","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]},{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"partnerSettlementReportPartnerSettlementRecordUpdate","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Partner Settlement Record / Update","description":"Update a single Partner Settlement Record","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true},{"in":"path","name":"PartnerSettlementRecord","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]},{"type":"object","properties":{"date":{"type":"string","format":"date"},"paidAmount":{"type":"number"},"note":{"type":"string"}},"required":["date","paidAmount","note"]}]}},"required":["data"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerSettlementReportPartnerSettlementRecordDelete","tags":["resource / partner settlement reports"],"summary":"Partner Settlement Report / Partner Settlement Record / Delete","description":"Delete a single Partner Settlement Record","parameters":[{"in":"path","name":"partnerSettlementReport","schema":{"type":"integer"},"required":true},{"in":"path","name":"PartnerSettlementRecord","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v1.0":{"get":{"operationId":"partnersListingDeprecated","deprecated":true,"tags":["resource / partners"],"summary":"Partners / Listing","description":"Get all partners","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"Lists partners from the specified country"},"search":{"type":"string","description":"Case-insensitive partial match against partner name and business name. Values shorter than 3 characters are ignored."},"regNo":{"type":"string","description":"Lists partners with the specified regNo"},"externalId":{"type":"string","description":"Only list partner, identified by the externalId","nullable":true},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the partners that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the partners that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the partner records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the partner records that were created on and before this datetime","type":"string","format":"date-time"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerCreateDeprecated","deprecated":true,"tags":["resource / partners"],"summary":"Partner / Create","description":"Create new partner","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"}},"required":["name"]}}}},"responses":{"201":{"description":"Partner created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v1.0/{partner}":{"get":{"operationId":"partnerReadDeprecated","deprecated":true,"summary":"Partner / Read","tags":["resource / partners"],"description":"Get a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"partnerUpdateDeprecated","deprecated":true,"summary":"Partner / Update","tags":["resource / partners"],"description":"Update a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"}},"required":["name"]}]}}}},"responses":{"200":{"description":"Partner updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true},"faultNotificationsEmail":{"type":"string","format":"email","nullable":true},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerDeleteDeprecated","deprecated":true,"summary":"Partner / Delete","tags":["resource / partners"],"description":"Delete a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0":{"get":{"operationId":"partnersListing","tags":["resource / partners"],"summary":"Partners / Listing","description":"Get all partners","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"Lists partners from the specified country"},"search":{"type":"string","description":"Case-insensitive partial match against partner name and business name. Values shorter than 3 characters are ignored."},"regNo":{"type":"string","description":"Lists partners with the specified regNo"},"externalId":{"type":"string","description":"Only list partner, identified by the externalId","nullable":true},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the partners that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the partners that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the partner records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the partner records that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["notes"]}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string","description":"Company name of the Partner"},"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users."},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nThis field returns the same value as `limit` when `frequency` is 'monthly'.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit."},"limit":{"type":"number","format":"decimal","minimum":0,"description":"The billing limit for the specified frequency."},"discount":{"type":"number","format":"decimal"}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this partner will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"required":["id","operatorId","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerCreate","tags":["resource / partners"],"summary":"Partner / Create","description":"Create new partner","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users. If not provided, the `name` will be used instead."}}},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Company name of the Partner"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true,"deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nWhen this field is provided, it is equivalent to setting `frequency` to 'monthly' and `limit` to the provided value.\nNote: Cannot be provided together with `limit`.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit. Required when `limit` is first set. On subsequent updates, can be changed independently."},"limit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The billing limit for the specified frequency. Requires `frequency` to be set when first created. On subsequent updates, can be changed independently."},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}}]}],"required":["name"]}}}},"responses":{"201":{"description":"Partner created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string","description":"Company name of the Partner"},"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users."},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nThis field returns the same value as `limit` when `frequency` is 'monthly'.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit."},"limit":{"type":"number","format":"decimal","minimum":0,"description":"The billing limit for the specified frequency."},"discount":{"type":"number","format":"decimal"}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this partner will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0/{partner}":{"get":{"operationId":"partnerRead","summary":"Partner / Read","tags":["resource / partners"],"description":"Get a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["notes"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string","description":"Company name of the Partner"},"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users."},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nThis field returns the same value as `limit` when `frequency` is 'monthly'.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit."},"limit":{"type":"number","format":"decimal","minimum":0,"description":"The billing limit for the specified frequency."},"discount":{"type":"number","format":"decimal"}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this partner will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"partnerUpdate","summary":"Partner / Update","tags":["resource / partners"],"description":"Update a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"title":"Partner Update","description":"Partner update data","anyOf":[{"allOf":[{"type":"object","properties":{"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users."}}},{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string","description":"Company name of the Partner"},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","nullable":true,"deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nWhen this field is provided, it is equivalent to setting `frequency` to 'monthly' and `limit` to the provided value.\nNote: Cannot be provided together with `limit`.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit. Required when `limit` is first set. On subsequent updates, can be changed independently."},"limit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The billing limit for the specified frequency. Requires `frequency` to be set when first created. On subsequent updates, can be changed independently."},"discount":{"type":"number","format":"decimal","nullable":true}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}]}]}}}},"responses":{"200":{"description":"Partner updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string","description":"Company name of the Partner"},"businessName":{"type":"string","description":"The Partner's business name is used when showing the name of the Partner to EV drivers and admin users."},"regNo":{"type":"string","nullable":true},"vatNo":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"nullable":true,"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"contactDetails":{"type":"object","nullable":true,"properties":{"administrative":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"technical":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}},"billing":{"type":"object","nullable":true,"properties":{"contactPerson":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"phone":{"type":"string","nullable":true}}}}},"notifications":{"type":"object","properties":{"technical":{"type":"object","properties":{"chargePointFaults":{"type":"boolean","default":false}}},"billing":{"type":"object","properties":{"settlementReports":{"type":"boolean","default":false}}}}},"monthlyPlatformFee":{"type":"number","format":"decimal","nullable":true},"options":{"type":"object","properties":{"userVisibility":{"type":"string","enum":["none","all","corporateBillingOnly"],"default":"none","description":"Controls which invited users are visible to Partner admins:\n- `none`: Partner admins cannot see any invited users\n- `all`: Partner admins can see all users who accepted their invite\n- `corporateBillingOnly`: Partner admins can see only users whose invite has corporate billing enabled\n"},"allowViewingUsersWhoAcceptedInvite":{"type":"boolean","default":false,"deprecated":true,"description":"**Deprecated.** Use `userVisibility` instead.\nWhen enabled (`true`), maps to `userVisibility: all`. When disabled (`false`), maps to `userVisibility: none`.\nIf both `userVisibility` and `allowViewingUsersWhoAcceptedInvite` are provided, `userVisibility` takes precedence.\n"},"createUsers":{"type":"boolean","default":false},"addUserBalance":{"type":"boolean","default":false,"description":"When set to false the API tokens related to this partner would not receive the users' balance in the response."},"allowViewingAllSessionsOfInvitedUsers":{"type":"boolean","default":true,"description":"If true, partner admins can view all sessions of users who accepted their invites. If false, partner admins can only view sessions that occurred on their charge points or were paid with their corporate billing."},"supplierOnReceipts":{"type":"boolean","default":false},"allowToControlTariffs":{"description":"Allows the Partner to update the tariff pricing.","type":"boolean","default":false},"allowToControlTariffGroups":{"description":"In addition to `allowToControlTariffs`, the Partner would also be able to manage Tariff Groups - attach and remove Tariffs, change Tariffs order in the Tariff Group.","type":"boolean","default":false}}},"corporateBilling":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"monthlyLimit":{"type":"number","format":"decimal","deprecated":true,"description":"**Deprecated.** Use `limit` with `frequency` instead.\nThis field returns the same value as `limit` when `frequency` is 'monthly'.\n"},"frequency":{"type":"string","enum":["monthly","quarterly","semiAnnually","annually"],"description":"The billing frequency for the limit."},"limit":{"type":"number","format":"decimal","minimum":0,"description":"The billing limit for the specified frequency."},"discount":{"type":"number","format":"decimal"}}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the partner"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the partner."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the partner has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the partner's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the partner."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the Partner has provided."}}},"notes":{"type":"array","readOnly":true,"items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}},"description":"If `include[]=notes` is provided with the request, the notes attached to this partner will be provided here. Notes are returned with pinned notes first, then ordered by creation date descending."}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerDelete","summary":"Partner / Delete","tags":["resource / partners"],"description":"Delete a partner","parameters":[{"in":"path","name":"partner","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0/{partner}/admins":{"parameters":[{"name":"partner","in":"path","schema":{"type":"integer"},"required":true,"description":"Partner ID"}],"get":{"operationId":"partnerAdminsListing","tags":["resource / partners"],"summary":"Partner / Admins / Listing","description":"List all administrators for a specific partner.\n\nOnly partner and partnerSiteManager admin types are returned.\n\n**Required permission:** `Admins.view`\n","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Filter by administrator type:\n* `partner` - Full partner access administrators\n* `partnerSiteManager` - Location-restricted access administrators\n"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the partner administrator"},"name":{"type":"string","description":"Name of the administrator"},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, can manage all partner resources\n* `partnerSiteManager` - Location-restricted access, can only manage assigned locations\n"},"roleId":{"type":"integer","description":"ID of the role assigned to this administrator"},"locale":{"type":"string","description":"Locale code for the administrator (e.g., \"en\", \"de\"). Omitted from response when not set.","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string"},"description":"List of IP addresses allowed for UI access","example":["192.168.1.1","10.0.0.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only present for `partnerSiteManager` type; omitted for `partner` type.","example":[1,2,3]},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was last updated"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerAdminCreate","tags":["resource / partners"],"summary":"Partner / Admin / Create","description":"Create a new administrator for a specific partner.\n\nThe administrator type must be either `partner` or `partnerSiteManager`.\nFor `partnerSiteManager`, locationIds is required and must contain valid location IDs owned by the partner.\n\n**Required permission:** `Admins.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email","password","passwordConfirmation","adminType","roleId"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the administrator"},"email":{"type":"string","format":"email","maxLength":255,"description":"Email address of the administrator (must be unique across all admins)"},"password":{"type":"string","description":"Password meeting security requirements"},"passwordConfirmation":{"type":"string","description":"Must match the password field"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, uses roles from partner role group\n* `partnerSiteManager` - Location-restricted access, uses roles from partner site manager role group\n"},"roleId":{"type":"integer","description":"Role ID (must be valid for the selected adminType)"},"locale":{"type":"string","maxLength":10,"nullable":true,"description":"Locale code for the administrator","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string","format":"ipv4"},"description":"List of IP addresses allowed for UI access restriction","example":["192.168.1.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Required when adminType is `partnerSiteManager`.","example":[1,2,3]}}}}}},"responses":{"201":{"description":"Partner administrator created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the partner administrator"},"name":{"type":"string","description":"Name of the administrator"},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, can manage all partner resources\n* `partnerSiteManager` - Location-restricted access, can only manage assigned locations\n"},"roleId":{"type":"integer","description":"ID of the role assigned to this administrator"},"locale":{"type":"string","description":"Locale code for the administrator (e.g., \"en\", \"de\"). Omitted from response when not set.","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string"},"description":"List of IP addresses allowed for UI access","example":["192.168.1.1","10.0.0.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only present for `partnerSiteManager` type; omitted for `partner` type.","example":[1,2,3]},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was last updated"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0/{partner}/admins/{admin}":{"parameters":[{"name":"partner","in":"path","schema":{"type":"integer"},"required":true,"description":"Partner ID"},{"in":"path","name":"admin","schema":{"type":"integer"},"required":true,"description":"Partner administrator ID"}],"patch":{"operationId":"partnerAdminUpdate","tags":["resource / partners"],"summary":"Partner / Admin / Update","description":"Update an existing partner administrator.\n\nAll fields are optional. Only provided fields are updated.\nFor `partnerSiteManager`, locationIds can be updated to change managed locations.\n\n**Required permission:** `Admins.update`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Name of the administrator"},"email":{"type":"string","format":"email","maxLength":255,"description":"Email address of the administrator (must remain unique)"},"password":{"type":"string","description":"New password meeting security requirements. If provided, passwordConfirmation is required."},"passwordConfirmation":{"type":"string","description":"Must match the password field when password is provided"},"roleId":{"type":"integer","description":"Role ID (must be valid for the admin's current type)"},"locale":{"type":"string","maxLength":10,"nullable":true,"description":"Locale code for the administrator","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string","format":"ipv4"},"description":"List of IP addresses for UI access restriction (replaces existing list)","example":["192.168.1.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only applicable for `partnerSiteManager` type.","example":[1,2,3]}}}}}},"responses":{"200":{"description":"Partner administrator updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the partner administrator"},"name":{"type":"string","description":"Name of the administrator"},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, can manage all partner resources\n* `partnerSiteManager` - Location-restricted access, can only manage assigned locations\n"},"roleId":{"type":"integer","description":"ID of the role assigned to this administrator"},"locale":{"type":"string","description":"Locale code for the administrator (e.g., \"en\", \"de\"). Omitted from response when not set.","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string"},"description":"List of IP addresses allowed for UI access","example":["192.168.1.1","10.0.0.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only present for `partnerSiteManager` type; omitted for `partner` type.","example":[1,2,3]},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was last updated"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerAdminDelete","tags":["resource / partners"],"summary":"Partner / Admin / Delete","description":"Delete a partner administrator.\n\nCannot delete yourself (the authenticated admin making the request).\n\n**Required permission:** `Admins.delete`\n","responses":{"204":{"description":"Partner administrator deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0/{partner}/notes":{"parameters":[{"name":"partner","in":"path","schema":{"type":"integer"},"required":true,"description":"Partner ID"}],"get":{"operationId":"partnerNotesListing","tags":["resource / partners"],"summary":"Partner / Notes / Listing","description":"List all notes for a specific partner.\n\nNotes are returned with pinned notes first, then ordered by creation date descending.\n\n**Required permission:** `Notes.view`\n","parameters":[{"name":"filter","in":"query","style":"deepObject","schema":{"type":"object","properties":{"pinned":{"type":"boolean","description":"Filter by pinned status","example":true},"createdAfter":{"type":"string","format":"date-time","description":"Filter notes created on or after this ISO-8601 datetime","example":"2025-01-01T00:00:00Z"},"createdBefore":{"type":"string","format":"date-time","description":"Filter notes created on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter notes updated on or after this ISO-8601 datetime (useful for delta sync)","example":"2025-12-01T00:00:00Z"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter notes updated on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"partnerNoteCreate","tags":["resource / partners"],"summary":"Partner / Note / Create","description":"Create a new note for a specific partner.\n\n**Required permission:** `Notes.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["summary"],"properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note (required)","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note (optional)","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","default":false,"description":"Whether the note should be pinned (optional, defaults to false)","example":false}}}}}},"responses":{"201":{"description":"Note created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/partners/v2.0/{partner}/notes/{note}":{"parameters":[{"name":"partner","in":"path","schema":{"type":"integer"},"required":true,"description":"Partner ID"},{"name":"note","in":"path","schema":{"type":"integer"},"required":true,"description":"Note ID"}],"get":{"operationId":"partnerNoteShow","tags":["resource / partners"],"summary":"Partner / Note / Read","description":"Get a specific note for a partner.\n\n**Required permission:** `Notes.view`\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"partnerNoteUpdate","tags":["resource / partners"],"summary":"Partner / Note / Update","description":"Update a specific note for a partner.\n\n**Required permissions:**\n- `Notes.update` for updating summary and details\n- `Notes.pin` for updating the pinned field (in addition to Notes.update if other fields are included)\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Updated maintenance note"},"details":{"type":"string","maxLength":2000,"nullable":true,"description":"Detailed content of the note. Send null to clear.","example":"Updated inspection schedule."},"pinned":{"type":"boolean","description":"Whether the note should be pinned. Requires Notes.pin permission.","example":true}}}}}},"responses":{"200":{"description":"Note updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"partnerNoteDelete","tags":["resource / partners"],"summary":"Partner / Note / Delete","description":"Delete a specific note from a partner.\n\nNotes are permanently deleted (hard delete).\n\n**Required permission:** `Notes.delete`\n","responses":{"204":{"description":"Note deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/payment-terminals/v1.0":{"get":{"operationId":"getPaymentTerminalsDeprecated","deprecated":true,"tags":["resource / payment terminals"],"summary":"Payment Terminals / Listing","description":"**This endpoint is deprecated and will be removed on Tue, 21 Jul 2026.**\n\nGet all payment terminals. Use `/resources/payment-terminals/v1.1` instead.\n","parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"serialNumber":{"type":"string"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId","suppressReceiptWhenInvoiceIssued"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Ampeco","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey","suppressReceiptWhenInvoiceIssued"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createPaymentTerminalDeprecated","deprecated":true,"tags":["resource / payment terminals"],"summary":"Payment Terminals / Create","description":"**This endpoint is deprecated and will be removed on Tue, 21 Jul 2026.**\n\nCreate a new payment terminal. Use `/resources/payment-terminals/v1.1` instead.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"Payter","oneOf":[{"required":["preauthorizeAmount"],"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"required":["transactionTimeout"],"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}],"required":["name","integrationId","terminalType","serialNumber","defaultLanguage","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Ampeco","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey","suppressReceiptWhenInvoiceIssued"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]}]}}}},"responses":{"200":{"description":"Request succeeded","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId","suppressReceiptWhenInvoiceIssued"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Ampeco","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey","suppressReceiptWhenInvoiceIssued"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/payment-terminals/v1.0/{paymentTerminal}":{"parameters":[{"in":"path","name":"paymentTerminal","schema":{"type":"string"},"required":true}],"get":{"operationId":"getPaymentTerminalDeprecated","deprecated":true,"tags":["resource / payment terminals"],"summary":"Payment Terminals / Read","description":"**This endpoint is deprecated and will be removed on Tue, 21 Jul 2026.**\n\nGet information for a payment terminal by ID. Use `/resources/payment-terminals/v1.1` instead.\n","responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId","suppressReceiptWhenInvoiceIssued"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Ampeco","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey","suppressReceiptWhenInvoiceIssued"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"updatePaymentTerminalDeprecated","deprecated":true,"tags":["resource / payment terminals"],"summary":"Payment Terminals / Update","description":"**This endpoint is deprecated and will be removed on Tue, 21 Jul 2026.**\n\nUpdate payment terminal. Use `/resources/payment-terminals/v1.1` instead.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"Payter","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]}]},{"title":"Valina","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true}}}]},{"title":"Crane","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Ampeco","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string"},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Embedded","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Windcave","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"title":"AdyenCastles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true}}}]},{"title":"Printec Castles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true}}}]},{"title":"Cardlink Castles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true}}}]}]}}}},"responses":{"200":{"description":"Payment terminal updated successfully","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId","suppressReceiptWhenInvoiceIssued"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Ampeco","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"}}}],"required":["suppressReceiptWhenInvoiceIssued"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey","suppressReceiptWhenInvoiceIssued"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Ampeco","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle. This field should be used to detect version difference between the actual one running on the terminal and the configured on the server, in order to detect if an OTA update is required."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version. Can be used to download the bundle and initiate the OTA update on the terminal."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal. When true, the terminal forces connector selection even in single charge point setups. Only applicable for Single Charge Point terminals; omitted for Location terminals."},"suppressReceiptWhenInvoiceIssued":{"type":"boolean","readOnly":true,"description":"When true, receipts are suppressed when invoices are issued for tax compliance in markets where issuing both documents for the same purchase is prohibited"},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle","suppressReceiptWhenInvoiceIssued"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deletePaymentTerminalDeprecated","deprecated":true,"tags":["resource / payment terminals"],"summary":"Payment Terminals / Delete","description":"**This endpoint is deprecated and will be removed on Tue, 21 Jul 2026.**\n\nDelete a payment terminal. Use `/resources/payment-terminals/v1.1` instead.\n","responses":{"204":{"description":"Payment terminal deleted successfully","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/payment-terminals/v1.1":{"get":{"operationId":"getPaymentTerminalsV1_1","tags":["resource / payment terminals"],"summary":"Payment Terminals / Listing","description":"Get all payment terminals\n","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"serialNumber":{"type":"string"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"anyOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Generic","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}}}}],"required":["name","integrationId","terminalType","operatorId"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createPaymentTerminalV1_1","tags":["resource / payment terminals"],"summary":"Payment Terminals / Create","description":"Create a new payment terminal\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"Payter","oneOf":[{"required":["preauthorizeAmount"],"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"required":["transactionTimeout"],"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}],"required":["name","integrationId","terminalType","serialNumber","defaultLanguage","operatorId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"operatorId":{"type":"integer","description":"The operator ID for this terminal."},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Generic","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}}}}],"required":["name","integrationId","terminalType","operatorId"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]}]}}}},"responses":{"200":{"description":"Request succeeded","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Generic","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}}}}],"required":["name","integrationId","terminalType","operatorId"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/payment-terminals/v1.1/{paymentTerminal}":{"parameters":[{"in":"path","name":"paymentTerminal","schema":{"type":"string"},"required":true}],"get":{"operationId":"getPaymentTerminalV1_1","tags":["resource / payment terminals"],"summary":"Payment Terminals / Read","description":"Get information for a payment terminal by ID\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Generic","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}}}}],"required":["name","integrationId","terminalType","operatorId"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"updatePaymentTerminalV1_1","tags":["resource / payment terminals"],"summary":"Payment Terminals / Update","description":"Update Payment terminal\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"title":"Valina","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true}}}]},{"title":"Crane","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Generic","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string"},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Embedded","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Windcave","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"title":"AdyenCastles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true}}}]},{"title":"Printec Castles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true}}}]},{"title":"Cardlink Castles","allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true}}}]}]}}}},"responses":{"200":{"description":"Payment terminal updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}}},{"oneOf":[{"title":"Payter on CP","type":"object","properties":{"preauthorizeAmount":{"type":"number","description":"Provide a Pre-authorize amount when the terminal is linked to a single charger"},"currencyId":{"type":"integer","readOnly":true},"valueAddedTaxId":{"type":"integer","readOnly":true}}},{"title":"Payter on Location","type":"object","properties":{"transactionTimeout":{"type":"integer","description":"Provide a transaction timeout when the terminal is linked to a Location"}}}]}]},{"type":"object","properties":{"isOnline":{"type":"boolean","nullable":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"displayTextTimeout":{"type":"integer"},"displayText":{"type":"string"},"serialNumber":{"type":"string"},"defaultLanguage":{"type":"string"},"externalId":{"type":"string","description":"An optional external identifier for the terminal that can be used to reference it in external systems."}},"required":["id","name","defaultLanguage","serialNumber","integrationId","terminalType","operatorId"]}]},{"title":"Valina","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Crane","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["serialNumber"]},{"title":"Generic","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"webhookUrl":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Nayax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"terminalId":{"type":"string","description":"This is the Device Number of the relevant Nayax terminal that is set up in the Nayax system. Please be careful to add the correct Device number on the relevant terminal."},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["terminalId"]},{"title":"Embedded","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Pax","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"verificationCode":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}],"required":["verificationCode","defaultLanguage","info"]},{"title":"Windcave","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"serialNumber":{"type":"string"},"externalId":{"type":"string"}}}]},{"title":"Web portal","allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}}}}],"required":["name","integrationId","terminalType","operatorId"]},{"title":"AdyenCastles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"merchantAccount":{"type":"string","description":"Unique identifier of the merchant in Adyen's portal"},"adyenApiKey":{"type":"string","description":"API key to authenticate requests to Adyen"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","merchantAccount","adyenApiKey"]},{"title":"Printec Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]},{"title":"Cardlink Castles","allOf":[{"required":["name","integrationId","terminalType","operatorId"],"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"integrationId":{"type":"integer"},"terminalType":{"type":"string","enum":["Payter","Valina","Crane","Generic","Nayax","Embedded","Pax","Windcave","Web portal","AdyenCastles","Printec Castles","Cardlink Castles"]},"operatorId":{"type":"integer","description":"The operator ID for this terminal."}}},{"type":"object","properties":{"chargingZoneId":{"type":"integer","description":"The charging zone the terminal belongs to. Note that either the `chargePointId` OR this attribute should be provided;"},"chargePointId":{"type":"integer","description":"The Charge point the terminal belongs to. Note that either the `chargingZoneId` OR this attribute should be provided;"}}}]},{"type":"object","properties":{"adminToken":{"type":"string","readOnly":true,"description":"Specific token, linked to each terminal that can be used for access to the API. The token is created automatically when a new payment terminal is created."},"isOnline":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Use `networkStatus` instead"},"networkStatus":{"type":"string","enum":["online","offline","unknown"]},"phone":{"type":"string"},"defaultLanguage":{"type":"string"},"presentCardOnStopSession":{"type":"boolean","default":false},"info":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"currencyCode":{"type":"string","readOnly":true},"serialNumber":{"type":"string"},"externalId":{"type":"string"},"supportedLanguages":{"type":"array","items":{"type":"string"},"nullable":true,"readOnly":true},"bundle":{"type":"object","readOnly":true,"properties":{"version":{"type":"string","example":["1.0.0","1.0.1","2.1.0"],"description":"Desired version of the terminal android bundle."},"downloadUrl":{"type":"string","description":"Download link to the archived (zip) bundle version."}}},"networkStatusMonitoringEnabled":{"type":"boolean","readOnly":true},"kioskModeEnabled":{"type":"boolean","readOnly":true,"description":"Indicates whether kiosk mode is enabled for this terminal."},"invoiceFields":{"type":"array","readOnly":true,"description":"Invoice field configurations for ad-hoc invoicing. Only included when ad-hoc invoicing is enabled for this terminal.","items":{"type":"object","properties":{"field":{"type":"string","description":"Field identifier (e.g., email, name, taxId, country)"},"required":{"type":"boolean","description":"Whether this field is required or optional"},"type":{"type":"string","enum":["individual","company"],"description":"The invoice type this field belongs to (individual or company)"},"label":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Translated label for the field. Always contains at least an English system translation entry. When custom labels are configured, they are appended after the English fallback."}},"required":["field","required","type","label"]}},"showTermsAndConditions":{"type":"boolean","readOnly":true,"description":"Whether Terms and Conditions should be displayed on this terminal before ad-hoc charging sessions."},"termVersionId":{"type":"integer","readOnly":true,"nullable":true,"description":"The ID of the active Terms version to display. Only present when showTermsAndConditions is true. Use the Terms and Policies Read endpoint to fetch the content."}}}],"required":["phone","defaultLanguage","info","bundle"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deletePaymentTerminalV1_1","tags":["resource / payment terminals"],"summary":"Payment Terminals / Delete","description":"Delete a payment terminal.","responses":{"204":{"description":"Payment terminal deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/provisioning-certificates/v2.0":{"post":{"operationId":"createPcId","tags":["resource / provisioning certificate"],"summary":"Provisioning Certificate / Create","description":"Create Provisioning Certificate","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["pcId","name","vehicleType","userId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}}}},"responses":{"201":{"description":"Provisioning Certificate created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["pcId","name","vehicleType","userId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"listPcIds","summary":"Provisioning Certificate / Listing","description":"Get all Provisioning Certificates","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / provisioning certificate"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"required":["pcId","name","vehicleType","userId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/provisioning-certificates/v2.0/{provisioningCertificate}":{"parameters":[{"name":"provisioningCertificate","in":"path","schema":{"type":"integer"},"required":true}],"patch":{"operationId":"updatePcId","summary":"Provisioning Certificate / Update","description":"Update a Provisioning Certificate","tags":["resource / provisioning certificate"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}}}},"responses":{"200":{"description":"Provisioning Certificate updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["pcId","name","vehicleType","userId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"get":{"operationId":"getPcId","summary":"Provisioning Certificate / Read","description":"Get a Provisioning Certificate","tags":["resource / provisioning certificate"],"responses":{"200":{"description":"Provisioning Certificate returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["pcId","name","vehicleType","userId"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"pcId":{"type":"string"},"name":{"type":"string"},"vehicleType":{"type":"string","enum":["company","private"]},"userId":{"type":"integer"},"idTags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["rfid","mac_address","emaid"]},"name":{"type":"string"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["active","disabled","suspended"]},"expireAt":{"type":"string","format":"date-time"}}}}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deletePcId","summary":"Provisioning Certificates / Delete","description":"Delete a provisioning certificate.","tags":["resource / provisioning certificate"],"responses":{"204":{"description":"Provisioning certificate deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/receipts/v2.0":{"get":{"operationId":"receiptsListing","tags":["resource / receipts"],"summary":"Receipts / Listing","description":"Get all receipts","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"userId":{"type":"string","format":"integer","description":"Only list Receipts with a certain user id"},"taxId":{"type":"string","format":"integer","description":"Only list Receipts with specific VAT id"},"paymentStatus":{"type":"string","enum":["pending","paid","partially_paid"]},"periodStart":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"periodEnd":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"issuedFrom":{"type":"string","format":"date","description":"Filter receipts issued on or after this date (inclusive)"},"issuedTo":{"type":"string","format":"date","description":"Filter receipts issued on or before this date (inclusive)"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"receiptNo":{"type":"string"},"issuedOn":{"type":"string","format":"date","description":"The date when the receipt was issued"},"userId":{"type":"integer","nullable":true},"totalKwh":{"type":"number","format":"decimal"},"periodStart":{"type":"string","format":"date-time","description":"For monthly and post-paid subscription receipts shows the start date of the period for which the receipt is issued","nullable":true},"periodEnd":{"type":"string","format":"date-time","description":"For monthly and post-paid subscription receipts shows the end date of the period for which the receipt is issued","nullable":true},"totalAmount":{"type":"number"},"tax":{"type":"object","properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"paymentStatus":{"type":"string","enum":["pending","paid","partially_paid"]},"downloadUrl":{"type":"string","description":"The link where the receipt could be downloaded."}},"required":["id","operatorId","receiptNo","issuedOn","userId","totalAmount"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/receipts/v2.0/{receipt}":{"get":{"operationId":"receiptRead","tags":["resource / receipts"],"summary":"Receipt / Read","description":"Get a single receipt","parameters":[{"in":"path","name":"receipt","description":"The Receipt ID","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"receiptNo":{"type":"string"},"issuedOn":{"type":"string","format":"date","description":"The date when the receipt was issued"},"userId":{"type":"integer","nullable":true},"totalKwh":{"type":"number","format":"decimal"},"periodStart":{"type":"string","format":"date-time","description":"For monthly and post-paid subscription receipts shows the start date of the period for which the receipt is issued","nullable":true},"periodEnd":{"type":"string","format":"date-time","description":"For monthly and post-paid subscription receipts shows the end date of the period for which the receipt is issued","nullable":true},"totalAmount":{"type":"number"},"tax":{"type":"object","properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"paymentStatus":{"type":"string","enum":["pending","paid","partially_paid"]},"downloadUrl":{"type":"string","description":"The link where the receipt could be downloaded."}},"required":["id","operatorId","receiptNo","issuedOn","userId","totalAmount"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/reservations/v1.0":{"get":{"operationId":"reservationsListing","tags":["resource / reservations"],"summary":"Reservations / Listing","description":"Get all reservations","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"evseId":{"type":"string","format":"integer","description":"Only list reservations for  specific EVSE by ID"},"userId":{"type":"string","format":"integer","description":"Only list reservations for a specific user by ID"},"status":{"type":"string","description":"Only list reservations with this status","enum":["active","expired","canceled","done"]},"reservedFrom":{"type":"string","format":"date-time","description":"Date from based on reserved at attribute"},"reservedTo":{"type":"string","format":"date-time","description":"Date to based on reserved at attribute"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Reservation","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer","readOnly":true},"evseId":{"type":"integer","readOnly":true},"status":{"type":"string","enum":["active","expired","canceled","done"],"readOnly":true},"userId":{"type":"integer","description":"The id of the user that started the session","readOnly":true},"reservedAt":{"type":"string","format":"date-time","readOnly":true},"canceledAt":{"type":"string","format":"date-time","nullable":true,"readOnly":true},"duration":{"type":"integer","description":"In minutes","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","userId","chargePointId","evseId","status","reservedAt","duration"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/reservations/v1.0/{reservation}":{"parameters":[{"in":"path","name":"reservation","schema":{"type":"integer"},"required":true}],"get":{"operationId":"reservationRead","tags":["resource / reservations"],"summary":"Reservation / Read","description":"Get information for a reservation by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Reservation","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer","readOnly":true},"evseId":{"type":"integer","readOnly":true},"status":{"type":"string","enum":["active","expired","canceled","done"],"readOnly":true},"userId":{"type":"integer","description":"The id of the user that started the session","readOnly":true},"reservedAt":{"type":"string","format":"date-time","readOnly":true},"canceledAt":{"type":"string","format":"date-time","nullable":true,"readOnly":true},"duration":{"type":"integer","description":"In minutes","readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","userId","chargePointId","evseId","status","reservedAt","duration"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/rfid-tags/v1.0":{"get":{"operationId":"rfidTagsListingDeprecated","tags":["resource / rfids"],"deprecated":true,"summary":"RFID Tags / Listing","description":"Get all rfid tags","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"rfidTagUid":{"type":"string","format":"integer","description":"Only list RFID tags with a certain UID"},"rfidLabel":{"type":"string","description":"Only list RFID tags with a certain label"},"userId":{"type":"string","format":"integer","description":"Only list RFID tags with a certain user id"},"expireAt":{"type":"string","format":"date-time","description":"Only list RFID tags that have an expiration date grater or equal to the supplied date"},"status":{"type":"string","description":"Only list RFID tags in this status","enum":["active","disabled","suspended"]},"type":{"type":"string","description":"Only list RFID tags in this type","enum":["rfid","mac_address","emaid"]}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"rfidTagCreateDeprecated","tags":["resource / rfids"],"deprecated":true,"summary":"RFID Tag / Create","description":"Create new RFID Tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}}}},"responses":{"201":{"description":"RFID Tag created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/rfid-tags/v1.0/{rfidTag}":{"parameters":[{"name":"rfidTag","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"rfidTagReadDeprecated","summary":"RFID Tag / Read","description":"Get a RFID Tag","tags":["resource / rfids"],"deprecated":true,"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"rfidTagUpdateDeprecated","summary":"RFID Tag / Update","description":"Update a RFID Tag","tags":["resource / rfids"],"deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}}}},"responses":{"200":{"description":"RFID Tag updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"rfidTagUid":{"type":"string","description":"Token used for authorization","example":123456},"rfidLabel":{"type":"string","description":"Visual label on the card","nullable":true},"expireAt":{"type":"string","format":"date","nullable":true},"createdAt":{"type":"string","format":"datatime","readOnly":true},"status":{"type":"string","enum":["enabled","disabled","suspended"],"description":"The status of the RFID tag. Use it to disable or suspend a tag\n* `enabled` The tag is enabled and is accepted as authentication method\n* `disabled` The tag is disabled by the admin user and is not acceptable as authorization method\n* `suspended` The tag is suspended by the owner of the tag and is not acceptable as authorization method\n"},"userId":{"type":"integer","description":"Associate the RFID tag with a user account. If the user is not presented, the tag will not be authorized! It makes sense to prepare the tags in advance, in case there is another process/entity is going to later assign them!","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["rfidTagUid","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"rfidTagDeleteDeprecated","summary":"RFID Tag / Delete","description":"Delete a RFID Tag","tags":["resource / rfids"],"deprecated":true,"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-connections/v2.0":{"get":{"operationId":"listRoamingConnections","summary":"Roaming Connections / Listing","tags":["resource / roaming connections"],"description":"Get all Roaming Connections","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Roaming Connection","properties":{"id":{"type":"integer","readOnly":true},"protocol":{"type":"string","enum":["OCPI","Gireve OCPI 2.1.1","Hubject OICP 2.2","Hubject OICP 2.3"]},"endpoint":{"type":"string"},"ocpi":{"type":"object","nullable":true,"properties":{"token":{"type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","protocol","endpoint"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-connections/v2.0/{roamingConnection}":{"get":{"operationId":"getRoamingConnection","summary":"Roaming Connections / Read","tags":["resource / roaming connections"],"description":"Get a Roaming Connections","parameters":[{"in":"path","name":"roamingConnection","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Roaming Connection","properties":{"id":{"type":"integer","readOnly":true},"protocol":{"type":"string","enum":["OCPI","Gireve OCPI 2.1.1","Hubject OICP 2.2","Hubject OICP 2.3"]},"endpoint":{"type":"string"},"ocpi":{"type":"object","nullable":true,"properties":{"token":{"type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","protocol","endpoint"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-operators/v2.0":{"get":{"operationId":"roamingOperatorsListing","summary":"Roaming Operators / Listing","tags":["resource / roaming operators"],"description":"Get all Roaming Operators","parameters":[{"in":"query","name":"filter","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true,"deprecated":true},"enabled":{"type":"boolean"},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"cpoSettings":{"allOf":[{"type":"object","properties":{"cpoQrcodePrefix":{"type":"string","description":"Example - \"http://m.intercharge.eu/qr?evseid=\" if the URL in the QR Code is http://m.intercharge.eu/qr?evseid=CH*ION*E213604","nullable":true},"manualEvseManagement":{"type":"boolean","default":false,"nullable":true},"applyCustomTariffsToEvsesWithRoamingTariff":{"type":"boolean","default":false,"nullable":true},"sendsPeriodicMeterUpdates":{"type":"boolean","default":true,"nullable":true},"externalTariffIntegration":{"type":"string","nullable":true,"description":"Only possible value is `has.to.be`"},"threatEvseStatusUnknownAs":{"type":"string","enum":["available","unavailable"]},"phaseAcPowerFormula":{"type":"string","enum":["amperage_voltage_3","amperage_voltage_sqr3"],"default":"amperage_voltage_3"}}}]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-operators/v2.0/{roamingOperator}":{"get":{"operationId":"roamingOperatorRead","summary":"Roaming Operator / Read","tags":["resource / roaming operators"],"description":"Get a Roaming Operator","parameters":[{"in":"path","name":"roamingOperator","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true,"deprecated":true},"enabled":{"type":"boolean"},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"cpoSettings":{"allOf":[{"type":"object","properties":{"cpoQrcodePrefix":{"type":"string","description":"Example - \"http://m.intercharge.eu/qr?evseid=\" if the URL in the QR Code is http://m.intercharge.eu/qr?evseid=CH*ION*E213604","nullable":true},"manualEvseManagement":{"type":"boolean","default":false,"nullable":true},"applyCustomTariffsToEvsesWithRoamingTariff":{"type":"boolean","default":false,"nullable":true},"sendsPeriodicMeterUpdates":{"type":"boolean","default":true,"nullable":true},"externalTariffIntegration":{"type":"string","nullable":true,"description":"Only possible value is `has.to.be`"},"threatEvseStatusUnknownAs":{"type":"string","enum":["available","unavailable"]},"phaseAcPowerFormula":{"type":"string","enum":["amperage_voltage_3","amperage_voltage_sqr3"],"default":"amperage_voltage_3"}}}]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"roamingOperatorUpdate","summary":"Roaming Operator / Update","description":"Update Roaming Operator","tags":["resource / roaming operators"],"parameters":[{"in":"path","name":"roamingOperator","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"businessName":{"type":"string","nullable":true},"partnerId":{"type":"integer","nullable":true,"deprecated":true,"description":"If a non-null value is provided, it will set enabled to true. If null is provided, it will set enabled to false."},"enabled":{"type":"boolean"},"cpoSettings":{"allOf":[{"type":"object","properties":{"cpoQrcodePrefix":{"type":"string","description":"Example - \"http://m.intercharge.eu/qr?evseid=\" if the URL in the QR Code is http://m.intercharge.eu/qr?evseid=CH*ION*E213604","nullable":true},"manualEvseManagement":{"type":"boolean","default":false,"nullable":true},"applyCustomTariffsToEvsesWithRoamingTariff":{"type":"boolean","default":false,"nullable":true},"sendsPeriodicMeterUpdates":{"type":"boolean","default":true,"nullable":true},"externalTariffIntegration":{"type":"string","nullable":true,"description":"Only possible value is `has.to.be`"},"threatEvseStatusUnknownAs":{"type":"string","enum":["available","unavailable"]},"phaseAcPowerFormula":{"type":"string","enum":["amperage_voltage_3","amperage_voltage_sqr3"],"default":"amperage_voltage_3"}}}],"nullable":true,"type":"object"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true,"deprecated":true},"enabled":{"type":"boolean"},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"cpoSettings":{"allOf":[{"type":"object","properties":{"cpoQrcodePrefix":{"type":"string","description":"Example - \"http://m.intercharge.eu/qr?evseid=\" if the URL in the QR Code is http://m.intercharge.eu/qr?evseid=CH*ION*E213604","nullable":true},"manualEvseManagement":{"type":"boolean","default":false,"nullable":true},"applyCustomTariffsToEvsesWithRoamingTariff":{"type":"boolean","default":false,"nullable":true},"sendsPeriodicMeterUpdates":{"type":"boolean","default":true,"nullable":true},"externalTariffIntegration":{"type":"string","nullable":true,"description":"Only possible value is `has.to.be`"},"threatEvseStatusUnknownAs":{"type":"string","enum":["available","unavailable"]},"phaseAcPowerFormula":{"type":"string","enum":["amperage_voltage_3","amperage_voltage_sqr3"],"default":"amperage_voltage_3"}}}]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-operators/v2.0/{roamingOperator}/custom-tariff-filters":{"parameters":[{"name":"roamingOperator","in":"path","description":"The ID of the roaming operator","required":true,"schema":{"type":"integer","example":123}}],"get":{"operationId":"listRoamingCustomTariffFilters","summary":"Roaming Operators / Custom Tariff Filters / Listing","description":"Get all custom tariff filters for a roaming operator","parameters":[{"name":"filter","in":"query","description":"Filter options for custom tariff filters","required":false,"style":"deepObject","schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"],"description":"Filter by status (enabled or disabled)","example":"enabled"},"createdAfter":{"description":"Filter by creation date (greater than or equal to)","type":"string","format":"date-time"},"createdBefore":{"description":"Filter by creation date (less than or equal to)","type":"string","format":"date-time"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / roaming operators"],"responses":{"200":{"description":"List of custom tariff filters","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"required":["id","name","status","applicableCurrentTypes","order","createdAt","updatedAt"],"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the tariff filter"},"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to, pass an empty array to clear all current type restrictions."},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value"},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines"},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. When not provided during creation, it will go last. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createRoamingCustomTariffFilter","summary":"Roaming Operators / Custom Tariff Filters / Create","description":"Create new custom tariff filter for a roaming operator","tags":["resource / roaming operators"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name","status"],"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the tariff filter"},"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to, pass an empty array to clear all current type restrictions."},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value"},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines"},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. When not provided during creation, it will go last. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}},"responses":{"201":{"description":"Custom tariff filter created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["id","name","status","applicableCurrentTypes","order","createdAt","updatedAt"],"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the tariff filter"},"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to, pass an empty array to clear all current type restrictions."},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value"},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines"},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. When not provided during creation, it will go last. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-operators/v2.0/{roamingOperator}/custom-tariff-filters/reorder":{"parameters":[{"name":"roamingOperator","in":"path","description":"The ID of the roaming operator","required":true,"schema":{"type":"integer","example":123}}],"put":{"operationId":"reorderRoamingCustomTariffFilters","summary":"Roaming Operators / Custom Tariff Filters / Reorder","description":"Change the ordering of custom tariff filters for a roaming operator. \nThis operation allows partial reordering - you only need to specify the filters that need to move.\nFilters not included in the request will maintain their relative positions.\nThe atomic operation prevents inconsistent states during reordering.\n","tags":["resource / roaming operators"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["filters"],"properties":{"filters":{"type":"array","description":"Array of custom tariff filter IDs with their new positions. Only include filters that need to be moved - others will maintain their relative positions.","items":{"type":"object","required":["id","order"],"properties":{"id":{"type":"integer","description":"The ID of the custom tariff filter","example":2},"order":{"type":"integer","description":"The new position for this filter (starting from 1)","minimum":1,"example":1}}}}},"example":{"filters":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}}}}},"responses":{"200":{"description":"Order updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Order updated successfully"}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-operators/v2.0/{roamingOperator}/custom-tariff-filters/{customTariffFilter}":{"parameters":[{"name":"roamingOperator","in":"path","description":"The ID of the roaming operator","required":true,"schema":{"type":"integer","example":123}},{"name":"customTariffFilter","in":"path","description":"The ID of the custom tariff filter","required":true,"schema":{"type":"integer","example":456}}],"get":{"operationId":"getRoamingCustomTariffFilter","summary":"Roaming Operators / Custom Tariff Filters / Read","description":"Get a specific custom tariff filter","tags":["resource / roaming operators"],"responses":{"200":{"description":"Custom tariff filter returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["id","name","status","applicableCurrentTypes","order","createdAt","updatedAt"],"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the tariff filter"},"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to, pass an empty array to clear all current type restrictions."},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value"},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines"},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. When not provided during creation, it will go last. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"updateRoamingCustomTariffFilter","summary":"Roaming Operators / Custom Tariff Filters / Update","description":"Update an existing custom tariff filter","tags":["resource / roaming operators"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code","nullable":true},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to"},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value","nullable":true},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines","nullable":true},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."}}}}}},"responses":{"200":{"description":"Custom tariff filter updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"required":["id","name","status","applicableCurrentTypes","order","createdAt","updatedAt"],"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the tariff filter"},"name":{"type":"string","minLength":1,"maxLength":255},"status":{"type":"string","enum":["enabled","disabled"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"applicableCurrentTypes":{"type":"array","items":{"type":"string","enum":["AC","DC"]},"description":"Array of current types (AC, DC) that this filter applies to, pass an empty array to clear all current type restrictions."},"powerBelowKw":{"type":"number","minimum":0,"description":"Filter EVSEs with power below specified kW value"},"evseIdPrefix":{"type":"string","maxLength":1000,"description":"Filter EVSEs whose IDs start with specified prefix(es). Multiple prefixes separated by newlines"},"order":{"type":"integer","description":"Position of the tariff filter in the ordering sequence. When not provided during creation, it will go last. If an already existing order number is provided, it will reorder the other tariff filters to take their place in the sequence."},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteRoamingCustomTariffFilter","summary":"Roaming Operators / Custom Tariff Filters / Delete","description":"Delete a custom tariff filter","tags":["resource / roaming operators"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-platforms/v1.0":{"get":{"operationId":"roamingPlatformsListingDeprecated","deprecated":true,"summary":"Roaming Platforms / Listing","tags":["resource / roaming platforms"],"description":"Get all Roaming Platforms. See Roaming Connections for the list of supported protocols.","parameters":[{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Roaming Platform","properties":{"id":{"type":"integer","readOnly":true},"protocol":{"type":"string","enum":["OCPI","Gireve OCPI 2.1.1","Hubject OICP 2.2","Hubject OICP 2.3"]},"endpoint":{"type":"string","format":"url"},"ocpi":{"type":"object","nullable":true,"properties":{"token":{"type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","protocol","endpoint"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-platforms/v1.0/{roamingPlatform}":{"get":{"operationId":"roamingPlatformReadDeprecated","deprecated":true,"summary":"Roaming Platform / Read","tags":["resource / roaming platforms"],"description":"Get a Roaming Platform. See Roaming Connections for the list of supported protocols.","parameters":[{"in":"path","name":"roamingPlatform","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Roaming Platform","properties":{"id":{"type":"integer","readOnly":true},"protocol":{"type":"string","enum":["OCPI","Gireve OCPI 2.1.1","Hubject OICP 2.2","Hubject OICP 2.3"]},"endpoint":{"type":"string","format":"url"},"ocpi":{"type":"object","nullable":true,"properties":{"token":{"type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","protocol","endpoint"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-providers/v2.0":{"get":{"operationId":"roamingProvidersListing","summary":"Roaming Providers / Listing","tags":["resource / roaming providers"],"description":"Get all Roaming Providers","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"platformId":{"type":"integer"},"countryCode":{"type":"string"},"partyId":{"type":"string"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","role","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}},"post":{"operationId":"roamingProviderCreate","tags":["resource / roaming providers"],"summary":"Roaming Provider / Create","description":"Create new Roaming Provider  **Only applicable for Hubject, Gireve 2.2.1 and OCPI with missing credentials module emsp roaming connections**","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"Hubject","allOf":[{"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}},{"type":"object","properties":{"hubjectId":{"type":"string","nullable":true}}},{"required":["platformId"],"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}}]},{"title":"OCPI or Gireve 2.2.1","allOf":[{"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}},{"type":"object","properties":{"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"}}},{"required":["platformId"],"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}}]}]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","role","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-providers/v2.0/{roamingProvider}":{"get":{"operationId":"roamingProviderRead","summary":"Roaming Provider / Read","tags":["resource / roaming providers"],"description":"Get a Roaming Provider","parameters":[{"in":"path","name":"roamingProvider","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","role","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"roamingProviderUpdate","summary":"Roaming Provider / Update","description":"Update Roaming Providers","tags":["resource / roaming providers"],"parameters":[{"in":"path","name":"roamingProvider","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"title":"Hubject","allOf":[{"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}},{"type":"object","properties":{"hubjectId":{"type":"string","nullable":true}}}]},{"title":"OCPI or Gireve 2.2.1","type":"object","allOf":[{"type":"object","properties":{"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true}}},{"type":"object","properties":{"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"}}}]}]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"role":{"type":"string"},"hubjectId":{"type":"string","nullable":true},"businessName":{"type":"string","nullable":true},"platformId":{"type":"integer"},"partnerId":{"type":"integer","nullable":true},"countryCode":{"type":"string","description":"The code provided during the token exchange process","nullable":true},"partyId":{"type":"string","description":"ID of the Operator or Provider of roaming"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","role","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"roamingProviderDelete","summary":"Roaming Provider / Delete","description":"Delete a Roaming Provider","tags":["resource / roaming providers"],"parameters":[{"in":"path","name":"roamingProvider","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/roaming-tariffs/v2.0":{"get":{"operationId":"roamingTariffsListing","summary":"Roaming Tariffs / Listing","tags":["resource / roaming tariffs"],"description":"Get all Roaming Tariffs","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only roaming tariffs created on or after this datetime."},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only roaming tariffs created on or before this datetime."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"roamingIds":{"type":"array","items":{"type":"string"},"readOnly":true},"roamingTariffHumanReadable":{"type":"string","readOnly":true,"description":"This is the human readable roaming tariff as extracted from the tariff(s) shared by the CPO."},"rawRoamingTariffs":{"type":"array","items":{"type":"object"},"readOnly":true,"description":"The original roaming tariffs as provided by the CPO in the respective roaming protocol format."},"operatorId":{"type":"integer","readOnly":true},"tariffGroupId":{"type":"integer","nullable":true,"description":"The ID of the local Tariff Group assigned to the EVSEs with this roaming tariff(s)."},"cpoTariffGroupId":{"type":"integer","readOnly":true,"description":"The ID of the CPO's Tariff Group associated with the internal roaming map. Only present for internal roaming tariff maps."}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/roaming-tariffs/v2.0/{roamingTariff}":{"get":{"operationId":"roamingTariffRead","summary":"Roaming Tariff / Read","tags":["resource / roaming tariffs"],"description":"Get a Roaming Tariff","parameters":[{"in":"path","name":"roamingTariff","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"roamingIds":{"type":"array","items":{"type":"string"},"readOnly":true},"roamingTariffHumanReadable":{"type":"string","readOnly":true,"description":"This is the human readable roaming tariff as extracted from the tariff(s) shared by the CPO."},"rawRoamingTariffs":{"type":"array","items":{"type":"object"},"readOnly":true,"description":"The original roaming tariffs as provided by the CPO in the respective roaming protocol format."},"operatorId":{"type":"integer","readOnly":true},"tariffGroupId":{"type":"integer","nullable":true,"description":"The ID of the local Tariff Group assigned to the EVSEs with this roaming tariff(s)."},"cpoTariffGroupId":{"type":"integer","readOnly":true,"description":"The ID of the CPO's Tariff Group associated with the internal roaming map. Only present for internal roaming tariff maps."}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"roamingTariffUpdate","summary":"Roaming Tariff / Update","description":"Update Roaming Tariff","tags":["resource / roaming tariffs"],"parameters":[{"in":"path","name":"roamingTariff","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"roamingIds":{"type":"array","items":{"type":"string"},"readOnly":true},"roamingTariffHumanReadable":{"type":"string","readOnly":true,"description":"This is the human readable roaming tariff as extracted from the tariff(s) shared by the CPO."},"rawRoamingTariffs":{"type":"array","items":{"type":"object"},"readOnly":true,"description":"The original roaming tariffs as provided by the CPO in the respective roaming protocol format."},"operatorId":{"type":"integer","readOnly":true},"tariffGroupId":{"type":"integer","nullable":true,"description":"The ID of the local Tariff Group assigned to the EVSEs with this roaming tariff(s)."},"cpoTariffGroupId":{"type":"integer","readOnly":true,"description":"The ID of the CPO's Tariff Group associated with the internal roaming map. Only present for internal roaming tariff maps."}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"roamingIds":{"type":"array","items":{"type":"string"},"readOnly":true},"roamingTariffHumanReadable":{"type":"string","readOnly":true,"description":"This is the human readable roaming tariff as extracted from the tariff(s) shared by the CPO."},"rawRoamingTariffs":{"type":"array","items":{"type":"object"},"readOnly":true,"description":"The original roaming tariffs as provided by the CPO in the respective roaming protocol format."},"operatorId":{"type":"integer","readOnly":true},"tariffGroupId":{"type":"integer","nullable":true,"description":"The ID of the local Tariff Group assigned to the EVSEs with this roaming tariff(s)."},"cpoTariffGroupId":{"type":"integer","readOnly":true,"description":"The ID of the CPO's Tariff Group associated with the internal roaming map. Only present for internal roaming tariff maps."}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/security-events-log/v2.0":{"get":{"deprecated":true,"operationId":"securityEventLogsListingDeprecated","summary":"Security Events Logs / Listing","description":"Get all Security Events Log","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"chargePoint":{"type":"string","format":"integer"},"timestampFrom":{"type":"string"},"timestampTo":{"type":"string"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / security event logs"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"required":["type","timestamp"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePoint":{"type":"integer","readOnly":true},"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"techInfo":{"type":"string","description":"Additional information about the security event."},"timestamp":{"type":"string","description":"Time of day on which the event has occurred."}}}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/security-events-log/v2.0/{securityEventLog}":{"parameters":[{"name":"securityEventLog","in":"path","schema":{"type":"integer"},"required":true}],"get":{"deprecated":true,"operationId":"securityEventLogReadDeprecated","summary":"Security Event Log / Read","description":"Get a Security Event Log","tags":["resource / security event logs"],"responses":{"200":{"description":"Security Event Log returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"required":["type","timestamp"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePoint":{"type":"integer","readOnly":true},"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"techInfo":{"type":"string","description":"Additional information about the security event."},"timestamp":{"type":"string","description":"Time of day on which the event has occurred."}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/security-events/v2.0":{"get":{"operationId":"securityEventsListing","summary":"Security Events / Listing","description":"Get all Security Events","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"chargePoint":{"type":"string","format":"integer"},"timestampFrom":{"type":"string"},"timestampTo":{"type":"string"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"tags":["resource / security events"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"required":["type","timestamp"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePoint":{"type":"integer","readOnly":true},"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"techInfo":{"type":"string","description":"Additional information about the security event."},"timestamp":{"type":"string","description":"Time of day on which the event has occurred."}}}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}}}}},"/public-api/resources/security-events/v2.0/{securityEvent}":{"parameters":[{"name":"securityEvent","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"securityEventRead","summary":"Security Event / Read","description":"Get a Security Event","tags":["resource / security events"],"responses":{"200":{"description":"Security Event returned","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"required":["type","timestamp"],"type":"object","properties":{"id":{"type":"integer","readOnly":true},"chargePoint":{"type":"integer","readOnly":true},"type":{"type":"string","description":"Type of critical security events that are pushed from the Charge Point to the backend.","enum":["FirmwareUpdated","SettingSystemTime","StartupOfTheDevice","ResetOrReboot","SecurityLogWasCleared","MemoryExhaustion","TamperDetectionActivated"]},"techInfo":{"type":"string","description":"Additional information about the security event."},"timestamp":{"type":"string","description":"Time of day on which the event has occurred."}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sessions/v1.0":{"get":{"operationId":"sessionsListing","summary":"Sessions / Listing","tags":["resource / sessions"],"parameters":[{"in":"query","name":"withClockAlignedEnergyConsumption","schema":{"type":"boolean","default":false}},{"in":"query","name":"clockAlignedInterval","schema":{"type":"integer","enum":[15,30,60],"default":15}},{"in":"query","name":"withAuthorization","schema":{"type":"boolean","default":false}},{"in":"query","name":"withPriceBreakdown","schema":{"type":"boolean","default":false}},{"in":"query","name":"withChargingPeriods","schema":{"type":"boolean","default":false}},{"in":"query","name":"withChargingPeriodsPriceBreakdown","schema":{"type":"boolean","default":false},"description":"Must be used in combination with `withChargingPeriods` parameter."},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"evseId":{"type":"string","format":"integer","description":"Only list sessions on a certain EVSE"},"chargePointId":{"type":"string","format":"integer","description":"Only list sessions on a certain Charge Point"},"evsePhysicalReference":{"type":"string","description":"Only list sessions on a certain EVSE, identified by the phisicalReference"},"chargePointNetworkId":{"type":"string","description":"Only list sessions on a certain Charge Point, identified by the NetworkId"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connect_to_evse","authorization_failed","unknown_session"]},"chargePointBootNotificationSerialNumber":{"type":"string","description":"Only list sessions on Charge Points with last boot notification that had this charge_point_serial_number"},"chargePointBootNotificationVendor":{"type":"string","description":"Only list sessions on Charge Points with last boot notification that had this vendor"},"startedAfter":{"type":"string","format":"date-time","description":"Only list sessions identified by the start time being after this datetime"},"startedBefore":{"type":"string","format":"date-time","description":"Only list sessions identified by the start time being before this datetime"},"userId":{"type":"string","format":"integer","description":"Only list sessions by a certain user"},"status":{"type":"string","description":"Only list session in this status","enum":["unknown","pending","active","finished","expired","failed"]},"endedAfter":{"type":"string","format":"date-time","description":"Only list sessions identified by the end time being after this datetime"},"endedBefore":{"type":"string","format":"date-time","description":"Only list sessions identified by the end time being before this datetime"},"partnerId":{"type":"string","format":"integer","description":"Only list sessions on charge points owned by a certain partner"},"userPartnerId":{"type":"string","format":"integer","description":"Only list sessions where the user belongs to a certain partner (through accepted invites)"},"subOperatorId":{"type":"string","format":"integer","description":"Only list sessions associated with partners, assigned to certain sub-operator"},"locationId":{"type":"string","format":"integer","description":"Only list sessions on EVSEs belonging to charge points at the specified location"},"idTag":{"type":"string","description":"Only list sessions started with a specific idTag (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"paymentType":{"type":"string","description":"`bank_transfer` is used for one-time bank transfers, for saved (tokenized) bank transfers use `tokenized`.","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"selectedPaymentMethod":{"type":"array","items":{"type":"string","enum":["corporate","subscription","balance","bank_transfer","payment_terminal","external","visa","mastercard","maestro","amex","paypal","unknown","apple_pay","google_pay","twint","bancontact","other"]},"description":"Filter sessions by the payment method selected when starting the session. Supports multiselect (OR logic).\n\n**General payment types:**\n- `corporate` - Sessions with corporate account selected as payment method\n- `subscription` - Sessions with user subscription selected as payment method\n- `balance` - Sessions with balance selected as payment method\n- `bank_transfer` - Sessions with bank transfer selected as payment method\n- `payment_terminal` - Sessions initiated via payment terminal\n- `external` - Sessions with external billing\n\n**Card networks:**\n- `visa`, `mastercard`, `maestro`, `amex`, `paypal` - Sessions with specific card network selected as payment method\n- `unknown` - Sessions with card selected where network is not identified\n\n**Digital wallets:**\n- `apple_pay`, `google_pay` - Sessions with Apple Pay or Google Pay selected as payment method\n- `twint`, `bancontact` - Sessions with Twint or Bancontact selected as payment method\n- `other` - Sessions with other digital wallet selected as payment method\n"},"paymentStatus":{"type":"string","enum":["pending","paid","partially","failed"]},"taxId":{"type":"string","format":"integer","description":"Only list sessions with specific VAT id"},"paymentStatusUpdatedBefore":{"type":"string","format":"date-time","description":"Only list sessions with payment status updated before the specified date and time. Please provide the value in ISO 8601 formatted date."},"paymentStatusUpdatedAfter":{"type":"string","format":"date-time","description":"Only list sessions with payment status updated after the specified date and time. Please provide the value in ISO 8601 formatted date."},"billingCompletedBefore":{"type":"string","format":"date-time","description":"Only list sessions with billing completed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"billingCompletedAfter":{"type":"string","format":"date-time","description":"Only list sessions with billing completed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"externalAppData":{"type":"string","description":"Only list records with specific external application data. You can use a dot notation to search for nested properties. For example, `filter[externalAppData.property1.property2]=value`.","example":"filter[externalAppData.property1.property2]=value"},"receiptId":{"type":"string","format":"integer","description":"Only list sessions with specific receipt id."},"authorizationSource":{"type":"string","enum":["roaming","local","third_party"],"description":"Filter sessions based on authorization source"},"billingStatus":{"type":"string","description":"Only list sessions in this billing status.","enum":["pending","suspended","completed","null"]},"terminalId":{"type":"string","format":"integer","description":"Only list sessions with transaction(s) with specific payment terminal id."},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"},"roaming":{"type":"object","properties":{"roamingOperatorCpoIds":{"type":"array","items":{"type":"integer"},"description":"Only list sessions initiated on the EVSEs of a specific Roaming operator with a CPO role."},"roamingOperatorEmspIds":{"type":"array","items":{"type":"integer"},"description":"Filter sessions by the EMSP operator that authorized the session. Accepts one or more roaming operator IDs with EMSP role."},"roamingConnectionIds":{"type":"array","items":{"type":"integer"},"description":"Filter sessions by roaming connection. Accepts one or more roaming connection IDs."}}}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["externalAppData"]}},"description":"Include additional information in the response. The following options are available:<br> - `externalAppData`: Include external application data in the response\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Charging session","properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"connectorId":{"type":"integer","nullable":true},"status":{"type":"string","enum":["unknown","pending","active","finished","failed","expired"]},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","nullable":true,"description":"The id of the user that started the session"},"bookingId":{"type":"integer","description":"The ID of the linked booking (if any)"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"energy":{"deprecated":true,"type":"number","description":"Delivered energy in Wh"},"powerKw":{"deprecated":true,"type":"number","description":"This field representing the current charging speed in kilowatts is deprecated. Use the `power.latest` property instead for charging power information."},"socPercent":{"type":"number","description":"State of charge (in %). Optional."},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"nullable":true,"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"tax":{"type":"object","nullable":true,"deprecated":true,"properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"paymentType":{"type":"string","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"paymentMethodId":{"type":"string","description":"The ID of the payment method. Mind that this is actually a string. It can be, for example `corporate:1234` - for corporate billing, or `balance`, or `subscription` - when the session is to be paid with the user's post-paid subscription.","nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used.","nullable":true},"nonBillableEnergy":{"type":"number","description":"The energy that is included as an allowance for pre-paid and post subscriptions."},"paymentStatus":{"type":"string","nullable":true,"enum":["pending","paid","partially","failed",null]},"authorizationId":{"nullable":true,"type":"integer"},"idTag":{"type":"string","description":"The idTag defines the authentication source for the session (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"idTagLabel":{"type":"string","description":"Additional information about the idTag that differs depending on the type of the idTag or could be something else, related to the car or the user."},"idTagType":{"type":"string","nullable":true,"enum":["rfid","emaid","mac_address"],"description":"The type of identifier used for authentication. Returns 'rfid' for standard RFID card identifiers, 'emaid' for E-Mobility Account Identifiers used by ISO15118 Plug&Charge, or 'mac_address' for MAC addresses used by Autocharge."},"extendingSessionId":{"deprecated":true,"type":"integer","nullable":true,"description":"When a session is finished (because connectivity was lost for a long time) and more data is received, the\nadditional data is stored in an extending session. If this property is set, then this is an extending session.\n"},"originalSessionId":{"type":"integer","description":"ID of the session that the current session is extending."},"extendedBySessionId":{"type":"integer","description":"ID of the session that extends this session."},"reimbursementEligibility":{"type":"boolean"},"externalSessionId":{"deprecated":true,"nullable":true,"type":"string","description":"Deprecated: Use `idTag` field instead. This field will be removed in a future version.\nPreviously used for admin-started sessions, this value is now available in the `idTag` field.\n"},"authorization":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]},"chargingPeriods":{"type":"array","items":{"type":"object","description":"Describes a period in the session that is billed separately, for example charging@night (for time of day tariffs) or idle (for tariffs that charge separately idle time)","properties":{"id":{"type":"integer"},"energy":{"type":"integer","description":"Delivered energy in Wh"},"energyPrecise":{"type":"number","nullable":true,"description":"Delivered energy in Wh with decimal precision"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"state":{"deprecated":true,"type":"string","example":["charging","charging@night","charging@day","idle","idle@day","idle@night","charging@boosted","charging@optimised"],"description":"The state of the period. A non exhaustive list of possible values:\n  * `charging` - the vehicle was charging\n  * `charging@night` - a ToD tariff was selected and the vehicle was charging during the nighttime period of the tariff\n  * `charging@day` - a ToD tariff was selected and the vehicle was charging during the daytime period of the tariff\n  * `idle` - a tariff with separate pricing for idle time was selected and the charging was idle in that period\n  * `idle@night` - a ToD tariff was selected and the vehicle was idling during the nighttime period of the tariff\n  * `idle@day` - a ToD tariff was selected and the vehicle was idling during the daytime period of the tariff\n  * `charging@boosted` - Optimised dynamic pricing was applied and charging was performed with full available power\n  * `charging@optimised` - Optimised dynamic pricing was applied and charging was performed with lower price and limited power during peak hours\n"},"chargingState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the period."},"graceTimeEndAt":{"type":"string","format":"date-time","description":"When the idle fee grace period expires for this charging period. Present only on idle charging periods that have a grace period configured."},"pricingDetails":{"description":"Optional pricing details specific to this charging period, dependent on the tariff.","type":"object","properties":{"chargingType":{"type":"string","enum":["boosted","optimised"],"nullable":true,"description":"Power delivery strategy used during this period.\n  * `boosted` - maximum available power delivery\n  * `optimised` - reduced power during peak hours for cost efficiency\n"},"dayPeriod":{"type":"string","nullable":true,"enum":["day","night"],"description":"The period of the day.\n  * `day` - daytime period of the tariff\n  * `night` - nighttime period of the tariff\n"},"pricingMethod":{"type":"string","nullable":true,"enum":["duration","energy","durationAndEnergy","free"],"description":"The method used for calculating price in standard tariffs.\n  * `duration` - pricing based on duration\n  * `energy` - pricing based on energy consumption\n  * `durationAndEnergy` - pricing based on both duration and energy\n  * `free` - free period with no charge\n"},"price":{"type":"number","format":"decimal","description":"Base price rate for Energy Time of Usage tariffs"},"markup":{"type":"number","format":"decimal","description":"Additional percentage or fixed amount added to the base price"},"initialEnergyPrice":{"type":"number","format":"decimal","description":"Starting price rate for energy-based charging"},"initialDurationPrice":{"type":"number","format":"decimal","description":"Starting price rate for time-based charging"},"startHour":{"type":"string","description":"The start hour for the charging period"},"endHour":{"type":"string","description":"The end hour for the charging period"},"day":{"type":"string","description":"The day being used"}}},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"priceBreakdown":{"type":"array","items":{"description":"Charging period price breakdown","type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},"description":"A breakdown of the different tariff elements that create the total amount of the charging period. Only sent when `withChargingPeriodsPriceBreakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."}},"required":["id","energy","startedAt","state"]}},"priceBreakdown":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},{"type":"object","properties":{"totalPrice":{"type":"number","format":"decimal","description":"The `unitPrice` multiplied by the `quantity`.","deprecated":true},"unitPrice":{"type":"number","format":"decimal","description":"The price of a single unit of the tariff element.","deprecated":true}},"required":["totalPrice","unitPrice"]}]},"description":"A breakdown of the different tariff elements that create the total amount of the charging session. Only sent when `session_with_price_breakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."},"tariffSnapshotId":{"type":"integer","nullable":true,"description":"At the start of the charging session the tariff will be snapshotted and that snapshot will not be changed ever. That snapshot is used to determine the price of the charging session. This is the ID of that snapshot.\n"},"electricityCost":{"type":"number","format":"decimal","nullable":true},"evsePhysicalReference":{"type":"string","description":"This could be either the identifier that is presented to the user, so they can identify the EVSE at the location. Or for roaming EVSEs - it is the roaming evse_id.\n","nullable":true},"paymentStatusUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"chargePointOperatorRoamingId":{"type":"string","description":"The roaming operator identifier (e.g., \"DE*ENA\", \"LT*IGN\") of the operator who owns the charge point where the session occurred. Only returned for roaming sessions."},"roaming":{"type":"object","properties":{"cdrIds":{"type":"array","description":"The CDRs that are generated for roaming sessions.","items":{"type":"integer"}},"sessionId":{"type":"string","description":"The unique id that identifies the charging session in the CPO platform."},"roamingOperatorCpoId":{"type":"integer","description":"The id of the roaming operator that owns the charge point at which the session occurred."},"cpoLastUpdatedAt":{"type":"string","format":"date-time","description":"Applicable only for OCPI sessions and populated with the most recent shared `last_updated` value from the CPO roaming operator. ISO 8601 formatted date","readOnly":true}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"randomisedDelay":{"type":"integer","description":"Number of seconds by which current offering is being delayed at the start of the session. The field is omitted when randomised delay is not enabled in the Personal Charging settings or when there is no randomised delay."},"receiptId":{"deprecated":true,"type":"integer","nullable":true},"externalAppData":{"description":"Used to hold any external application data related to the session.","type":"object","nullable":true,"additionalProperties":true},"clockAlignedEnergyConsumption":{"type":"array","items":{"type":"object","description":"Session Clock aligned consumption period","properties":{"start":{"type":"string","format":"date-time","description":"The beginning of the clock-aligned consumption period."},"end":{"type":"string","format":"date-time","description":"The end of the clock-aligned consumption period."},"energyConsumed":{"deprecated":true,"type":"integer","description":"The amount of total consumed energy(Wh) during the clock-aligned consumption period."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"The amount of total consumed energy (Wh) during the clock-aligned consumption period."},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for the specified clock-aligned consumption period."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for the specified clock-aligned consumption period."}},"required":["total","grid"]},"totalCost":{"type":"object","description":"The total cost of energy consumption during the clock-aligned period.","properties":{"withTax":{"type":"number","description":"Total cost including tax."},"withoutTax":{"type":"number","description":"Total cost excluding tax."}},"required":["withTax"]}},"required":["start","end","energyConsumed","energyConsumption"]},"description":"Energy consumption during time intervals (15, 30 or 60 minutes) in the charging session. The start of the first interval is the start of the session then the intervals are defined by the exact minute of the hour. Clock-aligned consumption periods are included in the response only when the query param 'withClockAlignedEnergyConsumption' is set to 'true'."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"Delivered energy (Wh)"},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for all clock-aligned consumption periods in the charging session."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for all clock-aligned consumption periods in the charging session."}},"required":["total","grid"]},"estimatedSavings":{"type":"number","description":"The sum of savings that could be achieved if the consumed energy was not locally generated but delivered from the grid for all clock-aligned consumption periods in the charging session."},"billingStatus":{"type":"string","description":"The status of the billing process for the session.","nullable":true,"enum":["pending","suspended","completed",null]},"billingCompletedAt":{"type":"string","format":"date-time","description":"The timestamp when session billing was completed. Only present when billing has completed, omitted otherwise."},"power":{"type":"object","properties":{"latest":{"type":"number","nullable":true,"description":"The current charging power (in watts)"},"peak":{"type":"number","nullable":true,"description":"The maximum charging power (in watts) reached during the session"},"average":{"type":"number","nullable":true,"description":"The average charging power (in watts) maintained during the session"}}}},"required":["id","operatorId","status","userId","authorizationId","energy","energyConsumption","chargePointId","evseId","startedAt","billingStatus"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sessions/v1.0/{session}":{"get":{"operationId":"sessionRead","parameters":[{"in":"query","name":"withClockAlignedEnergyConsumption","schema":{"type":"boolean","default":false}},{"in":"query","name":"clockAlignedInterval","schema":{"type":"integer","enum":[15,30,60],"default":15}},{"in":"query","name":"withAuthorization","schema":{"type":"boolean","default":false}},{"in":"query","name":"withChargingPeriods","schema":{"type":"boolean","default":false}},{"in":"query","name":"withChargingPeriodsPriceBreakdown","schema":{"type":"boolean","default":false},"description":"Must be used in combination with `withChargingPeriods` parameter."},{"in":"query","name":"withPriceBreakdown","schema":{"type":"boolean","default":false}},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["externalAppData"]}},"description":"Include additional information in the response. The following options are available:<br> - `externalAppData`: Include external application data in the response\n"},{"in":"path","name":"session","description":"The session ID to fetch","schema":{"type":"string"},"required":true}],"summary":"Session / Read","tags":["resource / sessions"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Charging session","properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"connectorId":{"type":"integer","nullable":true},"status":{"type":"string","enum":["unknown","pending","active","finished","failed","expired"]},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","nullable":true,"description":"The id of the user that started the session"},"bookingId":{"type":"integer","description":"The ID of the linked booking (if any)"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"energy":{"deprecated":true,"type":"number","description":"Delivered energy in Wh"},"powerKw":{"deprecated":true,"type":"number","description":"This field representing the current charging speed in kilowatts is deprecated. Use the `power.latest` property instead for charging power information."},"socPercent":{"type":"number","description":"State of charge (in %). Optional."},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"nullable":true,"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"tax":{"type":"object","nullable":true,"deprecated":true,"properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"paymentType":{"type":"string","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"paymentMethodId":{"type":"string","description":"The ID of the payment method. Mind that this is actually a string. It can be, for example `corporate:1234` - for corporate billing, or `balance`, or `subscription` - when the session is to be paid with the user's post-paid subscription.","nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used.","nullable":true},"nonBillableEnergy":{"type":"number","description":"The energy that is included as an allowance for pre-paid and post subscriptions."},"paymentStatus":{"type":"string","nullable":true,"enum":["pending","paid","partially","failed",null]},"authorizationId":{"nullable":true,"type":"integer"},"idTag":{"type":"string","description":"The idTag defines the authentication source for the session (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"idTagLabel":{"type":"string","description":"Additional information about the idTag that differs depending on the type of the idTag or could be something else, related to the car or the user."},"idTagType":{"type":"string","nullable":true,"enum":["rfid","emaid","mac_address"],"description":"The type of identifier used for authentication. Returns 'rfid' for standard RFID card identifiers, 'emaid' for E-Mobility Account Identifiers used by ISO15118 Plug&Charge, or 'mac_address' for MAC addresses used by Autocharge."},"extendingSessionId":{"deprecated":true,"type":"integer","nullable":true,"description":"When a session is finished (because connectivity was lost for a long time) and more data is received, the\nadditional data is stored in an extending session. If this property is set, then this is an extending session.\n"},"originalSessionId":{"type":"integer","description":"ID of the session that the current session is extending."},"extendedBySessionId":{"type":"integer","description":"ID of the session that extends this session."},"reimbursementEligibility":{"type":"boolean"},"externalSessionId":{"deprecated":true,"nullable":true,"type":"string","description":"Deprecated: Use `idTag` field instead. This field will be removed in a future version.\nPreviously used for admin-started sessions, this value is now available in the `idTag` field.\n"},"authorization":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]},"chargingPeriods":{"type":"array","items":{"type":"object","description":"Describes a period in the session that is billed separately, for example charging@night (for time of day tariffs) or idle (for tariffs that charge separately idle time)","properties":{"id":{"type":"integer"},"energy":{"type":"integer","description":"Delivered energy in Wh"},"energyPrecise":{"type":"number","nullable":true,"description":"Delivered energy in Wh with decimal precision"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"state":{"deprecated":true,"type":"string","example":["charging","charging@night","charging@day","idle","idle@day","idle@night","charging@boosted","charging@optimised"],"description":"The state of the period. A non exhaustive list of possible values:\n  * `charging` - the vehicle was charging\n  * `charging@night` - a ToD tariff was selected and the vehicle was charging during the nighttime period of the tariff\n  * `charging@day` - a ToD tariff was selected and the vehicle was charging during the daytime period of the tariff\n  * `idle` - a tariff with separate pricing for idle time was selected and the charging was idle in that period\n  * `idle@night` - a ToD tariff was selected and the vehicle was idling during the nighttime period of the tariff\n  * `idle@day` - a ToD tariff was selected and the vehicle was idling during the daytime period of the tariff\n  * `charging@boosted` - Optimised dynamic pricing was applied and charging was performed with full available power\n  * `charging@optimised` - Optimised dynamic pricing was applied and charging was performed with lower price and limited power during peak hours\n"},"chargingState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the period."},"graceTimeEndAt":{"type":"string","format":"date-time","description":"When the idle fee grace period expires for this charging period. Present only on idle charging periods that have a grace period configured."},"pricingDetails":{"description":"Optional pricing details specific to this charging period, dependent on the tariff.","type":"object","properties":{"chargingType":{"type":"string","enum":["boosted","optimised"],"nullable":true,"description":"Power delivery strategy used during this period.\n  * `boosted` - maximum available power delivery\n  * `optimised` - reduced power during peak hours for cost efficiency\n"},"dayPeriod":{"type":"string","nullable":true,"enum":["day","night"],"description":"The period of the day.\n  * `day` - daytime period of the tariff\n  * `night` - nighttime period of the tariff\n"},"pricingMethod":{"type":"string","nullable":true,"enum":["duration","energy","durationAndEnergy","free"],"description":"The method used for calculating price in standard tariffs.\n  * `duration` - pricing based on duration\n  * `energy` - pricing based on energy consumption\n  * `durationAndEnergy` - pricing based on both duration and energy\n  * `free` - free period with no charge\n"},"price":{"type":"number","format":"decimal","description":"Base price rate for Energy Time of Usage tariffs"},"markup":{"type":"number","format":"decimal","description":"Additional percentage or fixed amount added to the base price"},"initialEnergyPrice":{"type":"number","format":"decimal","description":"Starting price rate for energy-based charging"},"initialDurationPrice":{"type":"number","format":"decimal","description":"Starting price rate for time-based charging"},"startHour":{"type":"string","description":"The start hour for the charging period"},"endHour":{"type":"string","description":"The end hour for the charging period"},"day":{"type":"string","description":"The day being used"}}},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"priceBreakdown":{"type":"array","items":{"description":"Charging period price breakdown","type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},"description":"A breakdown of the different tariff elements that create the total amount of the charging period. Only sent when `withChargingPeriodsPriceBreakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."}},"required":["id","energy","startedAt","state"]}},"priceBreakdown":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},{"type":"object","properties":{"totalPrice":{"type":"number","format":"decimal","description":"The `unitPrice` multiplied by the `quantity`.","deprecated":true},"unitPrice":{"type":"number","format":"decimal","description":"The price of a single unit of the tariff element.","deprecated":true}},"required":["totalPrice","unitPrice"]}]},"description":"A breakdown of the different tariff elements that create the total amount of the charging session. Only sent when `session_with_price_breakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."},"tariffSnapshotId":{"type":"integer","nullable":true,"description":"At the start of the charging session the tariff will be snapshotted and that snapshot will not be changed ever. That snapshot is used to determine the price of the charging session. This is the ID of that snapshot.\n"},"electricityCost":{"type":"number","format":"decimal","nullable":true},"evsePhysicalReference":{"type":"string","description":"This could be either the identifier that is presented to the user, so they can identify the EVSE at the location. Or for roaming EVSEs - it is the roaming evse_id.\n","nullable":true},"paymentStatusUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"chargePointOperatorRoamingId":{"type":"string","description":"The roaming operator identifier (e.g., \"DE*ENA\", \"LT*IGN\") of the operator who owns the charge point where the session occurred. Only returned for roaming sessions."},"roaming":{"type":"object","properties":{"cdrIds":{"type":"array","description":"The CDRs that are generated for roaming sessions.","items":{"type":"integer"}},"sessionId":{"type":"string","description":"The unique id that identifies the charging session in the CPO platform."},"roamingOperatorCpoId":{"type":"integer","description":"The id of the roaming operator that owns the charge point at which the session occurred."},"cpoLastUpdatedAt":{"type":"string","format":"date-time","description":"Applicable only for OCPI sessions and populated with the most recent shared `last_updated` value from the CPO roaming operator. ISO 8601 formatted date","readOnly":true}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"randomisedDelay":{"type":"integer","description":"Number of seconds by which current offering is being delayed at the start of the session. The field is omitted when randomised delay is not enabled in the Personal Charging settings or when there is no randomised delay."},"receiptId":{"deprecated":true,"type":"integer","nullable":true},"externalAppData":{"description":"Used to hold any external application data related to the session.","type":"object","nullable":true,"additionalProperties":true},"clockAlignedEnergyConsumption":{"type":"array","items":{"type":"object","description":"Session Clock aligned consumption period","properties":{"start":{"type":"string","format":"date-time","description":"The beginning of the clock-aligned consumption period."},"end":{"type":"string","format":"date-time","description":"The end of the clock-aligned consumption period."},"energyConsumed":{"deprecated":true,"type":"integer","description":"The amount of total consumed energy(Wh) during the clock-aligned consumption period."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"The amount of total consumed energy (Wh) during the clock-aligned consumption period."},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for the specified clock-aligned consumption period."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for the specified clock-aligned consumption period."}},"required":["total","grid"]},"totalCost":{"type":"object","description":"The total cost of energy consumption during the clock-aligned period.","properties":{"withTax":{"type":"number","description":"Total cost including tax."},"withoutTax":{"type":"number","description":"Total cost excluding tax."}},"required":["withTax"]}},"required":["start","end","energyConsumed","energyConsumption"]},"description":"Energy consumption during time intervals (15, 30 or 60 minutes) in the charging session. The start of the first interval is the start of the session then the intervals are defined by the exact minute of the hour. Clock-aligned consumption periods are included in the response only when the query param 'withClockAlignedEnergyConsumption' is set to 'true'."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"Delivered energy (Wh)"},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for all clock-aligned consumption periods in the charging session."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for all clock-aligned consumption periods in the charging session."}},"required":["total","grid"]},"estimatedSavings":{"type":"number","description":"The sum of savings that could be achieved if the consumed energy was not locally generated but delivered from the grid for all clock-aligned consumption periods in the charging session."},"billingStatus":{"type":"string","description":"The status of the billing process for the session.","nullable":true,"enum":["pending","suspended","completed",null]},"billingCompletedAt":{"type":"string","format":"date-time","description":"The timestamp when session billing was completed. Only present when billing has completed, omitted otherwise."},"power":{"type":"object","properties":{"latest":{"type":"number","nullable":true,"description":"The current charging power (in watts)"},"peak":{"type":"number","nullable":true,"description":"The maximum charging power (in watts) reached during the session"},"average":{"type":"number","nullable":true,"description":"The average charging power (in watts) maintained during the session"}}}},"required":["id","operatorId","status","userId","authorizationId","energy","energyConsumption","chargePointId","evseId","startedAt","billingStatus"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sessions/v1.0/{session}/consumption-stats":{"get":{"operationId":"sessionsConsumptionStatsRead","parameters":[{"in":"path","name":"session","description":"The session ID to fetch","schema":{"type":"string"},"required":true}],"summary":"Sessions / Consumption Stats / Read","description":"Consumption statistics may differ between active and finished sessions, as finished sessions display aggregated final data with a maximum of 300 items.","tags":["resource / sessions"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","description":"Consumption Stats","items":{"type":"object","properties":{"energy":{"type":"number","nullable":true,"description":"The cumulative energy consumption (in watt-hours) recorded at this specific point in time"},"power":{"type":"number","nullable":true,"description":"The charging power value (in watts) recorded at this specific point in time"},"timestamp":{"allOf":[{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}],"description":"The specific date and time when the energy consumption and power values were recorded, in ISO 8601 format."}},"required":["energy","power","timestamp"]}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/settings/v1.0":{"get":{"operationId":"settingsListing","tags":["resource / settings"],"summary":"Settings / Listing","description":"Get all settings","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Settings","properties":{"baseCurrency":{"type":"object","properties":{"id":{"type":"integer"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id"]},"defaultTax":{"type":"object","properties":{"id":{"type":"integer"},"enableMultiTaxSupport":{"type":"boolean","description":"When enabled, the tax for each tariff could be chosen individually. IMPORTANT: Balance, voucher and top-up functionalities no longer could be used in this case"},"taxInformationNotInInvoicesAndReceipts":{"type":"boolean","description":"When enabled, Tax information would be excluded from invoices and receipts."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id"]},"reservations":{"type":"object","properties":{"enableReservations":{"type":"boolean"},"reservationTime":{"type":"integer","description":"The duration of a reservation in minutes."},"expiryNotification":{"type":"integer","description":"Remaining time of the reservation in minutes, at which a push notification would be sent to the user to let them know that their reservation is going to expire soon."},"maxReservationsPerDayPerUser":{"type":"integer","description":"Limits the number of reservations that the user can make per day."},"cooldownTimeBetweenReservations":{"type":"integer","description":"The time in minutes that the user can wait after making a reservation before they can make a new one. Starts counting after the previous reservation has expired or has been canceled."},"enableReservationsQueue":{"type":"boolean","description":"Allow users to reserve a charger (EVSE) that is currently occupied by adding reservations to queue."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"bilingualInvoicesEnabled":{"type":"boolean","description":"Indicates whether the operator's invoice processor is configured with bilingual invoices enabled. When true, invoices can be generated in both the operator's default language and the user's preferred language."},"bilingualReceiptsEnabled":{"type":"boolean","description":"Indicates whether the operator's receipt processor is configured with bilingual receipts enabled. When true, receipts can be generated in both the operator's default language and the user's preferred language."}},"required":["bilingualInvoicesEnabled","bilingualReceiptsEnabled"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v1.0":{"get":{"operationId":"subOperatorsListingDeprecated","summary":"Sub operators / Listing","tags":["resource / sub operators"],"deprecated":true,"description":"**Deprecated.** Use v2.0 endpoint instead for enhanced functionality.\n","parameters":[{"in":"query","name":"filter","required":false,"style":"deepObject","explode":true,"schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partner_ids":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v1.0/{subOperator}":{"get":{"operationId":"subOperatorReadDeprecated","summary":"Sub operator / Read","tags":["resource / sub operators"],"deprecated":true,"description":"**Deprecated.** Use v2.0 endpoint instead for enhanced functionality.\n","parameters":[{"in":"path","name":"subOperator","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partner_ids":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v2.0":{"get":{"operationId":"subOperatorsListing","summary":"Sub-operators / Listing","tags":["resource / sub operators"],"description":"Get all sub-operators.\nReturns sub-operators ordered by businessName ascending by default.\nUses cursor-based pagination.\n","parameters":[{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"partnerId":{"type":"integer","description":"Filter by associated partner ID"},"hasStripeAccount":{"type":"boolean","description":"Filter by Stripe Connect account presence"},"directPaymentEnabled":{"type":"boolean","description":"Filter by direct payment capability"},"country":{"type":"string","description":"Filter by ISO 3166-1 alpha-2 country code (exact match)"},"state":{"type":"string","description":"Filter by state/province code for countries with predefined states (US, CA, AU, UM, RO) (exact match)"},"name":{"type":"string","description":"Filter by sub-operator name (partial match)"},"businessName":{"type":"string","description":"Filter by business name (partial match)"},"region":{"type":"string","description":"Filter by region for countries without predefined states (partial match)"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"Filter by records updated after this ISO 8601 datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"Filter by records updated before this ISO 8601 datetime"},"externalId":{"type":"string","description":"Filter by external identifier (exact match)"}}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator"},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"description":"External system identifier for integration purposes"},"regNo":{"type":"string","maxLength":255,"description":"Company registration number"},"taxNo":{"type":"string","maxLength":255,"description":"Tax identification number"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","maxLength":255,"description":"City name"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"description":"Postal/ZIP code"},"address":{"type":"string","maxLength":255,"description":"Street address"},"contactPerson":{"type":"string","maxLength":255,"description":"Primary contact person name"},"phone":{"type":"string","maxLength":255,"description":"Contact phone number"},"email":{"type":"string","maxLength":255,"description":"Contact email address"},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"description":"Email address for receiving fault notifications"},"businessOperationalContext":{"type":"string","description":"Long-form business context and operational notes"},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of associated partner IDs"}}},{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier for the sub-operator"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"stripeConnect":{"readOnly":true,"description":"If `include[]=stripeConnect` is provided with the request, the Stripe Connect information will be included here. Only present when a Stripe account exists for the sub-operator.","type":"object","properties":{"accountId":{"type":"string","readOnly":true,"description":"Stripe Connect account ID"},"onboardingCompleted":{"type":"boolean","readOnly":true,"description":"Whether the Stripe onboarding process has been completed"},"chargesEnabled":{"type":"boolean","readOnly":true,"description":"Whether the account can accept charges"},"directPaymentEnabled":{"type":"boolean","readOnly":true,"description":"Whether direct payment to this account is enabled"},"applicationFeeFixed":{"type":"number","format":"float","readOnly":true,"description":"Fixed application fee amount"},"applicationFeePercentage":{"type":"number","format":"float","readOnly":true,"description":"Application fee percentage"}},"required":["accountId","onboardingCompleted","chargesEnabled","directPaymentEnabled"]}}}],"required":["id","name","businessName","capabilities","partnerIds","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"subOperatorCreate","summary":"Sub-operators / Create","tags":["resource / sub operators"],"description":"Create a new sub-operator","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name","businessName"],"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator"},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"description":"External system identifier for integration purposes"},"regNo":{"type":"string","maxLength":255,"description":"Company registration number"},"taxNo":{"type":"string","maxLength":255,"description":"Tax identification number"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","maxLength":255,"description":"City name"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"description":"Postal/ZIP code"},"address":{"type":"string","maxLength":255,"description":"Street address"},"contactPerson":{"type":"string","maxLength":255,"description":"Primary contact person name"},"phone":{"type":"string","maxLength":255,"description":"Contact phone number"},"email":{"type":"string","maxLength":255,"description":"Contact email address"},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"description":"Email address for receiving fault notifications"},"businessOperationalContext":{"type":"string","description":"Long-form business context and operational notes"},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of associated partner IDs"}}}}}},"responses":{"201":{"description":"Sub-operator created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator"},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"description":"External system identifier for integration purposes"},"regNo":{"type":"string","maxLength":255,"description":"Company registration number"},"taxNo":{"type":"string","maxLength":255,"description":"Tax identification number"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","maxLength":255,"description":"City name"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"description":"Postal/ZIP code"},"address":{"type":"string","maxLength":255,"description":"Street address"},"contactPerson":{"type":"string","maxLength":255,"description":"Primary contact person name"},"phone":{"type":"string","maxLength":255,"description":"Contact phone number"},"email":{"type":"string","maxLength":255,"description":"Contact email address"},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"description":"Email address for receiving fault notifications"},"businessOperationalContext":{"type":"string","description":"Long-form business context and operational notes"},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of associated partner IDs"}}},{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier for the sub-operator"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"stripeConnect":{"readOnly":true,"description":"If `include[]=stripeConnect` is provided with the request, the Stripe Connect information will be included here. Only present when a Stripe account exists for the sub-operator.","type":"object","properties":{"accountId":{"type":"string","readOnly":true,"description":"Stripe Connect account ID"},"onboardingCompleted":{"type":"boolean","readOnly":true,"description":"Whether the Stripe onboarding process has been completed"},"chargesEnabled":{"type":"boolean","readOnly":true,"description":"Whether the account can accept charges"},"directPaymentEnabled":{"type":"boolean","readOnly":true,"description":"Whether direct payment to this account is enabled"},"applicationFeeFixed":{"type":"number","format":"float","readOnly":true,"description":"Fixed application fee amount"},"applicationFeePercentage":{"type":"number","format":"float","readOnly":true,"description":"Application fee percentage"}},"required":["accountId","onboardingCompleted","chargesEnabled","directPaymentEnabled"]}}}],"required":["id","name","businessName","capabilities","partnerIds","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v2.0/{subOperator}":{"parameters":[{"in":"path","name":"subOperator","schema":{"type":"integer"},"required":true}],"get":{"operationId":"subOperatorRead","summary":"Sub-operators / Read","tags":["resource / sub operators"],"description":"Get a single sub-operator","parameters":[{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["stripeConnect"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator"},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"description":"External system identifier for integration purposes"},"regNo":{"type":"string","maxLength":255,"description":"Company registration number"},"taxNo":{"type":"string","maxLength":255,"description":"Tax identification number"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","maxLength":255,"description":"City name"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"description":"Postal/ZIP code"},"address":{"type":"string","maxLength":255,"description":"Street address"},"contactPerson":{"type":"string","maxLength":255,"description":"Primary contact person name"},"phone":{"type":"string","maxLength":255,"description":"Contact phone number"},"email":{"type":"string","maxLength":255,"description":"Contact email address"},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"description":"Email address for receiving fault notifications"},"businessOperationalContext":{"type":"string","description":"Long-form business context and operational notes"},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of associated partner IDs"}}},{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier for the sub-operator"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"stripeConnect":{"readOnly":true,"description":"If `include[]=stripeConnect` is provided with the request, the Stripe Connect information will be included here. Only present when a Stripe account exists for the sub-operator.","type":"object","properties":{"accountId":{"type":"string","readOnly":true,"description":"Stripe Connect account ID"},"onboardingCompleted":{"type":"boolean","readOnly":true,"description":"Whether the Stripe onboarding process has been completed"},"chargesEnabled":{"type":"boolean","readOnly":true,"description":"Whether the account can accept charges"},"directPaymentEnabled":{"type":"boolean","readOnly":true,"description":"Whether direct payment to this account is enabled"},"applicationFeeFixed":{"type":"number","format":"float","readOnly":true,"description":"Fixed application fee amount"},"applicationFeePercentage":{"type":"number","format":"float","readOnly":true,"description":"Application fee percentage"}},"required":["accountId","onboardingCompleted","chargesEnabled","directPaymentEnabled"]}}}],"required":["id","name","businessName","capabilities","partnerIds","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"subOperatorUpdate","summary":"Sub-operators / Update","tags":["resource / sub operators"],"description":"Update an existing sub-operator. Only provided fields are updated - omitted fields retain their current values.\nSend null for nullable fields to explicitly clear their values.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator. Must be unique within the operator scope."},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"nullable":true,"description":"External system identifier. Send null to clear."},"regNo":{"type":"string","maxLength":255,"nullable":true,"description":"Company registration number. Send null to clear."},"taxNo":{"type":"string","maxLength":255,"nullable":true,"description":"Tax identification number. Send null to clear."},"country":{"description":"ISO 3166-1 alpha-2 country code. Send null to clear.","type":"string","nullable":true,"enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW",null]},"city":{"type":"string","maxLength":255,"nullable":true,"description":"City name. Send null to clear."},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"nullable":true,"description":"Postal/ZIP code. Send null to clear."},"address":{"type":"string","maxLength":255,"nullable":true,"description":"Street address. Send null to clear."},"contactPerson":{"type":"string","maxLength":255,"nullable":true,"description":"Primary contact person name. Send null to clear."},"phone":{"type":"string","maxLength":255,"nullable":true,"description":"Contact phone number. Send null to clear."},"email":{"type":"string","maxLength":255,"nullable":true,"description":"Contact email address. Send null to clear."},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"nullable":true,"description":"Email address for receiving fault notifications. Must be a valid email format. Send null to clear."},"businessOperationalContext":{"type":"string","nullable":true,"description":"Long-form business context and operational notes. Send null to clear."},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of partner IDs to associate. Replaces existing associations."}}}}}},"responses":{"200":{"description":"Sub-operator updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Display name of the sub-operator"},"businessName":{"type":"string","maxLength":255,"description":"Official business name for legal/financial purposes"},"externalId":{"type":"string","maxLength":255,"description":"External system identifier for integration purposes"},"regNo":{"type":"string","maxLength":255,"description":"Company registration number"},"taxNo":{"type":"string","maxLength":255,"description":"Tax identification number"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"description":"ISO 3166-1 alpha-2 country code"},"city":{"type":"string","maxLength":255,"description":"City name"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"postcode":{"type":"string","maxLength":255,"description":"Postal/ZIP code"},"address":{"type":"string","maxLength":255,"description":"Street address"},"contactPerson":{"type":"string","maxLength":255,"description":"Primary contact person name"},"phone":{"type":"string","maxLength":255,"description":"Contact phone number"},"email":{"type":"string","maxLength":255,"description":"Contact email address"},"faultNotificationsEmail":{"type":"string","format":"email","maxLength":255,"description":"Email address for receiving fault notifications"},"businessOperationalContext":{"type":"string","description":"Long-form business context and operational notes"},"capabilities":{"type":"object","properties":{"canControlChargePoints":{"type":"boolean","default":false,"description":"Whether the sub-operator can control charge points"},"canControlTariff":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariffs"},"canControlTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control tariff groups"},"canControlPartnersTariffsAndTariffGroups":{"type":"boolean","default":false,"description":"Whether the sub-operator can control partners' tariffs and tariff groups"}}},"partnerIds":{"type":"array","items":{"type":"integer"},"description":"List of associated partner IDs"}}},{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier for the sub-operator"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"stripeConnect":{"readOnly":true,"description":"If `include[]=stripeConnect` is provided with the request, the Stripe Connect information will be included here. Only present when a Stripe account exists for the sub-operator.","type":"object","properties":{"accountId":{"type":"string","readOnly":true,"description":"Stripe Connect account ID"},"onboardingCompleted":{"type":"boolean","readOnly":true,"description":"Whether the Stripe onboarding process has been completed"},"chargesEnabled":{"type":"boolean","readOnly":true,"description":"Whether the account can accept charges"},"directPaymentEnabled":{"type":"boolean","readOnly":true,"description":"Whether direct payment to this account is enabled"},"applicationFeeFixed":{"type":"number","format":"float","readOnly":true,"description":"Fixed application fee amount"},"applicationFeePercentage":{"type":"number","format":"float","readOnly":true,"description":"Application fee percentage"}},"required":["accountId","onboardingCompleted","chargesEnabled","directPaymentEnabled"]}}}],"required":["id","name","businessName","capabilities","partnerIds","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"subOperatorDelete","summary":"Sub-operators / Delete","tags":["resource / sub operators"],"description":"Permanently delete a sub-operator.\nWhen deleted, associated partners are unassociated but remain intact.\nAll admin accounts belonging to this sub-operator are also deleted.\n","responses":{"204":{"description":"Sub-operator deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v2.0/{subOperator}/notes":{"parameters":[{"name":"subOperator","in":"path","schema":{"type":"integer"},"required":true,"description":"Sub-Operator ID"}],"get":{"operationId":"subOperatorNotesListing","tags":["resource / sub operators"],"summary":"Sub Operator / Notes / Listing","description":"List all notes for a specific sub-operator.\n\nNotes are returned with pinned notes first, then ordered by creation date descending.\n\n**Required permission:** `Notes.view`\n","parameters":[{"name":"filter","in":"query","style":"deepObject","schema":{"type":"object","properties":{"pinned":{"type":"boolean","description":"Filter by pinned status","example":true},"createdAfter":{"type":"string","format":"date-time","description":"Filter notes created on or after this ISO-8601 datetime","example":"2025-01-01T00:00:00Z"},"createdBefore":{"type":"string","format":"date-time","description":"Filter notes created on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"},"updatedAfter":{"type":"string","format":"date-time","description":"Filter notes updated on or after this ISO-8601 datetime (useful for delta sync)","example":"2025-12-01T00:00:00Z"},"updatedBefore":{"type":"string","format":"date-time","description":"Filter notes updated on or before this ISO-8601 datetime","example":"2025-12-31T23:59:59Z"}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"subOperatorNoteCreate","tags":["resource / sub operators"],"summary":"Sub Operator / Note / Create","description":"Create a new note for a specific sub-operator.\n\n**Required permission:** `Notes.create`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["summary"],"properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note (required)","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note (optional)","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","default":false,"description":"Whether the note should be pinned (optional, defaults to false)","example":false}}}}}},"responses":{"201":{"description":"Note created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/sub-operators/v2.0/{subOperator}/notes/{note}":{"parameters":[{"name":"subOperator","in":"path","schema":{"type":"integer"},"required":true,"description":"Sub-Operator ID"},{"name":"note","in":"path","schema":{"type":"integer"},"required":true,"description":"Note ID"}],"get":{"operationId":"subOperatorNoteShow","tags":["resource / sub operators"],"summary":"Sub Operator / Note / Read","description":"Get a specific note for a sub-operator.\n\n**Required permission:** `Notes.view`\n","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"subOperatorNoteUpdate","tags":["resource / sub operators"],"summary":"Sub Operator / Note / Update","description":"Update a specific note for a sub-operator.\n\n**Required permissions:**\n- `Notes.update` for updating summary and details\n- `Notes.pin` for updating the pinned field (in addition to Notes.update if other fields are included)\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Updated maintenance note"},"details":{"type":"string","maxLength":2000,"nullable":true,"description":"Detailed content of the note. Send null to clear.","example":"Updated inspection schedule."},"pinned":{"type":"boolean","description":"Whether the note should be pinned. Requires Notes.pin permission.","example":true}}}}}},"responses":{"200":{"description":"Note updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","summary","pinned","createdAt","updatedAt"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note","example":123},"summary":{"type":"string","maxLength":255,"description":"Short summary or title of the note","example":"Important maintenance note"},"details":{"type":"string","maxLength":2000,"description":"Detailed content of the note. Omitted when empty.","example":"This charge point requires monthly inspection due to high usage."},"pinned":{"type":"boolean","description":"Whether the note is pinned (appears first in listings)","example":true},"createdByAdminId":{"type":"integer","description":"ID of the admin who created the note. Omitted when unavailable.","example":1},"updatedByAdminId":{"type":"integer","description":"ID of the admin who last updated the note. Omitted when unavailable.","example":2},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was created","example":"2025-12-16T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 timestamp when the note was last updated","example":"2025-12-16T12:00:00Z"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"subOperatorNoteDelete","tags":["resource / sub operators"],"summary":"Sub Operator / Note / Delete","description":"Delete a specific note from a sub-operator.\n\nNotes are permanently deleted (hard delete).\n\n**Required permission:** `Notes.delete`\n","responses":{"204":{"description":"Note deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/subscription-plans/v1.0":{"get":{"operationId":"subscriptionPlansListingDeprecated","tags":["resource / subscription-plans"],"deprecated":true,"summary":"Subscription Plans / Listing","description":"Get all Subscription Plans","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/subscription-plans/v2.0":{"get":{"operationId":"subscriptionPlansListing","tags":["resource / subscription-plans"],"summary":"Subscription plans / Listing","description":"Get all Subscription plans","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were created on and before this datetime","type":"string","format":"date-time"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were last updated on and before this datetime","type":"string","format":"date-time"}}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"]},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"baseFeeAppliesPerEachHomeCharger":{"type":"boolean","nullable":true,"default":false,"description":"Makes the base fee apply per each home charger owned by the subscriber."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"replacementPlanId":{"type":"integer","description":"The ID of the subscription plan that was used to replace the current one."},"replacedAt":{"type":"string","format":"date-time","description":"The date from which the new subscription plan actively replaces the current one."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","description","renewalCycle","type","status"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"subscriptionPlanCreate","tags":["resource / subscription-plans"],"summary":"Subscription plan / Create","description":"Create a new Subscription plans","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"]},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"baseFeeAppliesPerEachHomeCharger":{"type":"boolean","nullable":true,"default":false,"description":"Makes the base fee apply per each home charger owned by the subscriber."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name","description","renewalCycle","type","status"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"]},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"baseFeeAppliesPerEachHomeCharger":{"type":"boolean","nullable":true,"default":false,"description":"Makes the base fee apply per each home charger owned by the subscriber."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"replacementPlanId":{"type":"integer","description":"The ID of the subscription plan that was used to replace the current one."},"replacedAt":{"type":"string","format":"date-time","description":"The date from which the new subscription plan actively replaces the current one."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","description","renewalCycle","type","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/subscription-plans/v2.0/{subscriptionPlan}":{"get":{"operationId":"subscriptionPlanRead","tags":["resource / subscription-plans"],"summary":"Subscription plan / Read","description":"Get a single subscription plan","parameters":[{"in":"path","name":"subscriptionPlan","description":"The ID of the subscription plan","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"]},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"baseFeeAppliesPerEachHomeCharger":{"type":"boolean","nullable":true,"default":false,"description":"Makes the base fee apply per each home charger owned by the subscriber."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"replacementPlanId":{"type":"integer","description":"The ID of the subscription plan that was used to replace the current one."},"replacedAt":{"type":"string","format":"date-time","description":"The date from which the new subscription plan actively replaces the current one."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","description","renewalCycle","type","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"subscriptionPlanUpdate","tags":["resource / subscription-plans"],"summary":"Subscription plan / Update","description":"Update a Subscription plan","parameters":[{"in":"path","name":"subscriptionPlan","description":"The ID of the subscription plan","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"],"description":"Required when Post-paid Subscription plans has been enabled for the system."},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"feePerEachPersonalChargePoint":{"type":"number","format":"float","nullable":true,"description":"Applies separately per each personal charge point owned by the subscriber that requires this Subscription plan. These fees are added to the Base fee of the Subscription plan, if any."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","description":"A change from disabled to enabled is only possible for Subscription plans that are not replaced with another plan.","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"description":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"renewalCycle":{"type":"string","enum":["monthly","annually"]},"freeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of renewal periods that are free of charge. This is only applicable for pre-paid plans."},"type":{"type":"string","enum":["pre-paid","post-paid"]},"baseFee":{"type":"number","format":"float","nullable":true,"description":"For pre-paid plans this is the price, for post-paid plans this is the base fee."},"baseFeeAppliesPerEachHomeCharger":{"type":"boolean","nullable":true,"default":false,"description":"Makes the base fee apply per each home charger owned by the subscriber."},"postPaidChargingSessionsAccumulation":{"type":"string","enum":["none","personal","personal_commercial"],"default":"none","description":"Indicates if charging sessions at personal, commercial+personal charge points are included in the post-paid subscription and would be billed at the end of the billing cycle or when a threshold is met, if there is such."},"billingUsageThreshold":{"type":"integer","format":"decimal","nullable":true,"description":"If this threshold is reached, the amount due for the subscription would be billed immediately instead of waiting for the end of the billing period."},"billingType":{"type":"string","enum":["default","internal","external"],"description":"Applicable only for post-paid subscription plans when external billing is enabled. Controls the billing method used for this subscription plan."},"status":{"type":"string","enum":["enabled","disabled"]},"allowance":{"type":"object","properties":{"resetCycle":{"type":"string","enum":["as_renewal_cycle","after_each_session","after_24_hours","after_each_week","after_each_month","after_each_year"]},"type":{"type":"string","enum":["none","combined","separate"]},"homeChargersOnly":{"type":"boolean","default":false,"description":"When true the allowance can only be used on the home charge points owned by the user. In that case all other allowance restrictions have no effect ."},"includedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance can only be used on charge points in countries in this list. When empty the allowance is valid for charge points in all countries, except the ones explicitly listed in the excludedCountries."},"excludedCountries":{"type":"array","items":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"description":"The allowance cannot be used on charge points in the countries in this list."},"excludeRoaming":{"type":"boolean","default":false,"description":"When true the allowance cannot be used on roaming charge points."},"includedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance can only be used on charge points of Partners in this list. When empty the allowance is valid for charge points of any Partner, except the ones explicitly listed in the excludedPartnerChargePoints."},"excludedPartnerChargePoints":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The allowance cannot be used on charge points of Partners in this list."},"combined":{"description":"The amount of kWh included - combined for AC and DC, should be provided if the type is combined.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"ac":{"description":"The amount of kWh included for AC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000},"dc":{"description":"The amount of kWh included for DC, should be provided if the type is separate.","type":"integer","nullable":true,"minimum":0,"maximum":4000000}}},"visibilityRestrictions":{"type":"object","description":"Defines which users can view and subscribe to the plan via the app","properties":{"includedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is available only to users invited (and accepted) or created by one of the Partners in this list. When empty the plan is available to all users, except the ones of Partners listed in excludedPartnerUsers."},"excludedPartnerUsers":{"type":"array","items":{"type":"integer"},"description":"An array of Partner IDs. The Subscription plan is not available to users of the Partners in this list."},"includedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is available only to users with a User Group that is in this list. When empty the plan is available to all users, except the ones with a User Group listed in excludedUserGroups."},"excludedUserGroups":{"type":"array","items":{"type":"integer"},"description":"An array of User Group IDs. The Subscription plan is not available to users with a User Group that is in this list."}}},"replacementPlanId":{"type":"integer","description":"The ID of the subscription plan that was used to replace the current one."},"replacedAt":{"type":"string","format":"date-time","description":"The date from which the new subscription plan actively replaces the current one."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","description","renewalCycle","type","status"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}}},"delete":{"operationId":"subscriptionPlanDelete","tags":["resource / subscription-plans"],"summary":"Subscription plan / Delete","description":"Delete a Subscription plan","parameters":[{"in":"path","name":"subscriptionPlan","description":"The ID of the subscription plan","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/subscriptions/v1.0":{"get":{"operationId":"subscriptionsListing","tags":["resource / subscriptions"],"summary":"Subscriptions / Listing","description":"Get all subscriptions","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"planId":{"type":"string","format":"number"},"startedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions started on or after this ISO 8601 formatted datetime"},"startedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions started on or before this ISO 8601 formatted datetime"},"endedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or after this ISO 8601 formatted datetime"},"endedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or before this ISO 8601 formatted datetime"},"endDateFrom":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or after this ISO 8601 formatted datetime","deprecated":true},"endDateTo":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or before this ISO 8601 formatted datetime","deprecated":true},"status":{"type":"string","enum":["active","canceled","expired","suspended","pending"]},"statusChangedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions with status changed on or after this ISO 8601 formatted datetime. Requires the status filter to be provided."},"statusChangedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions with status changed on or before this ISO 8601 formatted datetime. Requires the status filter to be provided."},"billedExternally":{"type":"string","format":"boolean","description":"Applicable only when the system uses both payment processor and external billing mode simultaneously. Show or hide subscriptions where users have enabled \"External billing\" (if allowed by the Billing settings)."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"planId":{"type":"integer"},"userId":{"type":"integer"},"startDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"endDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"status":{"type":"string","enum":["active","canceled","expired","suspended","pending"]},"statusDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date when the current status was set."},"remainingAllowance":{"type":"object","nullable":true,"properties":{"combined":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the combined charging allowance (if any)."},"ac":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the AC charging allowance (if any)."},"dc":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the DC charging allowance (if any)."}}},"remainingFreeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of remaining renewal periods that are free of charge. This is only applicable for pre-paid plans."},"shouldUseExternalBilling":{"type":"boolean","default":false,"description":"Applicable only when the system uses both payment processor and external billing mode simultaneously. Indicates if the user has chosen \"External billing\" for his post-paid subscription (if allowed by the Billing settings)."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","planId","userId","startDate","endDate","status","statusDate"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/subscriptions/v1.0/{subscription}":{"get":{"operationId":"subscriptionRead","tags":["resource / subscriptions"],"summary":"Subscription / Read","description":"Get a single subscription","parameters":[{"in":"path","name":"subscription","description":"The subscription ID","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"planId":{"type":"integer"},"userId":{"type":"integer"},"startDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"endDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"status":{"type":"string","enum":["active","canceled","expired","suspended","pending"]},"statusDate":{"type":"string","format":"date-time","description":"ISO 8601 formatted date when the current status was set."},"remainingAllowance":{"type":"object","nullable":true,"properties":{"combined":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the combined charging allowance (if any)."},"ac":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the AC charging allowance (if any)."},"dc":{"type":"integer","format":"decimal","nullable":true,"description":"Remaining kWh of the DC charging allowance (if any)."}}},"remainingFreeRenewalPeriods":{"type":"integer","nullable":true,"description":"The number of remaining renewal periods that are free of charge. This is only applicable for pre-paid plans."},"shouldUseExternalBilling":{"type":"boolean","default":false,"description":"Applicable only when the system uses both payment processor and external billing mode simultaneously. Indicates if the user has chosen \"External billing\" for his post-paid subscription (if allowed by the Billing settings)."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","planId","userId","startDate","endDate","status","statusDate"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tariff-groups/v1.0":{"get":{"operationId":"tariffGroupsListing","tags":["resource / tariffs"],"summary":"Tariff Groups / Listing","description":"Get all tariff groups","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"partnerId":{"type":"number","description":"Only list tariff groups managed by certain partner."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"default":null,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"tariffGroupCreate","summary":"Tariff Group / Create","tags":["resource / tariffs"],"description":"Create new tariff group. When the tariff group is created a base tariff is also created. The type of the base tariff (free or charging not allowed) is determined by the respective setting of the operator.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name"]}]}}}},"responses":{"201":{"description":"Tariff group created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"default":null,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tariff-groups/v1.0/{tariffGroup}":{"parameters":[{"name":"tariffGroup","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"tariffGroupRead","summary":"Tariff Group / Read","description":"Get a tariff group","tags":["resource / tariffs"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"default":null,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"tariffGroupUpdate","summary":"Tariff Group / Update","description":"Update a tariff group","tags":["resource / tariffs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name"]}}}},"responses":{"200":{"description":"Updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"default":null,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"tariffGroupDelete","summary":"Tariff Group / Delete","description":"Delete a tariff group","tags":["resource / tariffs"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tariff-snapshots/v1.0/{tariffSnapshot}":{"parameters":[{"name":"tariffSnapshot","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"tariffSnapshotRead","summary":"Tariff Snapshot / Read","description":"Get a tariff snapshot by id","tags":["resource / tariffs"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]},{"type":"object","properties":{"tariffId":{"type":"integer"}},"required":["tariffId"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tariffs/v1.0":{"get":{"operationId":"tariffsListing","tags":["resource / tariffs"],"summary":"Tariffs / Listing","description":"Get all tariff. Also you could use the `tariffGroupId` and the `userId` to \"resolve\" the concrete tariff within a group that would be applied to the specified user.","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"tariffGroupId":{"type":"string","format":"integer","description":"Only list tariffs in a certain group"},"userId":{"type":"string","format":"integer","description":"Can only be used with `tariffGroupId`. When set, a single tariff of the group will be returned (no meta or link props will be included), that will be applied to the when the given user is charging. Note that when you set it to empty (null) then the tariff for anonymous charging will be returned"},"type":{"type":"string","description":"Only list tariff of this specific type"},"partnerId":{"type":"string","format":"integer","description":"Only list tariffs managed by certain partner."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]}]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"tariffCreate","summary":"Tariff / Create","tags":["resource / tariffs"],"description":"Create new tariff","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["name","type"]}]}}}},"responses":{"201":{"description":"Tariff created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tariffs/v1.0/{tariff}":{"parameters":[{"name":"tariff","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"tariffRead","summary":"Tariff / Read","description":"Get a tariff","tags":["resource / tariffs"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"tariffUpdate","summary":"Tariff / Update","description":"Update a tariff","tags":["resource / tariffs"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["name","type"]}}}},"responses":{"200":{"description":"Updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"type":{"type":"string","enum":["free","flat rate","duration+energy","duration+energy time of day","energy tou","standard","charging not allowed","average power levels","peak power levels","standard_tod","optimised dynamic pricing"],"description":"Setting the type to `charging not allowed` or `free` is enough for creating the particular type of tariff"},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"additionalInformation":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"learnMoreUrl":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep.","nullable":true},"dayTariffStart":{"type":"string","format":"time","description":"A time when the day begins"},"nightTariffStart":{"type":"string","format":"time","description":"A time when the night begins"},"pricing":{"type":"object","properties":{"pricePerSession":{"type":"number","format":"decimal","description":"Price per session. Only applicable with flat rate tariffs. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"connectionFee":{"type":"number","format":"decimal","description":"Connection fee. A fixed fee that is applied at the start of the charging session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"dayPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"nightPricePerKwh":{"type":"number","format":"decimal","description":"Price per kWh during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period. Applicable for duration+energy. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`idleFeePerMinute`), the regular duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"durationFeeLimit":{"type":"number","format":"decimal","description":"Duration fee limit for the whole session if fee is applied.","nullable":true},"dayPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`dayIdleFeePerMinute`), the regular day duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"nightPricePerPeriod":{"type":"number","format":"decimal","description":"Charging fee per period during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\n**Idle period behavior:** If no idle fee is configured (`nightIdleFeePerMinute`), the regular night duration fee continues to apply during idle periods. When an idle fee is configured, it replaces the duration fee during idle periods.\n","nullable":true},"dayIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the day. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular day duration fee (`dayPricePerPeriod`). If not configured, the regular day duration fee continues to apply during idle periods.\n","nullable":true},"nightIdleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute during the night. Applicable for duration+energy time of day. Up to 5 digits after the decimal point depending on the currency precision.\n\nWhen configured, this fee applies during idle periods (when no charging is occurring) and replaces the regular night duration fee (`nightPricePerPeriod`). If not configured, the regular night duration fee continues to apply during idle periods.\n","nullable":true},"idleFeePerMinute":{"type":"number","format":"decimal","description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging). Up to 5 digits after the decimal point depending on the currency precision.\n\n**For duration+energy tariffs:** When configured, this fee applies during idle periods and replaces the regular duration fee (`pricePerPeriod`). If not configured, the regular duration fee continues to apply during idle periods.\n","nullable":true},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idleFeeGracePeriodMode":{"type":"string","enum":["idle_detection","session_start"],"description":"Determines when the idle fee grace period timer starts counting.\n\n- `idle_detection` (default): Grace period begins when idle state is detected (vehicle stops charging but remains connected).\n- `session_start`: Grace period begins from session start time. Idle fee will not apply until the session has been active for at least the grace period duration.\n\nApplicable tariff types: `duration+energy`, `duration+energy time of day`, `energy tou`, `standard_tod`.\n"},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"idleFeePeriodStart":{"type":"string","format":"time","description":"Defined start time for the application of idle fee.","nullable":true},"idleFeePeriodEnd":{"type":"string","format":"time","description":"Defined end time for the application of idle fee.","nullable":true},"idleFeeLimit":{"type":"number","format":"decimal","description":"Idle fee limit for the whole session if fee is applied.","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"minPrice":{"type":"number","format":"decimal","description":"Min. price. Sets a minimum total amount per session. This is helpful in the case your payment service provider has a minimum transaction size or high transaction fees and you want to make sure to have a positive ROI per transaction. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"preAuthorizeAmount":{"type":"number","format":"decimal","description":"Pre-authorize amount. The amount to pre-authorize before starting a session. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"taxID":{"type":"integer","deprecated":true,"description":"If Multi-tax Support has been enabled in the platform settings, you can provide the taxId for the tariff here. If you do not provide a value or provide `null`, the Default tax will be used.\n\nIf Multi-tax Support has not been enabled, any provided value will be ignored.\n","nullable":true},"chargePointElectricityRate":{"type":"boolean","description":"Use the Electricity Rate of the Charge Point that is already attached and aims to track the electricity costs."},"fallbackElectricityRateId":{"type":"integer","description":"When ChargePointElectricityRate is set to *false*, the Electricity Rate ID MUST be supplied in order the electricity rates for the tariff to be known.","nullable":true},"markupPercentagePerKwh":{"type":"number","nullable":true},"markupFixedFeePerKwh":{"type":"number","nullable":true},"flexibleMarkUpAsFixedPerKwh":{"nullable":true,"description":"Set a different fixed markup for different time slots along the day. Applicable for `energy tou` only.","type":"object","properties":{"defaultPrice":{"type":"number","default":0,"writeOnly":true,"description":"Set price for the intervals not specified in `intervalPricing` field."},"intervalPricing":{"type":"array","description":"Variable-length time periods for markup pricing. Periods can have any duration and do not need to be uniform. Only explicitly configured periods are returned. Time slots not covered by any interval use the `markupFixedFeePerKwh` value. Overlapping intervals are not allowed.","items":{"type":"object","description":"A specific price period. The `startsAt` and `endsAt` times should be provided in the local time zone and not in UTC.\nDepending on the tenant multi timezone configuration either the tenant timezone will be used, or the timezone specific to the corresponding resource.\n","properties":{"startsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The start time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"endsAt":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"The end time of the period. Formatted as hours:minutes. Should be provided in the local time zone and not in UTC. Uses 24-hour notation.","example":"23:45"},"price":{"type":"number","format":"decimal","example":1.23,"description":"The price that will apply for the given price period. Must include tax."}},"required":["startsAt","endsAt","price"]}}}},"multiPricePerKwh":{"description":"\nCreate the price levels according to the kWh. <br />\nThe first level must have zero value for **firstKwh**. <br />\nThe last level must have an infinity value for **lastKwh**. <br />\nThe **fisrtKwh** value on the current level must be equal to the **lastKwh** value on the previous one. <br />\nInstead of using a price per kWh there is the option for a flat fee per level.\n\nAn example of price levels for kWh is given in the table below.\n\n| First kWh  | Last kWh   | Fee per kWh | Flat Fee    |\n| --------- | ------------| ------------|------------ |\n| 0         | 5.00        | 0.00        | 2.00        |\n| 5.00      | 10.00       | 0.35        | 0.00        |\n| 10.00     | null        | 0.40        | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstKwh":{"type":"number","multipleOf":0.01,"example":0.05},"lastKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06},"feePerKwh":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.07},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.08}},"required":["firstKwh"]}},"multiPricePerDuration":{"description":"\nCreate the price levels according to the duration of the session from the time the charging started.  <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min.  <br />\nThere is the option of applying a flat fee per each level separately.  <br />\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `multiIdleFee`) will apply during idle periods.\n\nAn example of price levels for duration is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 8           | 0.50         | 0.00        |\n| 9           | 24          | 0.55         | 0.00        |\n| 25          | null        | 0.00         | 10.00       |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0}},"required":["firstUnit"]}},"multiIdleFee":{"description":"\nDifferent price levels could be created depending on the duration of the idle period. <br />\nThe first level must have zero value for **firstUnit**. <br />\nThe last level must have an infinity value for **lastUnit**.  <br />\nThe **firstUnit** value on the current level must be greater with one unit from the **lastUnit** value on the previous level. <br />\nThe Unit is created in the **pricePeriodInMinutes** property, the default one is 15 min. <br />\nThere is the option of applying a flat fee per each level separately. <br />\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `multiPricePerDuration`) will be paused.\n\nAn example of price levels for idle periods is given in the table below.\n\n| First Unit  | Last Unit   | Fee per Unit | Flat Fee    |\n| ----------- | ------------| -------------|------------ |\n| 0           | 2           | 0.30         | 0.00        |\n| 3           | 6           | 0.40         | 0.00        |\n| 7           | null        | 0.00         | 0.00        |\n\nApplicable for standard tariff.\n","type":"array","items":{"type":"object","properties":{"firstUnit":{"type":"integer"},"lastUnit":{"type":"integer","nullable":true,"example":1},"feePerUnit":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.05},"flatFee":{"type":"number","multipleOf":0.01,"nullable":true,"example":0.06}},"required":["firstUnit"]}},"regularUsePeriod":{"type":"number","description":"In minutes. Only for the Peak power level tariff.","nullable":true},"averagePowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"averagePowerUpToKw":{"type":"number"},"pricePerMinute":{"type":"number"}},"required":["averagePowerUpToKw","pricePerMinute"]}},"peakPowerLevels":{"type":"array","items":{"type":"object","minItems":2,"properties":{"peakPowerUpToKw":{"type":"number"},"regularPricePerMinute":{"type":"number"},"excessUsePricePerMin":{"type":"number"}},"required":["peakPowerUpToKw","regularPricePerMinute","excessUsePricePerMin"]}},"timePeriods":{"type":"array","items":{"type":"object","minItems":1,"properties":{"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"00:00","description":"The 24-hour format should be used."}},"required":["startTime","endTime"]}},"pricePeriods":{"type":"object","properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}},"daysWhenApplied":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"specialDates":{"type":"array","items":{"type":"string","format":"date"},"example":"2022-01-30"},"idleFeeGracePeriodMinutes":{"type":"number","format":"decimal","description":"Idle fee grace period (min). Optional. The interpretation of this field depends on `idleFeeGracePeriodMode`:\n\n- When mode is `idle_detection` (default): The user is given this grace period after idle state is detected (no charging) to remove the vehicle, before idle fee starts applying.\n- When mode is `session_start`: This represents the minimum session duration before idle fee applies. Idle fee will not be charged until the session has been active for at least this many minutes.\n","nullable":true},"idlePricingPeriodInMinutes":{"type":"number","enum":[1,15,30,60,240,360],"description":"Idle fee per minute. A fee per minute that is applied during idle period (no charging).","nullable":true},"connectionFeeMinimumSessionDuration":{"type":"integer","description":"Connection Fee Minimum Session Duration (min). Optional.","nullable":true},"connectionFeeMinimumSessionEnergy":{"type":"number","format":"decimal","description":"Connection Fee Minimum Session Energy (kWh). Optional. Up to 5 digits after the decimal point depending on the currency precision.","nullable":true},"durationFeeGracePeriod":{"type":"integer","description":"Duration Fee Grace Period (min). Optional.","nullable":true},"pricePeriodInMinutes":{"type":"integer","enum":[1,15,30,60,240,360],"description":"Charging period. In minutes. It defines the time-period for charging a fee. Example: If you select 15min then the EV-driver will be charged at the start of every 15min of EV-charging. Applicable for duration+energy and duration+energy time of day","nullable":true},"pricePeriods":{"type":"object","minItems":1,"properties":{"connectionFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"energyFeePeriods":{"type":"object","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"durationFeePeriods":{"type":"object","description":"Duration fees for each time period. Applicable for standard_tod tariff.\n\n**Idle period behavior:** Duration fees may be paused during idle periods depending on a system-wide setting (\"Do not apply regular duration fee during idle periods\"). When this setting is enabled (the default), only idle fees (if configured via `idleFeePeriods`) will apply during idle periods.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}},"idleFeePeriods":{"type":"object","description":"Idle fees for each time period. Applicable for standard_tod tariff.\n\nIdle fees apply when the system detects that a vehicle is no longer actively charging. When the system-wide \"Do not apply regular duration fee during idle periods\" setting is enabled (the default), only this idle fee will accumulate during idle periods -- the regular duration fee (from `durationFeePeriods`) will be paused.\n","properties":{"fee":{"type":"array","items":{"type":"number"}}}}}}}},"description":"When left empty, this means that this is the standard pricing that would be applied in general without taking into consideration the day."},"thresholdPriceForEnergy":{"type":"number","format":"decimal","description":"Price for kWh to be considered by Optimised charging for setting the charging periods.","nullable":true},"priceForEnergyWhenOptimized":{"type":"number","format":"decimal","nullable":true},"optimisedLabel":{"type":"string","nullable":true},"durationFeeFrom":{"type":"string","format":"time","nullable":true,"description":"Defined start time for the application of duration fees."},"durationFeeTo":{"type":"string","format":"time","nullable":true,"description":"Defined end time for the application of duration fees."},"subsidyIntegrationId":{"type":"integer","description":"The subsidy integration id that should be applied for this tariff. Only valid for Energy ToU tariffs. Please use the admin panel for the specific integration id. Optional.","nullable":true},"lockPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for:\n  - `duration+energy time of day` - it locks duration and energy price components\n  - `energy tou` - it locks energy component only\n"},"lockEnergyPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled the tariff of the charger will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockDurationPriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the energy fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the duration of their session.\nApplicable only for `standard_tod tariff`.\n"},"lockIdlePriceOnSessionStart":{"type":"boolean","default":false,"description":"When enabled, the duration fee component of the tariff will be saved using the pricing interval when the user starts the charging session. This ensures that the price for the user will remain constant for the whole duration of their session.\nApplicable only for `standard_tod tariff`\n"},"stateOfChargeIdleThreshold":{"nullable":true,"type":"integer","enum":[75,80,85,90,95,100],"description":"Switches the session to idle when the SoC (%) exceeds the selected value. Leave empty to use the system wide setting.\nThis option will take effect only if `Allow custom SoC (%) threshold per Tariff` is set in `Idle period detection` setting.\nThis only applies to local charge points, it does not affect sessions on roaming charge points. Leave empty to use the system wide setting.\n"},"averagePowerIdleThreshold":{"nullable":true,"type":"number","format":"decimal","minimum":0,"maximum":999999.99,"description":"Sets the session to idle state when the average kW for the past 5 minutes is below the set threshold.\nThis option will take effect only if `Allow custom power threshold per Tariff` is set in `Idle period detection` setting.\n"}}},"currency":{"type":"string","description":"ISO 4217 currency code","readOnly":true},"stopSession":{"type":"object","properties":{"timeLimitMinutes":{"type":"number","description":"Session max time. The maximum minutes a session is allowed to run. Skip for no time limit.","nullable":true},"stopWhenEnergyExceedsKwh":{"type":"number","description":"The maximum energy (kWh) allowed per session. Skip for no limit.","nullable":true},"stopWhenSocExceedsPercent":{"type":"integer","minimum":70,"maximum":99,"description":"Stop the session when the vehicle's reported State of Charge reaches or exceeds this value. If the charge point does not report SoC, this criterion is ignored. Accepts values between 70 and 99.","nullable":true}}},"restrictions":{"type":"object","properties":{"applyToUsersOfChargePointOwner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point","deprecated":true},"applyToUsersOfChargePointPartner":{"type":"boolean","description":"Makes the tariff apply to users of the partner, who is set as owner of the charge point"},"applyToUsersOfAllRoamingEmsps":{"type":"boolean","description":"Makes the tariff apply to users of all eMSPs, which are roaming partners"},"applyToAdHocUsers":{"type":"boolean","description":"Makes the tariff valid for non-registered users(ad-hoc charging)"},"adHocPreAuthorizeAmount":{"type":"number","description":"Sets the amount that would be blocked on the user's card at the start of the session. Required if applyToAdHocUsers is true and one of the following billing strategies is chosen: `Require payment method and authorize certain amount before starting session` or `Require payment method OR minimum amount in balance`.","multipleOf":0.01,"nullable":true,"minimum":0},"adHocStopWhenPreAuthorizedAmountFallsBelow":{"type":"number","description":"Set the minimum pre-authorized amount threshold. When the remaining ad hoc pre-authorized amount falls below this value, the charging session will automatically stop to prevent revenue loss.\n","multipleOf":0.01},"applyToUsersOfPartners":{"type":"array","description":"Users of specific Partners. Provide a list of partner IDs. Matches if the user is a invited to at least one of the partners.","items":{"type":"number"}},"applyToUsersWithGroups":{"deprecated":true,"type":"array","description":"Users with a specific group. Provide a list of user groups. Matches if the user is a member of at least one of the groups. Note: Due to improvements in the user groups, this property could be used with some limitations: \n 1) The value(s) should exactly match the name(s) of the user groups. \n 2) It would not be possible to create a user group from here anymore. \n 3) If there are duplicates, the value would not be accepted.","items":{"type":"string"}},"applyToUserGroupIds":{"type":"array","description":"An array of user group IDs. Users with a specific group. Provide a list of user group IDs. This restriction applies if the user is a member of at least one of the groups.","items":{"type":"number"}},"applyToUsersWithSubscriptions":{"type":"array","description":"Users with a specific subscription plan. Provide a list of subscription plan IDs. Matches if the user has active one of the subscription plans.","items":{"type":"number"}},"applyToAuthorizationMethods":{"type":"array","description":"The tariff applies to local users (non-roaming) who authorize using any of the selected methods. When omitted or empty, the tariff applies regardless of authorization method.\nValues align with the `Authorization.method` property:\n- `id_tag` - Authorization via physical RFID card\n- `mac_address` - Authorization via vehicle MAC address (AutoCharge)\n- `user_device` - Authorization via mobile app or web portal\n- `plug_and_charge` - Authorization via Plug & Charge protocol\n- `plug_and_charge_iso15118` - Authorization via ISO15118 Plug & Charge protocol\n","items":{"type":"string","enum":["id_tag","mac_address","user_device","plug_and_charge","plug_and_charge_iso15118"]}},"startDate":{"type":"string","format":"date","description":"The date from which the tariff becomes valid.","nullable":true},"endDate":{"type":"string","format":"date","description":"The expiry date of the tariff. The tariff is valid until this date inclusive.","nullable":true}}},"partner":{"type":"object","properties":{"id":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves. The default price information from the base tariff of the first EVSE would be used for the display, when the charge point has more than one EVSE."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."},"priceInformation":{"type":"string","nullable":true,"description":"The information that would be shown on the display of the charge point for users that are eligible for this tariff."},"totalCostInformation":{"type":"string","nullable":true,"description":"Additional information that would be displayed on the charge point when the session ends, along with the total fees for energy, duration and idle."}}},"integrationId":{"type":"integer","nullable":true,"description":"References the internal integration configuration that enables this tariff type"},"externalId":{"type":"string","nullable":true,"description":"Used to store custom information, usually used for external references or metadata to the resource."}},"required":["id","operatorId","name","type"]}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"tariffDelete","summary":"Tariff / Delete","description":"Delete a tariff","tags":["resource / tariffs"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tax-identification-numbers/v2.0":{"get":{"operationId":"taxIdentificationNumbersListing","tags":["resource / tax identification numbers"],"summary":"Tax Identification Numbers / Listing","description":"Get all Tax Identification Numbers","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"lastUpdatedAt":{"description":"ISO-8601 formatted date","type":"string"}},"required":["id","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"taxIdentificationNumberCreate","tags":["resource / tax identification numbers"],"summary":"Tax Identification Number / Create","description":"Create new Tax Identification Number","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"lastUpdatedAt":{"description":"ISO-8601 formatted date","type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/tax-identification-numbers/v2.0/{taxIdentificationNumber}":{"parameters":[{"name":"taxIdentificationNumber","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"taxIdentificationNumberRead","summary":"Tax Identification Number / Read","description":"Get a Tax Identification Number","tags":["resource / tax identification numbers"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"lastUpdatedAt":{"description":"ISO-8601 formatted date","type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"taxIdentificationNumberUpdate","summary":"Tax Identification Number / Update","description":"Tax Identification Numbers","tags":["resource / tax identification numbers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"lastUpdatedAt":{"description":"ISO-8601 formatted date","type":"string"}},"required":["id","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"taxIdentificationNumberDelete","summary":"Tax Identification Number / Delete","description":"Delete a Tax Identification Number","tags":["resource / tax identification numbers"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/taxes/v2.0":{"get":{"operationId":"taxesListing","tags":["resource / taxes"],"summary":"Taxes / Listing","description":"Get all Taxes","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","percentage","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"taxCreate","tags":["resource / taxes"],"summary":"Tax / Create","description":"Create new Tax","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true}},"required":["name","percentage"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","percentage","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/taxes/v2.0/{tax}":{"parameters":[{"in":"path","name":"tax","description":"The ID of the Tax","schema":{"type":"integer"},"required":true}],"get":{"operationId":"taxRead","summary":"Tax / Read","description":"Get a Tax","tags":["resource / taxes"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","percentage","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"taxUpdate","summary":"Tax / Update","description":"Taxes","tags":["resource / taxes"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"displayName":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"percentage":{"type":"number","format":"decimal"},"taxIdentificationNumberId":{"type":"integer","nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","name","percentage","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"taxDelete","summary":"Tax / Delete","description":"Delete a Tax","tags":["resource / taxes"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/templates/v1.0":{"get":{"operationId":"templatesListing","tags":["resource / templates"],"summary":"Templates / Listing","description":"Get all charge points templates","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"evses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string","enum":["active","disabled","out of order"]},"maxPower":{"type":"number","description":"Maximum power in [Wh]"},"dlmPhases":{"nullable":true,"type":"string","enum":["1","3","split"]},"networkId":{"type":"string","description":"The OCPP evse identifier (should be consecutive numbers starting from 1)."},"currentType":{"type":"string","enum":["ac","dc"]},"dlmPriority":{"type":"number","description":"The priority of the EVSE in a DLM circuit. EVSEs with higher priority will receive more energy."},"inputVoltage":{"nullable":true,"type":"string","enum":["120","208","240","220-240","110-130","400","380","480","230"]},"tariffGroupId":{"nullable":true,"type":"integer"},"dlmMaxCurrentA":{"description":"The max current (Amperes) supported by the EVSE.","nullable":true,"type":"number"},"allowsReservation":{"type":"boolean","description":"Are reservations allowed on this EVSE."},"dlmPhaseRotation":{"description":"R stands for L1, S - for L2 and T - for L3. So for example RST = L1, L2, L3, while RTS = L1, L3, L2, etc. In the context of a Split-phase circuit, it's important to note that phase allocation will be disregarded.","nullable":true,"type":"string","enum":["RST","RTS","SRT","STR","TRS","TSR"]},"dlmConnectedPhase":{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"},"dlmEfficiencyPercent":{"description":"The efficiency of the DC EVSE in %, according to the technical specifications of the charging station.","nullable":true,"type":"number"}}}},"subscriptionPlanIds":{"type":"array","items":{"type":"integer"}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/terms-and-policies/v2.0":{"get":{"operationId":"termsAndPoliciesListing","summary":"Terms and policies / Listing","tags":["resource / terms and policies"],"parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"documentId":{"type":"integer"},"validFrom":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"document":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"subtitle":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"consentText":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The official text displayed to the user for giving their consent."},"termType":{"type":"string","readOnly":true,"enum":["marketing","signup","subscription","top-up"],"description":"The type of term:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"consentRequired":{"type":"boolean","description":"Indicates whether explicit user consent is required for this term."},"consentCollection":{"type":"string","enum":["explicit","automatic"],"description":"Defines how consent is collected:\n- **explicit**: Requires user explicit confirmation\n- **automatic**: Assumes consent upon use\n"},"consentCheckboxDefaultState":{"type":"boolean","description":"The default checked state for the consent checkbox in the UI."},"showOnSignup":{"type":"boolean","description":"Indicates whether this term should be displayed during the user signup flow. Only applicable for marketing terms."}},"required":["id","consentText","termType","consentRequired","consentCollection","consentCheckboxDefaultState"]},"validFrom":{"type":"string","format":"date-time"},"summary":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"content":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","enum":["future","active","past"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","document","validFrom","content"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/terms-and-policies/v2.0/{termVersion}":{"parameters":[{"name":"termVersion","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"termsAndPoliciesRead","summary":"Terms and policies / Read","tags":["resource / terms and policies"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"document":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"title":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"subtitle":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"consentText":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"description":"The official text displayed to the user for giving their consent."},"termType":{"type":"string","readOnly":true,"enum":["marketing","signup","subscription","top-up"],"description":"The type of term:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"consentRequired":{"type":"boolean","description":"Indicates whether explicit user consent is required for this term."},"consentCollection":{"type":"string","enum":["explicit","automatic"],"description":"Defines how consent is collected:\n- **explicit**: Requires user explicit confirmation\n- **automatic**: Assumes consent upon use\n"},"consentCheckboxDefaultState":{"type":"boolean","description":"The default checked state for the consent checkbox in the UI."},"showOnSignup":{"type":"boolean","description":"Indicates whether this term should be displayed during the user signup flow. Only applicable for marketing terms."}},"required":["id","consentText","termType","consentRequired","consentCollection","consentCheckboxDefaultState"]},"validFrom":{"type":"string","format":"date-time"},"summary":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}},"nullable":true},"content":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}},"status":{"type":"string","enum":["future","active","past"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","document","validFrom","content"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/top-up-packages/v2.0":{"get":{"operationId":"topUpPackagesListing","tags":["resource / top-up packages"],"summary":"Top-Up Packages / Listing","description":"Get all Top-Up Packages","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"enabled":{"type":"string","format":"boolean","description":"Only list enabled or disabled Top-Up Packages"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean"}},"required":["operatorId","price","bonus"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"topUpPackagCreate","tags":["resource / top-up packages"],"summary":"Top-Up Package / Create","description":"Create new Top-Up Package","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean","nullable":true,"description":"By default is set to `false`."}},"required":["price","bonus"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean"}},"required":["operatorId","price","bonus"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/top-up-packages/v2.0/{topUpPackage}":{"parameters":[{"name":"topUpPackage","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"topUpPackageRead","summary":"Top-Up Package / Read","description":"Get a Top-Up Package","tags":["resource / top-up packages"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean"}},"required":["operatorId","price","bonus"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"topUpPackageUpdate","summary":"Top-Up Package / Update","description":"Top-Up Packages","tags":["resource / top-up packages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean","nullable":true}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"price":{"type":"number","format":"decimal","multipleOf":0.001},"bonus":{"type":"number","format":"decimal","multipleOf":0.001},"enabled":{"type":"boolean"}},"required":["operatorId","price","bonus"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"topUpPackageDelete","summary":"Top-Up Package / Delete","description":"Delete a Top-Up Package","tags":["resource / top-up packages"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/transactions/v1.0":{"get":{"operationId":"transactionsListing","summary":"Transactions / Listing","tags":["resource / transactions"],"description":"Get all transactions","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions created after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions created before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions that were last updated after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions that were last updated before this datetime"},"paymentMethod":{"type":"string","description":"Only list transactions by type of payment method","enum":["visa","mastercard","paypal","maestro","amex","unknown","applepay","googlepay","twint","other"]},"userId":{"type":"string","format":"integer","description":"Only list transactions by a certain user"},"invoiceNumber":{"type":"string","description":"Filter transactions by invoice number string (e.g., \"INV-2024-001\"). Use this when you have the human-readable invoice number. To filter by the invoice's database ID, use invoiceId instead."},"status":{"type":"string","description":"Only list transaction in this status","enum":["pending","finalized","failed","reserved","refunded","authorized","initialized"]},"sessionId":{"type":"string","format":"integer","description":"Only list transaction with this session id"},"ref":{"type":"string","description":"Only list transactions with specific ref number."},"billingType":{"type":"string","description":"Only list transactions with the selected billing type.","enum":["internal","external"]},"terminalId":{"type":"string","format":"integer","description":"Only list transactions with specific payment terminal id."},"finalizedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions finalized before this datetime"},"finalizedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions finalized after this datetime"},"voucherId":{"type":"string","format":"integer","description":"Only list transactions paid with this specific voucher id."},"receiptId":{"type":"string","format":"integer","description":"Only list transactions associated with this specific receipt database ID."},"invoiceId":{"type":"string","format":"integer","description":"Filter transactions by invoice's internal database ID as returned in the transaction response. Use this when you have the invoiceId from a previous API response. To filter by the human-readable invoice number string, use invoiceNumber instead."},"purchaseType":{"type":"array","description":"Only list transactions with the specified purchase type(s). Determines what the transaction was for based on its associated entity.","items":{"type":"string","enum":["session","subscription_plan","topup_package","custom_fee","payment_terminal_authorisation","payment_authorisation"]}},"subscriptionBillingPeriodId":{"type":"string","format":"integer","description":"Only list transactions belonging to this subscription billing period. Returns both the settlement payment transaction and all obligation transactions (sessions, base fee, charger fees) for the billing period."},"settledByTransactionId":{"type":"string","format":"integer","description":"Only list transactions that were settled by this specific transaction. Given a settlement transaction ID, returns all obligation transactions (sessions, base fee, charger fees) that were settled by that payment."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Transaction","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"number":{"type":"string","nullable":true},"date":{"type":"string","format":"date-time"},"userId":{"type":"integer","nullable":true},"userEmail":{"type":"string","format":"email"},"sessionId":{"type":"integer","nullable":true},"paymentMethod":{"type":"string","nullable":true,"deprecated":true,"description":"The description that is generated by the payment terminal. This property should be used for payment terminal integrations."},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing `( Users / Payment Methods / Listing)`. For corporate billing the format is `corporate:1234` , for subscription - that is when the user has an active post-paid subscription, the format is `subscription_installment:1235`, for wallets the format is `wallet:applepay`, for bank transfers `bank_transfer:sepa` and for balance the returned value is null. When a transaction covers an ad-hoc session, no additional data can be obtained through the \"Users / Payment Methods\" endpoint.","nullable":true},"purchaseResourceType":{"type":"string","enum":["subscription_plan","topup_package","session","payment_authorisation","payment_terminal_authorisation","custom_fee"],"description":"The type of purchase the transaction is for."},"purchaseResourceId":{"type":"integer","nullable":true,"description":"The ID of the type of purchase."},"totalAmount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"ref":{"type":"string"},"bankMessage":{"type":"string"},"failureReason":{"type":"string","nullable":true},"invoiceId":{"type":"integer","nullable":true},"invoiceNo":{"deprecated":true,"type":"string","nullable":true},"receiptId":{"type":"integer","nullable":true},"billingType":{"type":"string","description":"The type of billing used for the transaction. Internal transactions are processed in our system, while external transactions are billed externally.","enum":["internal","external"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"finalizedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used","nullable":true},"voucherId":{"type":"integer","description":"Returned only if the paymentMethodId property is null, this is the id of the balance voucher that paid the transaction"},"subscriptionBillingPeriodId":{"type":"integer","description":"The ID of the subscription billing period this transaction belongs to. Present on both credit-sale transactions (session fees, subscription fees) and settlement payment transactions."},"settledByTransactionId":{"type":"integer","description":"The ID of the settlement transaction that paid for this obligation. Present only on credit-sale transactions (session fees, base fees, charger fees) that have been settled."},"cardDetails":{"type":"object","properties":{"type":{"type":"string","enum":["visa","mastercard","paypal","maestro","amex","unknown"],"description":"Card brand","nullable":true},"last4":{"type":"string","description":"Card number last 4 digits","minLength":4,"maxLength":4,"nullable":true},"expMonth":{"type":"string","description":"Card expiration month","nullable":true},"expYear":{"type":"string","description":"Card expiration year","nullable":true},"token":{"type":"string","description":"Card token","nullable":true},"tokenizationMethod":{"type":"string","enum":["apple_pay","google_pay","masterpass","visa_checkout","samsung_pay","amex_express_checkout","twint"],"description":"The tokenization method used to create the payment method.\nThis field indicates if the card was tokenized through a digital wallet service.\nOnly present when the payment method was created using a supported tokenization method.\n","x-enumDescriptions":{"apple_pay":"Apple Pay tokenization","google_pay":"Google Pay tokenization","masterpass":"Masterpass tokenization","visa_checkout":"Visa Checkout tokenization","samsung_pay":"Samsung Pay tokenization","amex_express_checkout":"American Express Express Checkout tokenization","twint":"TWINT tokenization"}}}}},"required":["id","operatorId","number","date","userId","sessionId","ref","currency"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"transactionsCreate","tags":["resource / transactions"],"summary":"Transactions / Create","description":"Create new Transaction","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens when sessionId is not provided.\nOptional for operator-scoped tokens (defaults to token's operator).\nIgnored when sessionId is provided (operator is derived from the session).\n","example":1},"sessionId":{"type":"integer"},"paymentMethod":{"type":"object","properties":{"methodType":{"type":"string","enum":["card","bank_transfer","wallet"]},"cardNetwork":{"type":"string","description":"Required when `methodType` is `card`","enum":["visa","mastercard","paypal","maestro","amex","unknown"]},"bankTransferType":{"type":"string","description":"Required when `methodType` is `bank_transfer`","enum":["pse","sepa"],"x-enumDescriptions":{"pse":"Pagos Seguros En línea (Colombia)","sepa":"Single Euro Payments Area (SEPA)"}},"walletType":{"type":"string","description":"Required when `methodType` is `wallet`","enum":["applepay","googlepay","twint","bancontact","other"]},"type":{"type":"string","deprecated":true,"description":"Deprecated, please use `methodType` and `cardNetwork` instead.","enum":["visa","mastercard","paypal","maestro","amex","unknown"]},"last4":{"type":"string","minLength":4,"maxLength":4},"expMonth":{"type":"string"},"expYear":{"type":"string"}}},"totalAmount":{"type":"number"},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"ref":{"type":"string"},"failureReason":{"type":"string"},"invoiceRequired":{"type":"boolean","description":"When set to `true` and the operator has receipt suppression for invoice issuance enabled,\nthe receipt will be suppressed for this transaction. This is intended for terminal\ntransactions where the customer indicates they want an invoice instead of a receipt.\n"},"email":{"type":"string","format":"email","description":"Email address for invoice delivery. Conditionally required based on the Email field\nconfiguration in the operator's invoice integration settings:\n- When set to \"Required\": This field is mandatory when `invoiceDetails` is provided.\n- When set to \"Optional\": This field is optional; if omitted, the invoice is issued without email notification.\n- When set to \"Disabled\": This field must not be provided.\nOnly applicable when `invoiceDetails` is provided.\n"},"locale":{"type":"string","description":"ISO language code (e.g., \"en\", \"bg\", \"de\", \"pl\") for bilingual invoice generation.\nWhen \"Issue bilingual invoices\" is enabled for the operator, the invoice is generated\nin both the operator's configured invoice language (primary) and this locale (secondary).\nIf not provided, falls back to: user's preferred locale → operator default → tenant default → English.\nOnly applicable when `invoiceDetails` is provided.\n","example":"en"},"invoiceDetails":{"type":"object","description":"Invoice details for automatic ad-hoc invoice issuance upon transaction finalization.\nWhen provided, the system creates an ad-hoc user with stored invoice details and\nautomatically issues an invoice when the transaction reaches \"finalized\" status.\nThis field cannot be updated via PATCH after creation.\nThe existing issue-invoice endpoint can still be called to override these details\nbefore the invoice is issued.\n","properties":{"invoiceType":{"type":"string","enum":["individual","company"],"description":"Type of invoice recipient"},"individualName":{"type":"string","description":"Full name of the individual (required when invoiceType is \"individual\")"},"individualPersonalId":{"type":"string","description":"Personal identification number"},"individualTaxId":{"type":"string","description":"Tax identification number for individual"},"companyName":{"type":"string","description":"Company name (required when invoiceType is \"company\")"},"companyRegNo":{"type":"string","description":"Company registration number"},"companyTaxId":{"type":"string","description":"Company tax identification number"},"companyTaxAdministrationOfficeName":{"type":"string","description":"Name of the tax administration office"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"city":{"type":"string"},"postCode":{"type":"string"},"address":{"type":"string"}},"required":["invoiceType"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["totalAmount","status"]}}}},"responses":{"201":{"description":"Transaction created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Transaction","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"number":{"type":"string","nullable":true},"date":{"type":"string","format":"date-time"},"userId":{"type":"integer","nullable":true},"userEmail":{"type":"string","format":"email"},"sessionId":{"type":"integer","nullable":true},"paymentMethod":{"type":"string","nullable":true,"deprecated":true,"description":"The description that is generated by the payment terminal. This property should be used for payment terminal integrations."},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing `( Users / Payment Methods / Listing)`. For corporate billing the format is `corporate:1234` , for subscription - that is when the user has an active post-paid subscription, the format is `subscription_installment:1235`, for wallets the format is `wallet:applepay`, for bank transfers `bank_transfer:sepa` and for balance the returned value is null. When a transaction covers an ad-hoc session, no additional data can be obtained through the \"Users / Payment Methods\" endpoint.","nullable":true},"purchaseResourceType":{"type":"string","enum":["subscription_plan","topup_package","session","payment_authorisation","payment_terminal_authorisation","custom_fee"],"description":"The type of purchase the transaction is for."},"purchaseResourceId":{"type":"integer","nullable":true,"description":"The ID of the type of purchase."},"totalAmount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"ref":{"type":"string"},"bankMessage":{"type":"string"},"failureReason":{"type":"string","nullable":true},"invoiceId":{"type":"integer","nullable":true},"invoiceNo":{"deprecated":true,"type":"string","nullable":true},"receiptId":{"type":"integer","nullable":true},"billingType":{"type":"string","description":"The type of billing used for the transaction. Internal transactions are processed in our system, while external transactions are billed externally.","enum":["internal","external"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"finalizedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used","nullable":true},"voucherId":{"type":"integer","description":"Returned only if the paymentMethodId property is null, this is the id of the balance voucher that paid the transaction"},"subscriptionBillingPeriodId":{"type":"integer","description":"The ID of the subscription billing period this transaction belongs to. Present on both credit-sale transactions (session fees, subscription fees) and settlement payment transactions."},"settledByTransactionId":{"type":"integer","description":"The ID of the settlement transaction that paid for this obligation. Present only on credit-sale transactions (session fees, base fees, charger fees) that have been settled."},"cardDetails":{"type":"object","properties":{"type":{"type":"string","enum":["visa","mastercard","paypal","maestro","amex","unknown"],"description":"Card brand","nullable":true},"last4":{"type":"string","description":"Card number last 4 digits","minLength":4,"maxLength":4,"nullable":true},"expMonth":{"type":"string","description":"Card expiration month","nullable":true},"expYear":{"type":"string","description":"Card expiration year","nullable":true},"token":{"type":"string","description":"Card token","nullable":true},"tokenizationMethod":{"type":"string","enum":["apple_pay","google_pay","masterpass","visa_checkout","samsung_pay","amex_express_checkout","twint"],"description":"The tokenization method used to create the payment method.\nThis field indicates if the card was tokenized through a digital wallet service.\nOnly present when the payment method was created using a supported tokenization method.\n","x-enumDescriptions":{"apple_pay":"Apple Pay tokenization","google_pay":"Google Pay tokenization","masterpass":"Masterpass tokenization","visa_checkout":"Visa Checkout tokenization","samsung_pay":"Samsung Pay tokenization","amex_express_checkout":"American Express Express Checkout tokenization","twint":"TWINT tokenization"}}}}},"required":["id","operatorId","number","date","userId","sessionId","ref","currency"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/transactions/v1.0/{transaction}":{"get":{"operationId":"transactionRead","summary":"Transaction / Read","tags":["resource / transactions"],"description":"Get a transation","parameters":[{"in":"path","name":"transaction","description":"The Transation ID to fetch","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Transaction","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"number":{"type":"string","nullable":true},"date":{"type":"string","format":"date-time"},"userId":{"type":"integer","nullable":true},"userEmail":{"type":"string","format":"email"},"sessionId":{"type":"integer","nullable":true},"paymentMethod":{"type":"string","nullable":true,"deprecated":true,"description":"The description that is generated by the payment terminal. This property should be used for payment terminal integrations."},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing `( Users / Payment Methods / Listing)`. For corporate billing the format is `corporate:1234` , for subscription - that is when the user has an active post-paid subscription, the format is `subscription_installment:1235`, for wallets the format is `wallet:applepay`, for bank transfers `bank_transfer:sepa` and for balance the returned value is null. When a transaction covers an ad-hoc session, no additional data can be obtained through the \"Users / Payment Methods\" endpoint.","nullable":true},"purchaseResourceType":{"type":"string","enum":["subscription_plan","topup_package","session","payment_authorisation","payment_terminal_authorisation","custom_fee"],"description":"The type of purchase the transaction is for."},"purchaseResourceId":{"type":"integer","nullable":true,"description":"The ID of the type of purchase."},"totalAmount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"ref":{"type":"string"},"bankMessage":{"type":"string"},"failureReason":{"type":"string","nullable":true},"invoiceId":{"type":"integer","nullable":true},"invoiceNo":{"deprecated":true,"type":"string","nullable":true},"receiptId":{"type":"integer","nullable":true},"billingType":{"type":"string","description":"The type of billing used for the transaction. Internal transactions are processed in our system, while external transactions are billed externally.","enum":["internal","external"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"finalizedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used","nullable":true},"voucherId":{"type":"integer","description":"Returned only if the paymentMethodId property is null, this is the id of the balance voucher that paid the transaction"},"subscriptionBillingPeriodId":{"type":"integer","description":"The ID of the subscription billing period this transaction belongs to. Present on both credit-sale transactions (session fees, subscription fees) and settlement payment transactions."},"settledByTransactionId":{"type":"integer","description":"The ID of the settlement transaction that paid for this obligation. Present only on credit-sale transactions (session fees, base fees, charger fees) that have been settled."},"cardDetails":{"type":"object","properties":{"type":{"type":"string","enum":["visa","mastercard","paypal","maestro","amex","unknown"],"description":"Card brand","nullable":true},"last4":{"type":"string","description":"Card number last 4 digits","minLength":4,"maxLength":4,"nullable":true},"expMonth":{"type":"string","description":"Card expiration month","nullable":true},"expYear":{"type":"string","description":"Card expiration year","nullable":true},"token":{"type":"string","description":"Card token","nullable":true},"tokenizationMethod":{"type":"string","enum":["apple_pay","google_pay","masterpass","visa_checkout","samsung_pay","amex_express_checkout","twint"],"description":"The tokenization method used to create the payment method.\nThis field indicates if the card was tokenized through a digital wallet service.\nOnly present when the payment method was created using a supported tokenization method.\n","x-enumDescriptions":{"apple_pay":"Apple Pay tokenization","google_pay":"Google Pay tokenization","masterpass":"Masterpass tokenization","visa_checkout":"Visa Checkout tokenization","samsung_pay":"Samsung Pay tokenization","amex_express_checkout":"American Express Express Checkout tokenization","twint":"TWINT tokenization"}}}}},"required":["id","operatorId","number","date","userId","sessionId","ref","currency"]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"transactionUpdate","summary":"Transaction / Update","tags":["resource / transactions"],"description":"Update a non-finalised transaction","parameters":[{"in":"path","name":"transaction","description":"The Transation ID to fetch","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"integer","description":"The ID of the charging session to associate with this transaction. Can only be set if the transaction does not already have a session assigned."},"paymentMethod":{"type":"object","properties":{"methodType":{"type":"string","enum":["card","bank_transfer"]},"cardNetwork":{"type":"string","description":"Required when `methodType` is `card`","enum":["visa","mastercard","paypal","maestro","amex","unknown"]},"bankTransferType":{"type":"string","description":"Required when `methodType` is `bank_transfer`","enum":["pse","sepa"],"x-enumDescriptions":{"pse":"Pagos Seguros En línea (Colombia)","sepa":"Single Euro Payments Area (SEPA)"}},"type":{"type":"string","deprecated":true,"description":"Deprecated, please use `methodType` and `cardNetwork` instead.","enum":["visa","mastercard","paypal","maestro","amex","unknown"]},"last4":{"type":"string","minLength":4,"maxLength":4},"expMonth":{"type":"string"},"expYear":{"type":"string"}}},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"totalAmount":{"type":"number"},"ref":{"type":"string"},"failureReason":{"type":"string"},"invoiceRequired":{"type":"boolean","description":"When set to `true` and the operator has receipt suppression for invoice issuance enabled,\nthe receipt will be suppressed for this transaction. This is intended for terminal\ntransactions where the customer indicates they want an invoice instead of a receipt.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["status","totalAmount"]}}}},"responses":{"200":{"description":"Transaction updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Transaction","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"number":{"type":"string","nullable":true},"date":{"type":"string","format":"date-time"},"userId":{"type":"integer","nullable":true},"userEmail":{"type":"string","format":"email"},"sessionId":{"type":"integer","nullable":true},"paymentMethod":{"type":"string","nullable":true,"deprecated":true,"description":"The description that is generated by the payment terminal. This property should be used for payment terminal integrations."},"paymentMethodId":{"type":"string","description":"The ID of the payment method, as returned by the payment method listing `( Users / Payment Methods / Listing)`. For corporate billing the format is `corporate:1234` , for subscription - that is when the user has an active post-paid subscription, the format is `subscription_installment:1235`, for wallets the format is `wallet:applepay`, for bank transfers `bank_transfer:sepa` and for balance the returned value is null. When a transaction covers an ad-hoc session, no additional data can be obtained through the \"Users / Payment Methods\" endpoint.","nullable":true},"purchaseResourceType":{"type":"string","enum":["subscription_plan","topup_package","session","payment_authorisation","payment_terminal_authorisation","custom_fee"],"description":"The type of purchase the transaction is for."},"purchaseResourceId":{"type":"integer","nullable":true,"description":"The ID of the type of purchase."},"totalAmount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"status":{"type":"string","enum":["pending","finalized","failed","reversed","refunded","authorized","initialized"]},"ref":{"type":"string"},"bankMessage":{"type":"string"},"failureReason":{"type":"string","nullable":true},"invoiceId":{"type":"integer","nullable":true},"invoiceNo":{"deprecated":true,"type":"string","nullable":true},"receiptId":{"type":"integer","nullable":true},"billingType":{"type":"string","description":"The type of billing used for the transaction. Internal transactions are processed in our system, while external transactions are billed externally.","enum":["internal","external"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"finalizedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used","nullable":true},"voucherId":{"type":"integer","description":"Returned only if the paymentMethodId property is null, this is the id of the balance voucher that paid the transaction"},"subscriptionBillingPeriodId":{"type":"integer","description":"The ID of the subscription billing period this transaction belongs to. Present on both credit-sale transactions (session fees, subscription fees) and settlement payment transactions."},"settledByTransactionId":{"type":"integer","description":"The ID of the settlement transaction that paid for this obligation. Present only on credit-sale transactions (session fees, base fees, charger fees) that have been settled."},"cardDetails":{"type":"object","properties":{"type":{"type":"string","enum":["visa","mastercard","paypal","maestro","amex","unknown"],"description":"Card brand","nullable":true},"last4":{"type":"string","description":"Card number last 4 digits","minLength":4,"maxLength":4,"nullable":true},"expMonth":{"type":"string","description":"Card expiration month","nullable":true},"expYear":{"type":"string","description":"Card expiration year","nullable":true},"token":{"type":"string","description":"Card token","nullable":true},"tokenizationMethod":{"type":"string","enum":["apple_pay","google_pay","masterpass","visa_checkout","samsung_pay","amex_express_checkout","twint"],"description":"The tokenization method used to create the payment method.\nThis field indicates if the card was tokenized through a digital wallet service.\nOnly present when the payment method was created using a supported tokenization method.\n","x-enumDescriptions":{"apple_pay":"Apple Pay tokenization","google_pay":"Google Pay tokenization","masterpass":"Masterpass tokenization","visa_checkout":"Visa Checkout tokenization","samsung_pay":"Samsung Pay tokenization","amex_express_checkout":"American Express Express Checkout tokenization","twint":"TWINT tokenization"}}}}},"required":["id","operatorId","number","date","userId","sessionId","ref","currency"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/user-groups/v1.0":{"get":{"operationId":"userGroupsListing","tags":["resource / user-groups"],"summary":"User Groups / Listing","description":"Get all user groups","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"noPartner":{"type":"string","format":"boolean","description":"True returns User Groups that have no Partner associated, false returns User Groups that have a Partner associated."},"partnerId":{"type":"string","format":"integer","description":"User Groups of a specific Partner."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the user groups that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the user groups that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the user group records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the user group records that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"userGroupCreate","summary":"User Group / Create","tags":["resource / user-groups"],"description":"Create new user group.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true,"maxLength":2000},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","nullable":true,"maxLength":255},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name"]}]}}}},"responses":{"201":{"description":"User group created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/user-groups/v1.0/{userGroup}":{"parameters":[{"name":"userGroup","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"userGroupRead","tags":["resource / user-groups"],"summary":"User Group / Read","description":"Get an user group","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"userGroupUpdate","summary":"User Group / Update","description":"Update a user group","tags":["resource / user-groups"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true,"maxLength":2000},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource.","nullable":true,"maxLength":255},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name"]}}}},"responses":{"200":{"description":"Updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"operatorId":{"type":"integer","readOnly":true,"description":"The ID of the operator this resource belongs to","example":1},"name":{"type":"string"},"partnerId":{"type":"integer","description":"The partnerId can be updated only if there are no users added to the user group","nullable":true},"description":{"type":"string","nullable":true},"externalId":{"type":"string","description":"Used to store custom information, usually used for external references or metadata to the resource."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","operatorId","name"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"userGroupDelete","summary":"User Group / Delete","tags":["resource / user-groups"],"description":"Delete a user group","responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0":{"get":{"operationId":"usersListing","deprecated":true,"tags":["resource / users"],"summary":"Users / Listing","description":"Get all users","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"userGroupId":{"type":"string","format":"integer","description":"Only list users that belong to a certain user group"},"partnerId":{"type":"string","format":"integer","description":"Only list users attached to the partner."},"externalId":{"type":"string","description":"Only list users with specific external id"},"email":{"type":"string","description":"Only list user with specific email"},"externalAppData":{"type":"string","description":"Only list records with specific external application data. You can use a dot notation to search for nested properties. For example, `filter[externalAppData.property1.property2]=value`.","example":"filter[externalAppData.property1.property2]=value"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and before this datetime","type":"string","format":"date-time"},"lastActivityBefore":{"description":"ISO 8601 formatted date. Lists only the users whose last activity was before the specified date. Users with no recorded activity are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or after this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or before this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only users that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only users that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["partnerInvites","externalAppData","invoiceDetails"]}}}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"userCreate","deprecated":true,"tags":["resource / users"],"summary":"User / Create","description":"Create new User","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","nullable":true,"example":"2022-11-12 12:00:00"},"password":{"type":"string","minLength":6},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"state":{"description":"The field will be considered only if the provided country is `US` or `AU`","type":"string","nullable":true,"oneOf":[{"description":"For cases when the country is USA.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"},"vehicle_no":{"type":"string"},"personal_id":{"type":"string"},"company_name":{"type":"string"},"locale":{"type":"string","nullable":true,"description":"The language and regional settings to use in the app.\n\n**Only available** if the option to update the user locale has been enabled for the operator.\n","example":"en-GB"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the user"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"receiveNewsAndPromotions":{"type":"boolean","example":false,"description":"Indicates whether the user has opted into receiving news and promotions. To opt in, set this field to 'true'; otherwise, set it to 'false'."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null.\"\n","type":"object","nullable":true,"additionalProperties":true},"nonce":{"type":"string","description":"A optional unique string that is used to prevent replay attacks. It's generated by the server, the client should pass it if the user is being created from an external sign up embedded web app and needs to automatically log in the user in the mobile app after creation."}}}}}},"responses":{"201":{"description":"User created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0/{user}":{"parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["partnerInvites","externalAppData","invoiceDetails"]}}}],"get":{"operationId":"userRead","deprecated":true,"parameters":[{"in":"query","name":"withAmountDue","schema":{"type":"boolean","default":false}}],"tags":["resource / users"],"summary":"User / Read","description":"Get a user","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","allOf":[{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}},{"type":"object","properties":{"amountDue":{"type":"number","format":"decimal","description":"The total amount that the user owes by the current moment."}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"userUpdate","deprecated":true,"tags":["resource / users"],"summary":"User / Update","description":"Update user","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","nullable":true,"example":"2022-11-12 12:00:00"},"password":{"type":"string","minLength":6},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"state":{"description":"The field will be considered only if the provided country is `US` or `AU`","type":"string","nullable":true,"oneOf":[{"description":"For cases when the country is USA.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"},"vehicle_no":{"type":"string"},"company_name":{"type":"string","nullable":true},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the user"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"receiveNewsAndPromotions":{"type":"boolean","description":"Updates the user's preference for receiving news and promotions. To change their preference, update this field to 'true' to opt in, or 'false' to opt out.","example":true},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true}}}}}},"responses":{"200":{"description":"User updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"userDelete","deprecated":true,"summary":"User / Delete","description":"Delete a user","tags":["resource / users"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0/{user}/invoice-details":{"get":{"operationId":"invoiceDetailsRead","parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true}],"summary":"Invoice details / Read","tags":["resource / users"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"invoiceDetailsCreateOrUpdate","tags":["resource / users"],"summary":"Invoice details / Create or update","description":"Create or update user invoice details.\n\n**Important**: When the operator has \"Always collect Invoice Details\" enabled in their invoice integration settings, the `requireInvoice` field will always be set to `true` regardless of the request payload value. This override ensures regulatory compliance and business policy enforcement. No error is returned when overrides occur as this is intentional behavior.\n","parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"]},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["invoiceRequired","clientType"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"firstName":{"type":"string","nullable":false},"lastName":{"type":"string","nullable":false},"email":{"type":"string","nullable":false},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["firstName","lastName","email"]},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["invoiceType","name","email","phone"]}]}}}},"responses":{"200":{"description":"Invoice details created or updated successfully","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]},"examples":{"normalUpdate":{"summary":"Normal Update - No Override","description":"Standard response when operator does not have 'Always collect Invoice Details' enabled. The requireInvoice value matches the request payload.","value":{"requireInvoice":false,"requireInvoiceLastUpdatedAt":"2024-01-15T10:30:00Z","invoiceType":"individual","individualName":"John Doe","individualPersonalId":"1234567890","individualTaxId":null,"companyName":null,"companyRegNo":null,"companyTaxId":null,"companyTaxAdministrationOfficeName":null,"country":"US","region":null,"state":"CA","city":"San Francisco","postCode":"94102","address":"123 Market Street"}},"operatorOverride":{"summary":"Operator Override - requireInvoice Enforced","description":"Response when operator has 'Always collect Invoice Details' enabled. The requireInvoice field is set to true regardless of the request payload value (which was false in this example). This override ensures regulatory compliance and business policy enforcement.","value":{"requireInvoice":true,"requireInvoiceLastUpdatedAt":"2024-01-15T10:30:00Z","requireInvoiceEnforcedBy":"operator_setting","originalRequestValue":false,"invoiceType":"company","individualName":null,"individualPersonalId":null,"individualTaxId":null,"companyName":"Example Corp","companyRegNo":"12345678","companyTaxId":"TAX123456","companyTaxAdministrationOfficeName":"Central Tax Office","country":"BG","region":null,"state":null,"city":"Sofia","postCode":"1000","address":"1 Business Street"}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0/{user}/payment-methods":{"get":{"operationId":"paymentMethodsListing","tags":["resource / users"],"summary":"Payment Methods / Listing","description":"Get all payment methods for a user","parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Please note that the ID of the payment processor is actually a STRING. Please expect records in the format of `corporate:1234` or `subscription_installment:1235` - those will be of type `corporate billing` or `subscription` and when used to start a session will actually bill that session to a corporate account or subscription, that the customer is a member of! Please also note that a value of `NULL` indicates `Balance`","nullable":true,"readOnly":true},"userId":{"type":"integer","nullable":false,"readOnly":true},"type":{"type":"string","enum":["tokenized","corporate","balance","subscription","wallet","bank_transfer",null],"nullable":true,"readOnly":true},"tokenizedType":{"type":"string","readOnly":true,"enum":["card","bank_transfer"]},"bankTransferType":{"type":"string","readOnly":true,"enum":["sepa","pse"]},"walletType":{"type":"string","readOnly":true,"enum":["applepay","googlepay","twint","bancontact","other"]},"issuer":{"type":"string","enum":["visa","mastercard","maestro","amex","paypal","unknown"],"description":"unknown type means - a payment processor of other then the listed types","readOnly":true,"nullable":true},"name":{"type":"string","description":"The last 4 digits of the CC (with a prefix of \"****\") or the name of the corporate account or the name of the subscription plan or \"Balance\"","readOnly":true},"default":{"type":"boolean"},"expireYear":{"type":"number","example":2028,"readOnly":true,"nullable":true},"expireMonth":{"type":"number","example":5,"readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"addedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"removedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true}},"required":["id","type","name","userId","default"]},"example":[{"id":null,"userId":123,"type":"balance","name":"Balance","default":false,"addedAt":"2024-02-07T13:56:19+00:00","removedAt":"2025-03-07T13:54:11+00:00"},{"id":"1234","userId":123,"type":"tokenized","tokenizedType":"card","issuer":"visa","name":"**** 1111","default":true,"expireYear":2026,"expireMonth":5,"addedAt":"2024-02-07T13:56:19+00:00","removedAt":"2025-03-07T13:54:11+00:00"},{"id":"589","userId":123,"type":"tokenized","tokenizedType":"bank_transfer","bankTransferType":"sepa","issuer":null,"name":"**** 1113","default":false,"expireYear":null,"expireMonth":null},{"id":"corporate:1235","userId":123,"name":"The Corporation LLC","type":"corporate","default":false,"addedAt":"2024-02-07T13:56:19+00:00","removedAt":"2025-03-07T13:54:11+00:00"},{"id":"subscription_installment:1234","userId":123,"name":"Post paid subscription name","type":"subscription","default":false,"addedAt":"2024-02-07T13:56:19+00:00","removedAt":null},{"id":"wallet:applepay","userId":123,"type":"wallet","issuer":"unknown","name":"Wallet123","walletType":"applepay","default":false}]},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page"},"last":{"type":"string","description":"The URL to fetch the last page"},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page","nullable":true}},"required":["first","last"]},"meta":{"type":"object","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"paymentMethodCreate","tags":["resource / users"],"summary":"Payment Method / Create","description":"Initiate a new payment method registration, or finalize it.\n\n Note that this is a two step process!\n\n# For payment processors with web view integration\n\n You will need to initiate a call with no parameters to this endpoint to get a new request to add payment method (Step 1). Then you will have to redirect to an endpoint and wait for the client to enter his credit card details there. Once he/she is done (and reaches the successURL) you must then issue another call to this endpoint with the transactionID that was returned from the first call to finalize the process and retrieve the newly added payment method data (Step 2).\n\n ## Step 1\n POST with request body, containing `tokenizedType` to determine the type of the method and `bankTransferType` if applicable.\n\n This will create a new request to the payment processor for adding a new payment method. As response you will get the `transactionId` to track the payment method registration process, the `redirectUrl` and `successUrl`, to redirect your user to, along with any other attributes that the payment processor requires for tracking. Just pass those additional parameters to Step 2.\n\n### Example request for tokenizedType = card\nRequest:\n```json\n{\n  \"tokenizedType\": \"card\"\n}\n```\n\n### Example request for tokenizedType = bank_transfer\nRequest:\n```json\n{\n  \"tokenizedType\": \"bank_transfer\",\n  \"bankTransferType\": \"sepa\"\n}\n```\n\nResponse:\n```json\n{\n  \"transactionId\": 1234,\n  \"successUrl\": \"http://example.com/payment-processor/success\",\n  \"redirectUrl\": \"http://example.com/payment-processor/web-form/123abc\",\n  \"additionalProcessorArguments\": \"just pass them all top the step 2\"\n}\n```\n\n ## Step 2\n POST with request body, containing the `transactionId` along with any other attributes, that were in the response of Step 1 (other then the `transactionId`, `successUrl` and `redirectUrl`).\n\n This will finalize the payment method registration and will retrieve the newly added payment method for you. Note that you can also receive the payment methods using the payment methods listing endpoints.\n\n### Example\nRequest:\n```json\n{\n  \"transactionId\": 1234,\n  \"successUrl\": \"http://example.com/payment-processor/success\",\n  \"redirectUrl\": \"http://example.com/payment-processor/web-form/123abc\",\n  \"additionalProcessorArguments\": \"just pass them all top the step 2\"\n}\n```\nResponse for card:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"card\",\n    \"issuer\": \"visa\",\n    \"expireYear\": 2026,\n    \"expireMonth\": 5,\n    \"default\": true,\n  }\n}\n```\nResponse for bank transfer:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"bank_transfer\",\n    \"bankTransferType\": \"sepa\",\n    \"issuer\": null,\n    \"expireYear\": null,\n    \"expireMonth\": null,\n    \"default\": true,\n  }\n}\n```\n\n # For payment processors with in-app integration\n\n Braintree and Stripe integrations DO NOT count out `redirectUrl` as these processors should have an ip-app integration and therefore the app itself should use the appropriate SDK to complete the credit-card tokenization process with the processor.\n\n## Braintree\nThe first step is not required for braintree as the full integration is done in-app. Step 2 needs to pass the `paymentMethodNonce` so that it can be exchanged for the payment method token.\n\n### Example Step 2\nRequest:\n```json\n{\"paymentMethodNonce\": \"abc123\"}\n```\nResponse for card:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"card\",\n    \"issuer\": \"visa\",\n    \"expireYear\": 2026,\n    \"expireMonth\": 5,\n    \"default\": true,\n  }\n}\n```\nResponse for bank transfer:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"bank_transfer\",\n    \"bankTransferType\": \"sepa\",\n    \"issuer\": null,\n    \"expireYear\": null,\n    \"expireMonth\": null,\n    \"default\": true,\n  }\n}\n```\n\n## Stripe\nStep 1 with stripe will initialize a setup intent, that your app should complete. You will get the details you need in order to do that from the response of that call. Call step 2 once you have completed the setup intent.\n\n### Example Step 1 - when tokenizing card\n```json\n{\n  \"tokenizedType\": \"card\"\n}\n```\n\n### Example Step 1 - when tokenizing bank transfer\nRequest:\n```json\n{\n  \"tokenizedType\": \"bank_transfer\",\n  \"bankTransferType\": \"sepa\"\n}\n```\n\nResponse:\n```json\n{\n  \"publishableKey\": \"345678986543\",\n  \"clientSecret\": \"jyt37hgsv63\",\n  \"setupIntentReference\": \"1234ABC\"\n}\n```\n\n### Example Step 2\nRequest:\n```json\n{\n  \"publishableKey\": \"345678986543\",\n  \"clientSecret\": \"jyt37hgsv63\",\n  \"setupIntentReference\": \"1234ABC\"\n}\n```\nResponse for card:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"card\",\n    \"issuer\": \"visa\",\n    \"expireYear\": 2026,\n    \"expireMonth\": 5,\n    \"default\": true,\n  }\n}\n```\nResponse for bank transfer:\n```json\n{\n  \"data\": {\n    \"id\": 1234,\n    \"name\": \"**** 1111\",\n    \"type\": \"tokenized\",\n    \"tokenizedType\": \"bank_transfer\",\n    \"bankTransferType\": \"sepa\",\n    \"issuer\": null,\n    \"expireYear\": null,\n    \"expireMonth\": null,\n    \"default\": true,\n  }\n}\n```\n","parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tokenizedType":{"type":"string","enum":["card","bank_transfer"],"description":"The type of the tokenized payment method. If not provided - defaults to card"},"bankTransferType":{"type":"string","enum":["sepa"],"description":"The type of the bank transfer. Required if `tokenizedType` is `bank_transfer`"},"transactionId":{"type":"number","description":"The ID of the Transaction object, created when you initiated the request.","nullable":true}}},"examples":{"EmptyBody":{"summary":"Step 1 - all payment methods, defaults to card tokenizedType"},"CardBody":{"summary":"Step 1 - all payment methods, card tokenizedType","value":{"tokenizedType":"card"}},"BankTransferBody":{"summary":"Step 1 - all payment methods, bank_transfer tokenizedType","value":{"tokenizedType":"bank_transfer","bankTransferType":"sepa"}},"FinishStripe":{"summary":"Step 2 - Stripe","value":{"publishableKey":345678986543,"clientSecret":"jyt37hgsv63","setupIntentReference":"1234ABC"}},"FinishBraintree":{"summary":"Step 2 - Braintree","value":{"paymentMethodNonce":"asdh266"}},"Finish":{"summary":"Step 2 - other processors","value":{"transactionId":12,"additionalProcessorArguments":"just pass them all top the step 2"}}}}}},"responses":{"200":{"description":"Request succeeded","content":{"application/json":{"schema":{"oneOf":[{"title":"Transaction-based Payment Method Setup","type":"object","properties":{"transactionId":{"type":"number","description":"The TransactionID of the request to add payment method."},"successUrl":{"type":"string","nullable":true},"redirectUrl":{"type":"string","description":"URL to redirect the user to. The user will be prompted to enter the payment method details when he/she visits it","nullable":true}},"additionalProperties":true,"description":"Pass the transactionId to the request body of the second step along with any other attributes that you get from this","required":["transactionId"]},{"title":"Stripe Setup Intent Payment Method","type":"object","properties":{"publishableKey":{"type":"string"},"clientSecret":{"type":"string"},"setupIntentReference":{"type":"string"}},"required":["publishableKey","clientSecret","setupIntentReference"]}]},"examples":{"Step1":{"summary":"Step 1 - not in-app payment methods","value":{"transactionId":12,"redirectUrl":"https://example.com/4567ABCD","successUrl":"https://example.com/success","additionalProcessorArguments":"just pass them all top the step 2"}},"Step1Stripe":{"summary":"Step 1 - Stripe","value":{"publishableKey":345678986543,"clientSecret":"jyt37hgsv63","setupIntentReference":"1234ABC"}},"Step1Braintree":{"summary":"Step 1 - Braintree"},"Step2":{"summary":"Step 2 - all payment methods","value":{"paymentMethod":{"id":1234,"name":"**** 1111","type":"tokenized","tokenizedType":"card","issuer":"visa","expireYear":2026,"expireMonth":5,"default":true}}}}}}},"201":{"description":"Request succeeded","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Please note that the ID of the payment processor is actually a STRING. Please expect records in the format of `corporate:1234` or `subscription_installment:1235` - those will be of type `corporate billing` or `subscription` and when used to start a session will actually bill that session to a corporate account or subscription, that the customer is a member of! Please also note that a value of `NULL` indicates `Balance`","nullable":true,"readOnly":true},"userId":{"type":"integer","nullable":false,"readOnly":true},"type":{"type":"string","enum":["tokenized","corporate","balance","subscription","wallet","bank_transfer",null],"nullable":true,"readOnly":true},"tokenizedType":{"type":"string","readOnly":true,"enum":["card","bank_transfer"]},"bankTransferType":{"type":"string","readOnly":true,"enum":["sepa","pse"]},"walletType":{"type":"string","readOnly":true,"enum":["applepay","googlepay","twint","bancontact","other"]},"issuer":{"type":"string","enum":["visa","mastercard","maestro","amex","paypal","unknown"],"description":"unknown type means - a payment processor of other then the listed types","readOnly":true,"nullable":true},"name":{"type":"string","description":"The last 4 digits of the CC (with a prefix of \"****\") or the name of the corporate account or the name of the subscription plan or \"Balance\"","readOnly":true},"default":{"type":"boolean"},"expireYear":{"type":"number","example":2028,"readOnly":true,"nullable":true},"expireMonth":{"type":"number","example":5,"readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"addedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"removedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true}},"required":["id","type","name","userId","default"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid or problem with processing the request has occurred","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["Maximum allowed payment methods reached","Payment processor not installed","The given data was invalid.","Invalid Operation"]},"errors":{"type":"object","nullable":true}}}}}}}}},"/public-api/resources/users/v1.0/{user}/payment-methods/{paymentMethodId}":{"parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"path","name":"paymentMethodId","schema":{"type":"string"},"required":true}],"get":{"operationId":"paymentMethodRead","tags":["resource / users"],"summary":"Payment Method / Read","description":"Get information for a payment method by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Please note that the ID of the payment processor is actually a STRING. Please expect records in the format of `corporate:1234` or `subscription_installment:1235` - those will be of type `corporate billing` or `subscription` and when used to start a session will actually bill that session to a corporate account or subscription, that the customer is a member of! Please also note that a value of `NULL` indicates `Balance`","nullable":true,"readOnly":true},"userId":{"type":"integer","nullable":false,"readOnly":true},"type":{"type":"string","enum":["tokenized","corporate","balance","subscription","wallet","bank_transfer",null],"nullable":true,"readOnly":true},"tokenizedType":{"type":"string","readOnly":true,"enum":["card","bank_transfer"]},"bankTransferType":{"type":"string","readOnly":true,"enum":["sepa","pse"]},"walletType":{"type":"string","readOnly":true,"enum":["applepay","googlepay","twint","bancontact","other"]},"issuer":{"type":"string","enum":["visa","mastercard","maestro","amex","paypal","unknown"],"description":"unknown type means - a payment processor of other then the listed types","readOnly":true,"nullable":true},"name":{"type":"string","description":"The last 4 digits of the CC (with a prefix of \"****\") or the name of the corporate account or the name of the subscription plan or \"Balance\"","readOnly":true},"default":{"type":"boolean"},"expireYear":{"type":"number","example":2028,"readOnly":true,"nullable":true},"expireMonth":{"type":"number","example":5,"readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"addedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"removedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true}},"required":["id","type","name","userId","default"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"paymentMethodUpdate","tags":["resource / users"],"summary":"Payment Method / Update","description":"Update Payment method. Please note that `balance` and `corporate` payment methods CANNOT be set as default","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"default":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Payment method updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Please note that the ID of the payment processor is actually a STRING. Please expect records in the format of `corporate:1234` or `subscription_installment:1235` - those will be of type `corporate billing` or `subscription` and when used to start a session will actually bill that session to a corporate account or subscription, that the customer is a member of! Please also note that a value of `NULL` indicates `Balance`","nullable":true,"readOnly":true},"userId":{"type":"integer","nullable":false,"readOnly":true},"type":{"type":"string","enum":["tokenized","corporate","balance","subscription","wallet","bank_transfer",null],"nullable":true,"readOnly":true},"tokenizedType":{"type":"string","readOnly":true,"enum":["card","bank_transfer"]},"bankTransferType":{"type":"string","readOnly":true,"enum":["sepa","pse"]},"walletType":{"type":"string","readOnly":true,"enum":["applepay","googlepay","twint","bancontact","other"]},"issuer":{"type":"string","enum":["visa","mastercard","maestro","amex","paypal","unknown"],"description":"unknown type means - a payment processor of other then the listed types","readOnly":true,"nullable":true},"name":{"type":"string","description":"The last 4 digits of the CC (with a prefix of \"****\") or the name of the corporate account or the name of the subscription plan or \"Balance\"","readOnly":true},"default":{"type":"boolean"},"expireYear":{"type":"number","example":2028,"readOnly":true,"nullable":true},"expireMonth":{"type":"number","example":5,"readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"addedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"removedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true}},"required":["id","type","name","userId","default"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"paymentMethodDelete","tags":["resource / users"],"summary":"Payment Method / Delete","description":"Delete Payment method. Please note that `balance` and `corporate` payment methods CANNOT be removed from this interface","responses":{"204":{"description":"Payment method deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0/{user}/subscription-billing-periods":{"get":{"operationId":"subscriptionBillingPeriodsListing","tags":["resource / users"],"summary":"Subscription billing periods / Listing","description":"Get all subscription billing periods for a user","parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"subscriptionPlanId":{"type":"string","format":"integer","description":"Filter by subscription plan ID"},"subscriptionId":{"type":"string","format":"integer","description":"Filter by subscription ID"},"hasUnresolvedPaymentFailure":{"type":"string","format":"boolean","description":"When `true`, return only billing periods that currently have an unresolved payment failure (`firstPaymentFailureAt` is set). When `false`, return only billing periods without a current failure. Payment failure dates are cleared when a retry succeeds, so this reflects the current failure state, not historical failures."},"startedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods started after this datetime."},"startedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods started before this datetime."},"endedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods ended after this datetime."},"endedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods ended before this datetime."}}}},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"Subscription billing period","properties":{"id":{"type":"integer","description":"The billing period ID"},"subscriptionPlanId":{"type":"integer","description":"The ID of the subscription plan"},"subscriptionId":{"type":"integer","description":"The ID of the subscription"},"startedAt":{"type":"string","format":"date-time","description":"The start date of the billing period (ISO 8601 formatted)"},"endedAt":{"type":"string","format":"date-time","description":"The end date of the billing period (ISO 8601 formatted)"},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Total amount (base fee + charger fees + session charges)"},"baseFee":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Subscription base fee amount"},"chargePointFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Per-charge-point fees amount"},"sessionFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Sum of all charging session costs during this billing period"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"firstPaymentFailureAt":{"type":"string","format":"date-time","description":"First payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureAt":{"type":"string","format":"date-time","description":"Latest payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureReason":{"type":"string","description":"Latest payment failure reason"},"obligationsTransferredAt":{"type":"string","format":"date-time","description":"When obligations were transferred (ISO 8601 formatted)"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","subscriptionPlanId","subscriptionId","startedAt","endedAt","totalAmount","baseFee","currency","createdAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.0/{user}/subscription-billing-periods/{billingPeriod}":{"parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"path","name":"billingPeriod","schema":{"type":"integer"},"required":true,"description":"The subscription billing period ID"}],"get":{"operationId":"subscriptionBillingPeriodRead","tags":["resource / users"],"summary":"Subscription billing period / Read","description":"Get information for a subscription billing period by ID","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Subscription billing period","properties":{"id":{"type":"integer","description":"The billing period ID"},"subscriptionPlanId":{"type":"integer","description":"The ID of the subscription plan"},"subscriptionId":{"type":"integer","description":"The ID of the subscription"},"startedAt":{"type":"string","format":"date-time","description":"The start date of the billing period (ISO 8601 formatted)"},"endedAt":{"type":"string","format":"date-time","description":"The end date of the billing period (ISO 8601 formatted)"},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Total amount (base fee + charger fees + session charges)"},"baseFee":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Subscription base fee amount"},"chargePointFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Per-charge-point fees amount"},"sessionFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Sum of all charging session costs during this billing period"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"firstPaymentFailureAt":{"type":"string","format":"date-time","description":"First payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureAt":{"type":"string","format":"date-time","description":"Latest payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureReason":{"type":"string","description":"Latest payment failure reason"},"obligationsTransferredAt":{"type":"string","format":"date-time","description":"When obligations were transferred (ISO 8601 formatted)"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","subscriptionPlanId","subscriptionId","startedAt","endedAt","totalAmount","baseFee","currency","createdAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"405":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.1":{"get":{"operationId":"usersListingV1_1","tags":["resource / users"],"summary":"Users / Listing","description":"Get all users","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"userGroupId":{"type":"string","format":"integer","description":"Only list users that belong to a certain user group"},"partnerId":{"type":"string","format":"integer","description":"Only list users attached to the partner."},"externalId":{"type":"string","description":"Only list users with specific external id"},"email":{"type":"string","description":"Only list user with specific email"},"externalAppData":{"type":"string","description":"Only list records with specific external application data. You can use a dot notation to search for nested properties. For example, `filter[externalAppData.property1.property2]=value`.","example":"filter[externalAppData.property1.property2]=value"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and before this datetime","type":"string","format":"date-time"},"lastActivityBefore":{"description":"ISO 8601 formatted date. Lists only the users whose last activity was before the specified date. Users with no recorded activity are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or after this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or before this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only users that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only users that were created on and before this datetime","type":"string","format":"date-time"}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["partnerInvites","externalAppData","invoiceDetails"]}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"userCreateV1_1","tags":["resource / users"],"summary":"User / Create","description":"Create new User","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","nullable":true,"example":"2022-11-12 12:00:00"},"password":{"type":"string","minLength":6},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"state":{"description":"The field will be considered only if the provided country is `US` or `AU`","type":"string","nullable":true,"oneOf":[{"description":"For cases when the country is USA.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"},"vehicle_no":{"type":"string"},"personal_id":{"type":"string"},"locale":{"type":"string","nullable":true,"description":"The user locale value sets the Mobile App and notifications language. To change this value you must enable 'Allow updating user locale via API' in the EV drivers tab of the Operator resource.\n","enum":["en","bg","mk","el","zh-CN","zh-HK","zh-TW","pt","sl","hr","it","de","hu","fi","is","sv-SE","da-DK","nb-NO","tr-TR","es-ES","ar","ary","he","ta","ms","cy","sr","fr","fr-MA","ro","lt","uk","ru","nl","ca-ES","id","ar-EG","pl","lo","th","sq-XK","ga-IE","bs","ja","cs","lv","et","az","ka"],"example":"en"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the user"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"receiveNewsAndPromotions":{"type":"boolean","example":false,"description":"Indicates whether the user has opted into receiving news and promotions. To opt in, set this field to 'true'; otherwise, set it to 'false'."},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null.\"\n","type":"object","nullable":true,"additionalProperties":true},"nonce":{"type":"string","description":"A optional unique string that is used to prevent replay attacks. It's generated by the server, the client should pass it if the user is being created from an external sign up embedded web app and needs to automatically log in the user in the mobile app after creation."},"partnerId":{"type":"integer","nullable":true,"description":"The ID of the partner to associate the created user with. When specified, the user will be created with `created_by_partner_id` set and an auto-accepted partner invite.\n- Required for sub-operator admins (must be a partner belonging to the sub-operator with `allow_partner_to_create_users` enabled).\n- Optional for operator admins (must belong to the operator's partners) and global admins.\n- Ignored for partner admins (their own partner is used automatically).\n"}}}}}},"responses":{"201":{"description":"User created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/users/v1.1/{user}":{"parameters":[{"in":"path","name":"user","schema":{"type":"integer"},"required":true},{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["partnerInvites","externalAppData","invoiceDetails"]}}}],"get":{"operationId":"userReadV1_1","parameters":[{"in":"query","name":"withAmountDue","schema":{"type":"boolean","default":false}}],"tags":["resource / users"],"summary":"User / Read","description":"Get a user","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","allOf":[{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}},{"type":"object","properties":{"amountDue":{"type":"number","format":"decimal","description":"The total amount that the user owes by the current moment."}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"userUpdateV1_1","tags":["resource / users"],"summary":"User / Update","description":"Update user","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","nullable":true,"example":"2022-11-12 12:00:00"},"password":{"type":"string","minLength":6},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"first_name":{"type":"string"},"middle_name":{"type":"string"},"last_name":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"state":{"description":"The field will be considered only if the provided country is `US` or `AU`","type":"string","nullable":true,"oneOf":[{"description":"For cases when the country is USA.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]}]},"city":{"type":"string"},"post_code":{"type":"string"},"address":{"type":"string"},"vehicle_no":{"type":"string"},"personal_id":{"type":"string"},"locale":{"type":"string","nullable":true,"description":"The user locale value sets the Mobile App and notifications language. To change this value you must enable 'Allow updating user locale via API' in the EV drivers tab of the Operator resource.\n","enum":["en","bg","mk","el","zh-CN","zh-HK","zh-TW","pt","sl","hr","it","de","hu","fi","is","sv-SE","da-DK","nb-NO","tr-TR","es-ES","ar","ary","he","ta","ms","cy","sr","fr","fr-MA","ro","lt","uk","ru","nl","ca-ES","id","ar-EG","pl","lo","th","sq-XK","ga-IE","bs","ja","cs","lv","et","az","ka"],"example":"en"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"description":"Third party identifier of the user"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"receiveNewsAndPromotions":{"type":"boolean","description":"Updates the user's preference for receiving news and promotions. To change their preference, update this field to 'true' to opt in, or 'false' to opt out.","example":true},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true}}}}}},"responses":{"200":{"description":"User updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["id","operatorId"],"properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"email":{"type":"string","format":"email"},"emailVerified":{"type":"string","description":"ISO 8601 formatted date","readOnly":true,"nullable":true,"example":"2022-11-12 12:00:00"},"requirePasswordReset":{"type":"boolean","description":"Sets a requirement for the user to set a new password when they next open the app. After a new password is set, this option resets automatically."},"firstName":{"type":"string","nullable":true},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"vehicleNo":{"type":"string","nullable":true},"personalId":{"type":"string"},"companyName":{"type":"string","nullable":true},"locale":{"type":"string","nullable":true,"example":"en-GB"},"balance":{"type":"number","multipleOf":0.001,"description":"The current amount in the balance of the user (in the base currency). Would not be returned in the response if the user is related to a Partner without \"addUserBalance\" permission"},"status":{"type":"string","enum":["enabled","disabled"],"description":"* `enabled` Enabled - the user is allowed to use the system\n* `disabled` Disabled - the user is NOT allowed to use the system\n"},"userGroupIds":{"type":"array","items":{"type":"integer"}},"externalId":{"type":"string","nullable":true,"readOnly":true,"description":"Third party identifier of the user"},"subscriptionId":{"type":"integer","nullable":true,"readOnly":true,"description":"user subscription id"},"options":{"type":"object","properties":{"sessionsAllowed":{"type":"string","description":"Determine the number of sessions a user could start - single or multiple simultaneous sessions, or whether the user could start simultaneous sessions with several Id Tags.","enum":["single_session","multiple_simultaneous_sessions_per_idtag","simultaneous_use_of_idtags","multiple_simultaneous_sessions_remotely_and_idtags"]}}},"password":{"type":"string","readOnly":true,"nullable":true,"description":"Returns the hashed password. This property is optional and can be enabled by request.\n"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"lastActivityAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true,"description":"When the user was last active"},"lastActivitySource":{"type":"string","readOnly":true,"nullable":true,"enum":["device_activity","device_logout","id_tag_authorization","transaction","registration"],"description":"What triggered the last activity update"},"createdBy":{"type":"string","readOnly":true,"description":"The return values are `admin:` , `partner:` - the value after the colon is the respective ID of the admin account or the partner. `token:` - the value after the colon is the admin token. `mobile_api` - means that the User registered themselves through the mobile app."},"receiveNewsAndPromotions":{"type":"boolean","description":"Shows if the user has opted into receiving news and promotions."},"skipPreAuthorization":{"type":"boolean","description":"When enabled, the user can start charging sessions without a pre-authorization hold on their payment method."},"skipUnpaidSessionCheck":{"type":"boolean","description":"When enabled, this user can start new sessions even if previous sessions have pending payment status."},"partnerInvites":{"type":"array","description":"It's a part of the response only if request is called with `include.partnerInvites` query parameter.","readOnly":true,"nullable":true,"items":{"type":"object","description":"Partner Invite","properties":{"id":{"type":"integer","readOnly":true},"partnerId":{"type":"integer"},"sendViaEmail":{"type":"boolean"},"email":{"type":"string","description":"Required by default, but if `sendViaEmail` is false, then `email` is null.","format":"email","nullable":true},"language":{"type":"string","description":"The language of the e-mail sent to the invitee. If none selected, the default end-users language will be used."},"acceptUrl":{"type":"string","format":"url","readOnly":true,"nullable":true},"options":{"type":"object","properties":{"allowCorporateAccountBilling":{"type":"boolean","default":false},"limitCorporateAccountBillingToPartnerChargePoints":{"type":"boolean","description":"Required if allowCorporateAccountBilling is true","default":false},"allowAccessToPrivateChargePoints":{"type":"boolean","default":false},"corporateBillingLimit":{"type":"number","format":"decimal","nullable":true,"minimum":0,"description":"The individual corporate billing limit amount. Must be a positive decimal when set. When `null`, no individual limit is applied. Only applicable when `allowCorporateAccountBilling` is `true`."}}},"status":{"type":"string","enum":["pending","sent","accepted"],"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"acceptedAt":{"type":"string","format":"date-time","readOnly":true,"nullable":true},"userId":{"type":"integer","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","partnerId","status","createdAt"]}},"bankDetails":{"type":"object","properties":{"bankIban":{"type":"string","nullable":true,"description":"IBAN that is provided for the user."},"bankName":{"type":"string","nullable":true,"description":"Name of the Bank for which the user has provided IBAN."},"bankAddress":{"type":"string","nullable":true,"description":"Address of the user's Bank."},"bankCode":{"type":"string","nullable":true,"description":"Bank code assigned by a central bank, a bank supervisory body or a Bankers Association in the country."},"bankAccountNumber":{"type":"string","nullable":true,"description":"Bank account ID provided by the user."},"bankAccountType":{"type":"string","nullable":true,"description":"Type of account the user has provided."}}},"externalAppData":{"example":{"externalCustomerId":"uuid"},"description":"The externalAppData field is an object designed to hold additional data related to external integrations.\nThis object can contain the following keys, which are currently supported:\n\n- `externalCustomerId`: A string representing the customer ID of the user in an external payment provider integration. This ID is used to link the user's account within the system to their corresponding account in the external payment provider.\n\nIf no information is available, the externalAppData object will be null. It's a part of the response only if request is called with `include.externalAppData` query parameter.\n","type":"object","nullable":true,"additionalProperties":true},"invoiceDetails":{"description":"The user's invoice details for invoice generation. The response structure varies depending on the operator's invoice integration type.\nIt's a part of the response only if request is called with `include[]=invoiceDetails` query parameter.\nReturns `null` if the user has no invoice details or the operator has no invoice integration configured.\n","readOnly":true,"type":"object","nullable":true,"oneOf":[{"type":"object","title":"Built-in invoicing","description":"Built-in invoice processor","properties":{"requireInvoice":{"type":"boolean","default":false,"description":"Whether invoice is required for this user. Note: If the operator has 'Always collect Invoice Details' enabled in their invoice integration settings, this field will always be true regardless of the request payload value."},"requireInvoiceLastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. The date is automatically updated when the value of the \"requireInvoice\" field changes.","readOnly":true,"nullable":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"requireInvoiceEnforcedBy":{"type":"string","enum":["operator_setting","user_request"],"description":"Indicates the source that determined the final requireInvoice value. Only present when operator setting overrides user request.","nullable":true},"originalRequestValue":{"type":"boolean","description":"The originally requested requireInvoice value when operator override occurred. Only present when requireInvoiceEnforcedBy is 'operator_setting'.","nullable":true},"invoiceType":{"type":"string","enum":["individual","company"],"nullable":true},"individualName":{"type":"string","nullable":true},"individualPersonalId":{"type":"string","nullable":true},"individualTaxId":{"type":"string","nullable":true},"companyName":{"type":"string","nullable":true},"companyRegNo":{"type":"string","nullable":true},"companyTaxId":{"type":"string","nullable":true},"companyTaxAdministrationOfficeName":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"region":{"type":"string","nullable":true,"description":"When country is not in US, AU, CA, UM or RO, you can provide the region"},"state":{"description":"When the selected country is one of US, AU, CA, UM or RO","anyOf":[{"title":"US State","description":"When the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"When the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Canadian Province","description":"When the country is CA.","type":"string","enum":["AB","BC","MB","NB","NL","NT","NS","NU","ON","PE","QC","SK","YT"]},{"title":"US Minor Outlying Islands Territory","description":"When the country is UM.","type":"string","enum":["81","84","85","67","89","71","76","95","79"]},{"title":"Romanian County","description":"When the country is RO.","type":"string","enum":["AB","AR","AG","BC","BH","BN","BT","BV","BR","B","BZ","CL","CS","CT","CV","DB","DJ","GL","GR","GJ","HR","HD","IL","IS","IF","MM","MH","MS","NT","OT","PH","SM","SJ","SB","SV","TR","TM","TL","VS","VL","VN"]}]},"city":{"type":"string","nullable":true},"postCode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}},"required":["requireInvoice","invoiceType"],"additionalProperties":false},{"type":"object","title":"Cardcom Invoice Manager","description":"Invoice processor - Cardcom","properties":{"invoiceRequired":{"type":"boolean","default":false},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"clientType":{"type":"string","enum":["individual","company"],"nullable":true},"individual":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},"company":{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"mobilePhoneNumber":{"type":"string","nullable":true},"landlinePhoneNumber":{"type":"string","nullable":true},"taxId":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}},"required":["invoiceRequired","clientType","individual","company"]},{"type":"object","title":"SoftOne Invoice Manager","description":"Invoice processor - SoftOne","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}},{"type":"object","title":"Ecpay Invoice Manager","description":"Invoice processor - Ecpay","properties":{"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"invoiceType":{"type":"string","enum":["EInvoice","Company","Donation"]},"carrierType":{"type":"string","enum":["Mobile","Citizen","GreenWorld"],"nullable":true},"loveCode":{"type":"string","nullable":true},"mobileBarCode":{"type":"string","nullable":true},"citizenId":{"type":"string","nullable":true},"companyId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"],"nullable":true},"city":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"address":{"type":"string","nullable":true}}}]}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"userDeleteV1_1","summary":"User / Delete","description":"Delete a user","tags":["resource / users"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/utilities/v1.0":{"get":{"operationId":"listUtilities","tags":["resource / utilities"],"summary":"Utilities / Listing","description":"Get all Utilities","parameters":[{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The number of items to return per page."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"chargePointsCount":{"type":"integer"},"electricityRatesCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","chargePointsCount","electricityRatesCount","createdAt","lastUpdatedAt"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"createUtility","tags":["resource / utilities"],"summary":"Utilities / Create","description":"Create Utility","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255}},"required":["name"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"chargePointsCount":{"type":"integer"},"electricityRatesCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","chargePointsCount","electricityRatesCount","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/utilities/v1.0/{utility}":{"get":{"operationId":"getUtility","tags":["resource / utilities"],"summary":"Utilities / Read","description":"Get a single Utility","parameters":[{"in":"path","name":"utility","description":"The ID of the utility","schema":{"type":"integer"},"required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"chargePointsCount":{"type":"integer"},"electricityRatesCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","chargePointsCount","electricityRatesCount","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"put":{"operationId":"updateUtility","tags":["resource / utilities"],"summary":"Utilities / Update","description":"Update a single Utility","parameters":[{"in":"path","name":"utility","description":"The ID of the utility","schema":{"type":"integer"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255}},"required":["name"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"name":{"type":"string"},"chargePointsCount":{"type":"integer"},"electricityRatesCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","chargePointsCount","electricityRatesCount","createdAt","lastUpdatedAt"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"deleteUtility","tags":["resource / utilities"],"summary":"Utilities / Delete","description":"Delete a single Utility","parameters":[{"in":"path","name":"utility","description":"The ID of the utility","schema":{"type":"integer"},"required":true}],"responses":{"204":{"description":"Success"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vendor-error-codes/v2.0":{"get":{"operationId":"vendorErrorCodesListing","tags":["resource / vendor error codes"],"summary":"Vendor Error Codes / Listing","description":"Get all Vendor Error Codes","parameters":[{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"vendorErrorCodeCreate","tags":["resource / vendor error codes"],"summary":"Vendor Error Code / Create","description":"Create new Vendor Error Code","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}}}},"responses":{"201":{"description":"Vendor Error Codes created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vendor-error-codes/v2.0/{vendorErrorCode}":{"parameters":[{"name":"vendorErrorCode","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"vendorErrorCodeRead","summary":"Vendor Error Code / Read","description":"Get a Vendor Error Code","tags":["resource / vendor error codes"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"vendorErrorCodeUpdate","summary":"Vendor Error Code / Update","description":"Vendor Error Code","tags":["resource / vendor error codes"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}}}},"responses":{"200":{"description":"Vendor Error Codes updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"vendorId":{"type":"string","description":"Unique identifier of the Vendor, reported from the Charge point"},"errorCode":{"type":"string","description":"The code reported from the charge point when the hardwareStatus is faulted"},"errorCodeDescription":{"type":"string","description":"Description of the error provided by the vendor","nullable":true},"errorCodeCustomerAction":{"type":"string","description":"Recommended actions by the customer when this error occurs","nullable":true}},"required":["vendorId","errorCode"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"vendorErrorCodeDelete","summary":"Vendor Error Code / Delete","description":"Delete a Vendor Error Code","tags":["resource / vendor error codes"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vouchers/v2.0":{"get":{"operationId":"vouchersListingDeprecated","deprecated":true,"tags":["resource / vouchers"],"summary":"Vouchers / Listing","description":"Get all Vouchers","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"],"description":"Lists only vouchers that are with one of these types `voucher`, `manual_top_up`, `top_up_auto`, `auto_top_up`, `top_up_by_operator`, `api_top_up`, `promo_code`, `subscribe_to_plan`."},"status":{"type":"string","enum":["enabled","disabled"],"description":"Lists only the vouchers that are with one of these statuses `enabled`, `disabled`."},"createdAt":{"type":"string","format":"date","description":"Lists only vouchers that are created on a particular date. Please provide the value in the following format `yyyy-mm-dd`."},"redeemedAfter":{"type":"string","format":"date-time","description":"Lists only vouchers that are redeemed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"redeemedBefore":{"type":"string","format":"date-time","description":"Lists only vouchers that were redeemed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"userId":{"type":"integer","description":"Lists only vouchers that were redeemed by a particular user."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currency":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","code","amount","createdAt","type","currency"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"voucherCreateDeprecated","deprecated":true,"tags":["resource / vouchers"],"summary":"Voucher / Create","description":"Create new Voucher","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount"],"properties":{"amount":{"type":"number","format":"float"},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"description":{"type":"string"}}}}}},"responses":{"201":{"description":"Voucher created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currency":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","code","amount","createdAt","type","currency"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vouchers/v2.0/{voucher}":{"parameters":[{"name":"voucher","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"voucherReadDeprecated","deprecated":true,"summary":"Voucher / Read","description":"Get a Voucher","tags":["resource / vouchers"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currency":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","code","amount","createdAt","type","currency"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"voucherUpdateDeprecated","deprecated":true,"summary":"Voucher / Update","description":"Update a Voucher","tags":["resource / vouchers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"amount":{"type":"number","format":"float"}},"required":["amount"]}}}},"responses":{"200":{"description":"Voucher updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currency":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","code","amount","createdAt","type","currency"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"voucherDeleteDeprecated","deprecated":true,"summary":"Voucher / Delete","description":"Delete a Voucher","tags":["resource / vouchers"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vouchers/v2.1":{"get":{"operationId":"vouchersListing","tags":["resource / vouchers"],"summary":"Vouchers / Listing","description":"Get all Vouchers","parameters":[{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"],"description":"Lists only vouchers that are with one of these types `voucher`, `manual_top_up`, `top_up_auto`, `auto_top_up`, `top_up_by_operator`, `api_top_up`, `promo_code`, `subscribe_to_plan`."},"status":{"type":"string","enum":["enabled","disabled"],"description":"Lists only the vouchers that are with one of these statuses `enabled`, `disabled`."},"createdAt":{"type":"string","format":"date","description":"Lists only vouchers that are created on a particular date. Please provide the value in the following format `YYYY-MM-DD`."},"redeemedAfter":{"type":"string","format":"date-time","description":"Lists only vouchers that are redeemed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"redeemedBefore":{"type":"string","format":"date-time","description":"Lists only vouchers that were redeemed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"userId":{"type":"integer","description":"Lists only vouchers that were redeemed by a particular user."},"expireDateAfter":{"type":"string","format":"date","description":"Lists only vouchers with expiration date after the specified date. Please provide the value in RFC 3339 formatted date `YYYY-MM-DD`."},"expireDateBefore":{"type":"string","format":"date","description":"Lists only vouchers with expiration date before the specified date. Please provide the value in RFC 3339 formatted date `YYYY-MM-DD`."},"code":{"type":"string","description":"Lists only vouchers with code which contains the specified string. Please provide min 3 chars value."}}}},{"in":"query","name":"page","deprecated":true,"schema":{"type":"integer","default":1},"description":"DEPRECATED - Sunset date: Mon, 01 Jun 2026\n\nThe page number to fetch (defaults to 1). Not used in cursor pagination.\n\n**This parameter is deprecated and will be removed on Mon, 01 Jun 2026.**\n\nUse cursor pagination instead for better performance and consistency. See the cursor parameter below for details.\n"},{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return. Used in both page and cursor pagination to declare the page size."},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The cursor to fetch the next page.\n\n**Do not construct this value manually.** Use one of the following methods:\n- Use the value from the previous response's `links.next` to fetch the next page\n- Pass an empty string (e.g., `?cursor` or `?cursor=`) to initiate cursor pagination on the first page\n"}],"responses":{"200":{"description":"Success","headers":{"Deprecation":{"description":"Indicates offset pagination is deprecated. Present only when the `page` parameter is used. Follows RFC 9745 (Deprecation HTTP Header Field) specification.","schema":{"type":"string","example":"@1764633600"}},"Sunset":{"description":"Date when offset pagination will be removed. Present only when the `page` parameter is used. Follows RFC 7231 HTTP-date format.","schema":{"type":"string","example":"Mon, 01 Jun 2026 00:00:00 GMT"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","nullable":true,"description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currencyCode":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"remainingAmount":{"type":"number","format":"float"},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["id","operatorId","code","amount","createdAt","type","currencyCode","remainingAmount"]}},"links":{"type":"object","properties":{"first":{"type":"string","description":"The URL to fetch the first page","nullable":true},"last":{"type":"string","description":"The URL to fetch the last page","nullable":true},"prev":{"type":"string","description":"The URL to fetch the previous page","nullable":true},"next":{"type":"string","description":"The URL to fetch the next page. Use this link always in order to utilize the cursor pagination","nullable":true}}},"meta":{"anyOf":[{"title":"Basic Pagination (DEPRECATED)","type":"object","deprecated":true,"description":"**DEPRECATED - Sunset date: Sun, 01 Jun 2026**\n\nIn case of basic pagination (using the `page` parameter), the meta object will contain the following properties.\n\n**This pagination type is deprecated and will be removed on Sun, 01 Jun 2026.**\n\nPlease migrate to cursor pagination for better performance and consistency. Cursor pagination provides:\n- Consistent performance regardless of dataset size\n- Reliable pagination even with concurrent data changes\n- Simpler navigation using cursor tokens\n\nSee the cursor parameter documentation for migration guidance.\n","properties":{"current_page":{"type":"integer","description":"The number of the current page being fetched"},"from":{"type":"integer","description":"The first of the fetched item's position in the total list","nullable":true},"last_page":{"type":"integer","description":"The number of the past page"},"links":{"type":"array","description":"Array of link objects pointing to the previous/current/next pages","items":{"type":"object","properties":{"url":{"type":"string","nullable":true,"description":"The URL to the previous/current/next page or null if such page does not exist"},"label":{"type":"string","description":"The name of the page that the links should be pointing to"},"active":{"type":"boolean","description":"Is the link active, it will be true only when there is an URL"}}}},"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"to":{"type":"integer","description":"The last of the fetched item's position in the total list","nullable":true},"total":{"type":"integer","description":"The total number of items in the list"}}},{"title":"Cursor Pagination","type":"object","description":"In case of cursor pagination, the meta object will contain the following properties","properties":{"path":{"type":"string","description":"The base route of the endpoint (unpaginated)"},"per_page":{"type":"integer","description":"The max number of items in each page"},"next_cursor":{"type":"string","description":"The cursor to fetch the next page. Do not use this directly. It will be populated by using the previous response's links.next.","nullable":true},"prev_cursor":{"type":"string","description":"The cursor to fetch the previous page. Do not use this directly. It will be populated by using the previous response's links.prev.","nullable":true}}}]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"post":{"operationId":"voucherCreate","tags":["resource / vouchers"],"summary":"Voucher / Create","description":"Create new Voucher","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount"],"properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1},"amount":{"type":"number","format":"float"},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","nullable":true,"description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"description":{"type":"string"},"prefix":{"type":"string","description":"The prefix of the voucher's code.","minLength":3,"maxLength":3},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}}}}}},"responses":{"201":{"description":"Voucher created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","nullable":true,"description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currencyCode":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"remainingAmount":{"type":"number","format":"float"},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["id","operatorId","code","amount","createdAt","type","currencyCode","remainingAmount"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}},"/public-api/resources/vouchers/v2.1/{voucher}":{"parameters":[{"name":"voucher","in":"path","schema":{"type":"integer"},"required":true}],"get":{"operationId":"voucherRead","summary":"Voucher / Read","description":"Get a Voucher","tags":["resource / vouchers"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","nullable":true,"description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currencyCode":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"remainingAmount":{"type":"number","format":"float"},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["id","operatorId","code","amount","createdAt","type","currencyCode","remainingAmount"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"404":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"patch":{"operationId":"voucherUpdate","summary":"Voucher / Update","description":"Update a Voucher","tags":["resource / vouchers"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"amount":{"type":"number","format":"float"},"prefix":{"type":"string","description":"The prefix of the voucher's code.","minLength":3,"maxLength":3},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["amount"]}}}},"responses":{"200":{"description":"Voucher updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"code":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"]},"promoCode":{"type":"string","description":"If the type is `promo_code` here would be given the value of this promo code.","nullable":true},"status":{"type":"string","enum":["enabled","disabled"]},"expireDate":{"type":"string","format":"date","nullable":true,"description":"RFC 3339 formatted date. Defines the date on which the voucher expires. The field can be calculated based on the `redeemedAt` timestamp and the `validityPeriod` field if the `validityPeriod` is set and the `expireDate` is not."},"validityPeriod":{"type":"string","nullable":true,"description":"Defines the validity period for the voucher. When a user redeems the voucher, this period is added to the `redeemedAt` timestamp to calculate the voucher's `expireDate`. This field is only used when `expireDate` is not already set - if `expireDate` has a value, this period is ignored and the defined `expireDate` is used instead.","enum":["2 days","1 week","2 weeks","1 month","3 months","6 months","1 year","2 years","3 years","5 years"]},"assignBeforeDate":{"type":"string","format":"date","nullable":true,"description":"The date before which the voucher should be assigned to user in order to be valid. RFC 3339 formatted date"},"redeemedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"redeemedByUserId":{"type":"integer","nullable":true},"amount":{"type":"number","format":"float"},"currencyCode":{"type":"string","description":"The ISO 4217 3-letter code of the currency"},"description":{"type":"string","nullable":true},"transactionId":{"type":"integer","nullable":true,"description":"The ID of the transaction with which the voucher was purchased."},"createdByAdminId":{"type":"integer","nullable":true,"description":"The ID of the Admin who has created the voucher."},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"remainingAmount":{"type":"number","format":"float"},"title":{"description":"The title of the voucher.","type":"array","items":{"type":"object","properties":{"locale":{"type":"string","description":"valid locale"},"translation":{"type":"string"}}}}},"required":["id","operatorId","code","amount","createdAt","type","currencyCode","remainingAmount"]}}}}}},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"422":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}},"delete":{"operationId":"voucherDelete","summary":"Voucher / Delete","description":"Delete a Voucher","tags":["resource / vouchers"],"responses":{"204":{"description":"Deleted successfully"},"401":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"403":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"429":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}},"components":{"parameters":{"signature":{"in":"header","name":"X-Signature","description":"SHA256-HMAC signature of the content using the access token","schema":{"type":"string"}},"page":{"in":"query","name":"page","schema":{"type":"integer","default":1},"description":"The page number to fetch (defaults to 1)"},"per_page":{"in":"query","name":"per_page","schema":{"type":"integer","default":100,"minimum":1,"maximum":100},"description":"The numbers of items to return"},"session_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"evseId":{"type":"string","format":"integer","description":"Only list sessions on a certain EVSE"},"chargePointId":{"type":"string","format":"integer","description":"Only list sessions on a certain Charge Point"},"evsePhysicalReference":{"type":"string","description":"Only list sessions on a certain EVSE, identified by the phisicalReference"},"chargePointNetworkId":{"type":"string","description":"Only list sessions on a certain Charge Point, identified by the NetworkId"},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connect_to_evse","authorization_failed","unknown_session"]},"chargePointBootNotificationSerialNumber":{"type":"string","description":"Only list sessions on Charge Points with last boot notification that had this charge_point_serial_number"},"chargePointBootNotificationVendor":{"type":"string","description":"Only list sessions on Charge Points with last boot notification that had this vendor"},"startedAfter":{"type":"string","format":"date-time","description":"Only list sessions identified by the start time being after this datetime"},"startedBefore":{"type":"string","format":"date-time","description":"Only list sessions identified by the start time being before this datetime"},"userId":{"type":"string","format":"integer","description":"Only list sessions by a certain user"},"status":{"type":"string","description":"Only list session in this status","enum":["unknown","pending","active","finished","expired","failed"]},"endedAfter":{"type":"string","format":"date-time","description":"Only list sessions identified by the end time being after this datetime"},"endedBefore":{"type":"string","format":"date-time","description":"Only list sessions identified by the end time being before this datetime"},"partnerId":{"type":"string","format":"integer","description":"Only list sessions on charge points owned by a certain partner"},"userPartnerId":{"type":"string","format":"integer","description":"Only list sessions where the user belongs to a certain partner (through accepted invites)"},"subOperatorId":{"type":"string","format":"integer","description":"Only list sessions associated with partners, assigned to certain sub-operator"},"locationId":{"type":"string","format":"integer","description":"Only list sessions on EVSEs belonging to charge points at the specified location"},"idTag":{"type":"string","description":"Only list sessions started with a specific idTag (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"paymentType":{"type":"string","description":"`bank_transfer` is used for one-time bank transfers, for saved (tokenized) bank transfers use `tokenized`.","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"selectedPaymentMethod":{"type":"array","items":{"type":"string","enum":["corporate","subscription","balance","bank_transfer","payment_terminal","external","visa","mastercard","maestro","amex","paypal","unknown","apple_pay","google_pay","twint","bancontact","other"]},"description":"Filter sessions by the payment method selected when starting the session. Supports multiselect (OR logic).\n\n**General payment types:**\n- `corporate` - Sessions with corporate account selected as payment method\n- `subscription` - Sessions with user subscription selected as payment method\n- `balance` - Sessions with balance selected as payment method\n- `bank_transfer` - Sessions with bank transfer selected as payment method\n- `payment_terminal` - Sessions initiated via payment terminal\n- `external` - Sessions with external billing\n\n**Card networks:**\n- `visa`, `mastercard`, `maestro`, `amex`, `paypal` - Sessions with specific card network selected as payment method\n- `unknown` - Sessions with card selected where network is not identified\n\n**Digital wallets:**\n- `apple_pay`, `google_pay` - Sessions with Apple Pay or Google Pay selected as payment method\n- `twint`, `bancontact` - Sessions with Twint or Bancontact selected as payment method\n- `other` - Sessions with other digital wallet selected as payment method\n"},"paymentStatus":{"type":"string","enum":["pending","paid","partially","failed"]},"taxId":{"type":"string","format":"integer","description":"Only list sessions with specific VAT id"},"paymentStatusUpdatedBefore":{"type":"string","format":"date-time","description":"Only list sessions with payment status updated before the specified date and time. Please provide the value in ISO 8601 formatted date."},"paymentStatusUpdatedAfter":{"type":"string","format":"date-time","description":"Only list sessions with payment status updated after the specified date and time. Please provide the value in ISO 8601 formatted date."},"billingCompletedBefore":{"type":"string","format":"date-time","description":"Only list sessions with billing completed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"billingCompletedAfter":{"type":"string","format":"date-time","description":"Only list sessions with billing completed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"externalAppData":{"type":"string","description":"Only list records with specific external application data. You can use a dot notation to search for nested properties. For example, `filter[externalAppData.property1.property2]=value`.","example":"filter[externalAppData.property1.property2]=value"},"receiptId":{"type":"string","format":"integer","description":"Only list sessions with specific receipt id."},"authorizationSource":{"type":"string","enum":["roaming","local","third_party"],"description":"Filter sessions based on authorization source"},"billingStatus":{"type":"string","description":"Only list sessions in this billing status.","enum":["pending","suspended","completed","null"]},"terminalId":{"type":"string","format":"integer","description":"Only list sessions with transaction(s) with specific payment terminal id."},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the specific resource that was last updated on and before this datetime"},"roaming":{"type":"object","properties":{"roamingOperatorCpoIds":{"type":"array","items":{"type":"integer"},"description":"Only list sessions initiated on the EVSEs of a specific Roaming operator with a CPO role."},"roamingOperatorEmspIds":{"type":"array","items":{"type":"integer"},"description":"Filter sessions by the EMSP operator that authorized the session. Accepts one or more roaming operator IDs with EMSP role."},"roamingConnectionIds":{"type":"array","items":{"type":"integer"},"description":"Filter sessions by roaming connection. Accepts one or more roaming connection IDs."}}}}}},"session_id":{"in":"path","name":"session-id","description":"The session ID to fetch","schema":{"type":"string"},"required":true},"session":{"in":"path","name":"session","description":"The session ID to fetch","schema":{"type":"string"},"required":true},"session_with_authorization":{"in":"query","name":"withAuthorization","schema":{"type":"boolean","default":false}},"session_with_charging_periods":{"in":"query","name":"withChargingPeriods","schema":{"type":"boolean","default":false}},"session_with_price_breakdown":{"in":"query","name":"withPriceBreakdown","schema":{"type":"boolean","default":false}},"clockAlignedInterval":{"in":"query","name":"clockAlignedInterval","schema":{"type":"integer","enum":[15,30,60],"default":15}},"withClockAlignedEnergyConsumption":{"in":"query","name":"withClockAlignedEnergyConsumption","schema":{"type":"boolean","default":false}},"user_id":{"in":"path","name":"user-id","schema":{"type":"integer"},"required":true},"user":{"in":"path","name":"user","schema":{"type":"integer"},"required":true},"userId":{"in":"path","name":"userId","schema":{"type":"integer"},"required":true},"user_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"userGroupId":{"type":"string","format":"integer","description":"Only list users that belong to a certain user group"},"partnerId":{"type":"string","format":"integer","description":"Only list users attached to the partner."},"externalId":{"type":"string","description":"Only list users with specific external id"},"email":{"type":"string","description":"Only list user with specific email"},"externalAppData":{"type":"string","description":"Only list records with specific external application data. You can use a dot notation to search for nested properties. For example, `filter[externalAppData.property1.property2]=value`.","example":"filter[externalAppData.property1.property2]=value"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the users that were last updated on and before this datetime","type":"string","format":"date-time"},"lastActivityBefore":{"description":"ISO 8601 formatted date. Lists only the users whose last activity was before the specified date. Users with no recorded activity are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or after this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"invoiceDetailsLastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only users whose invoice details were last updated on or before this datetime. Users without invoice details or with null invoiceDetailsLastUpdatedAt are excluded.","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only users that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only users that were created on and before this datetime","type":"string","format":"date-time"}}}},"user_include":{"in":"query","name":"include","style":"deepObject","schema":{"type":"array","items":{"type":"string","enum":["partnerInvites","externalAppData","invoiceDetails"]}}},"payment_method_id":{"in":"path","name":"payment-method-id","schema":{"type":"string"},"required":true},"paymentMethodId":{"in":"path","name":"paymentMethodId","schema":{"type":"string"},"required":true},"transaction_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions created after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions created before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions that were last updated after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions that were last updated before this datetime"},"paymentMethod":{"type":"string","description":"Only list transactions by type of payment method","enum":["visa","mastercard","paypal","maestro","amex","unknown","applepay","googlepay","twint","other"]},"userId":{"type":"string","format":"integer","description":"Only list transactions by a certain user"},"invoiceNumber":{"type":"string","description":"Filter transactions by invoice number string (e.g., \"INV-2024-001\"). Use this when you have the human-readable invoice number. To filter by the invoice's database ID, use invoiceId instead."},"status":{"type":"string","description":"Only list transaction in this status","enum":["pending","finalized","failed","reserved","refunded","authorized","initialized"]},"sessionId":{"type":"string","format":"integer","description":"Only list transaction with this session id"},"ref":{"type":"string","description":"Only list transactions with specific ref number."},"billingType":{"type":"string","description":"Only list transactions with the selected billing type.","enum":["internal","external"]},"terminalId":{"type":"string","format":"integer","description":"Only list transactions with specific payment terminal id."},"finalizedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions finalized before this datetime"},"finalizedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the transactions finalized after this datetime"},"voucherId":{"type":"string","format":"integer","description":"Only list transactions paid with this specific voucher id."},"receiptId":{"type":"string","format":"integer","description":"Only list transactions associated with this specific receipt database ID."},"invoiceId":{"type":"string","format":"integer","description":"Filter transactions by invoice's internal database ID as returned in the transaction response. Use this when you have the invoiceId from a previous API response. To filter by the human-readable invoice number string, use invoiceNumber instead."},"purchaseType":{"type":"array","description":"Only list transactions with the specified purchase type(s). Determines what the transaction was for based on its associated entity.","items":{"type":"string","enum":["session","subscription_plan","topup_package","custom_fee","payment_terminal_authorisation","payment_authorisation"]}},"subscriptionBillingPeriodId":{"type":"string","format":"integer","description":"Only list transactions belonging to this subscription billing period. Returns both the settlement payment transaction and all obligation transactions (sessions, base fee, charger fees) for the billing period."},"settledByTransactionId":{"type":"string","format":"integer","description":"Only list transactions that were settled by this specific transaction. Given a settlement transaction ID, returns all obligation transactions (sessions, base fee, charger fees) that were settled by that payment."}}}},"transaction_id":{"in":"path","name":"transaction-id","description":"The Transation ID to fetch","schema":{"type":"string"},"required":true},"transaction":{"in":"path","name":"transaction","description":"The Transation ID to fetch","schema":{"type":"string"},"required":true},"currency":{"in":"path","name":"currency","schema":{"type":"integer"},"required":true},"charge_point_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"desiredSecurityProfileStatus":{"type":"string","enum":["applied","pending","rejected"],"description":"The value of the desiredSecurityProfileStatus by which to filter"},"evseId":{"type":"string","format":"integer","description":"Only list charge point on a certain EVSE"},"evsePhysicalReference":{"type":"string","description":"Only list charge point on a certain EVSE, identified by the physicalReference"},"physicalReference":{"type":"string","description":"Only list charge point, identified by id"},"chargePointNetworkId":{"type":"string","description":"Only list charge point, identified by the NetworkId"},"chargePointBootNotificationSerialNumber":{"type":"string","description":"Only list charge points with last boot notification that had this charge_point_serial_number"},"userId":{"type":"string","format":"integer","description":"Only list charge points owned by a certain user"},"partnerId":{"type":"string","format":"integer","description":"Only list charge points owned by a certain partner"},"accessType":{"type":"string","enum":["public","private","personal"],"description":"Only list charge points with this access type"},"subOperatorId":{"type":"string","format":"integer","description":"Only list charge point for a given subOperator"},"roaming":{"type":"string","format":"boolean","description":"When true - returns only roaming charge points. When false - returns only local charge points."},"name":{"type":"string","description":"Exact charge point name"},"locationId":{"type":"string","format":"integer","description":"Only list charge points assigned to the location"},"managedByOperator":{"type":"string","format":"boolean","description":"Only list charge points that are managed by operator or not"},"externalId":{"type":"string","description":"Only list charge point, identified by the External ID of the charge point"},"evseExternalId":{"type":"string","description":"Only list charge point, identified by the External ID of the EVSE"},"tag":{"type":"string","description":"Only list charge points that have the specific tag assigned."}}}},"evse_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"chargePointId":{"type":"string","format":"integer","description":"Only list EVSE on a certain charge point"},"physicalReference":{"type":"string","description":"Only list EVSE, identified by id (QR Code)"},"evseStatus":{"type":"string","enum":["active","disabled","out of order"]},"hardwareStatus":{"type":"string","enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Only list EVSE with this hardware status"},"evseType":{"type":"string","enum":["ac","dc"],"description":"Only list EVSE with this type"},"connectorId":{"type":"string","format":"integer","description":"Only list EVSE with this connector"},"tariffGroupId":{"type":"string","format":"integer","description":"Only list EVSE with this tariff group"},"partnerId":{"type":"string","format":"integer","description":"Only list EVSE with this partner"},"roamingPlatformId":{"type":"string","format":"integer","description":"Only list EVSE with this roaming platform"}}}},"tariff_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"tariffGroupId":{"type":"string","format":"integer","description":"Only list tariffs in a certain group"},"userId":{"type":"string","format":"integer","description":"Can only be used with `tariffGroupId`. When set, a single tariff of the group will be returned (no meta or link props will be included), that will be applied to the when the given user is charging. Note that when you set it to empty (null) then the tariff for anonymous charging will be returned"},"type":{"type":"string","description":"Only list tariff of this specific type"},"partnerId":{"type":"string","format":"integer","description":"Only list tariffs managed by certain partner."}}}},"tariff_group_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"partnerId":{"type":"number","description":"Only list tariff groups managed by certain partner."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the tariff groups that were created on and before this datetime","type":"string","format":"date-time"}}}},"subOperator":{"in":"path","name":"subOperator","schema":{"type":"integer"},"required":true},"subscription_id":{"in":"path","name":"subscription","description":"The subscription ID","schema":{"type":"integer"},"required":true},"custom_fee_id":{"in":"path","name":"customFee","description":"The custom fee ID","schema":{"type":"integer"},"required":true},"subscription_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"planId":{"type":"string","format":"number"},"startedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions started on or after this ISO 8601 formatted datetime"},"startedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions started on or before this ISO 8601 formatted datetime"},"endedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or after this ISO 8601 formatted datetime"},"endedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or before this ISO 8601 formatted datetime"},"endDateFrom":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or after this ISO 8601 formatted datetime","deprecated":true},"endDateTo":{"type":"string","format":"date-time","description":"Filter subscriptions ended on or before this ISO 8601 formatted datetime","deprecated":true},"status":{"type":"string","enum":["active","canceled","expired","suspended","pending"]},"statusChangedAfter":{"type":"string","format":"date-time","description":"Filter subscriptions with status changed on or after this ISO 8601 formatted datetime. Requires the status filter to be provided."},"statusChangedBefore":{"type":"string","format":"date-time","description":"Filter subscriptions with status changed on or before this ISO 8601 formatted datetime. Requires the status filter to be provided."},"billedExternally":{"type":"string","format":"boolean","description":"Applicable only when the system uses both payment processor and external billing mode simultaneously. Show or hide subscriptions where users have enabled \"External billing\" (if allowed by the Billing settings)."}}}},"subscription_plan_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were created on and before this datetime","type":"string","format":"date-time"},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the subscription plans that were last updated on and before this datetime","type":"string","format":"date-time"}}}},"subscription_plan_id":{"in":"path","name":"subscription-plan-id","description":"The ID of the subscription plan","schema":{"type":"integer"},"required":true},"subscriptionPlan":{"in":"path","name":"subscriptionPlan","description":"The ID of the subscription plan","schema":{"type":"integer"},"required":true},"topUpPackage":{"in":"path","name":"topUpPackage","description":"The ID of the Top-Up Package","schema":{"type":"integer"},"required":true},"taxIdentificationNumber":{"in":"path","name":"taxIdentificationNumber","description":"The ID of the Tax Identification Number","schema":{"type":"integer"},"required":true},"faq":{"in":"path","name":"faq","description":"The ID of the FAQ","schema":{"type":"integer"},"required":true},"timestamp":{"in":"header","name":"X-Timestamp","description":"ISO-8601 format timestamp including microseconds in Zulu timezone","schema":{"type":"string"}},"tenant_id":{"in":"header","name":"X-Tenant","description":"The tenant ID the notification is associated with","schema":{"type":"string"}},"webhookId":{"in":"header","name":"X-Webhook-Id","description":"The notification id of the subscription","schema":{"type":"string"}},"webhookType":{"in":"header","name":"X-Webhook-Type","description":"The notification type","schema":{"type":"string"}},"electricityRate":{"in":"path","name":"electricityRate","description":"The ID of the electricity rate","schema":{"type":"integer"},"required":true},"partnerContract":{"in":"path","name":"partnerContract","description":"The ID of the partner contract","schema":{"type":"integer"},"required":true},"partner_contract_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"contractType":{"type":"string","enum":["revenueSharing","paymentFacilitation"],"description":"Lists only partner contracts with the specified contract type."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the partner contracts that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the partner contracts that were last updated on and before this datetime","type":"string","format":"date-time"},"createdAfter":{"description":"ISO 8601 formatted date. Lists only the partner contract records that were created on and after this datetime","type":"string","format":"date-time"},"createdBefore":{"description":"ISO 8601 formatted date. Lists only the partner contract records that were created on and before this datetime","type":"string","format":"date-time"}}}},"location_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"postCode":{"description":"The location post code","type":"string"},"partnerId":{"description":"To list Locations that have charge points of a specific Partner, use the ID of the Partner. To list locations that have only charge points that don't have a Partner assigned, use null","type":"string","nullable":true},"country":{"description":"The location country","type":"string"},"status":{"description":"The location status","type":"string"},"externalId":{"description":"The location external ID","type":"string","nullable":true}}}},"tax":{"in":"path","name":"tax","description":"The ID of the Tax","schema":{"type":"integer"},"required":true},"rfid_tag_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"rfidTagUid":{"type":"string","format":"integer","description":"Only list RFID tags with a certain UID"},"rfidLabel":{"type":"string","description":"Only list RFID tags with a certain label"},"userId":{"type":"string","format":"integer","description":"Only list RFID tags with a certain user id"},"expireAt":{"type":"string","format":"date-time","description":"Only list RFID tags that have an expiration date grater or equal to the supplied date"},"status":{"type":"string","description":"Only list RFID tags in this status","enum":["active","disabled","suspended"]},"type":{"type":"string","description":"Only list RFID tags in this type","enum":["rfid","mac_address","emaid"]}}}},"id_tag_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"idTagUid":{"type":"string","format":"integer","description":"Only list Id tags with a certain UID"},"idLabel":{"type":"string","description":"Only list Id tags with a certain label"},"userId":{"type":"string","format":"integer","description":"Only list Id tags with a certain user id"},"expireAt":{"type":"string","format":"date-time","description":"Only list Id tags that have an expiration date grater or equal to the supplied date"},"status":{"type":"string","description":"Only list Id tags in this status","enum":["enabled","disabled","suspended"]},"type":{"type":"string","description":"Only list Id tags in this type","enum":["rfid","mac_address","emaid"]},"partnerId":{"type":"string","format":"integer","nullable":true,"description":"Only list ID tags assigned to the specified Partner ID. Pass null to list ID tags without a Partner assigned."},"lastUpdatedAfter":{"description":"ISO 8601 formatted date. Lists only the id tags that were last updated on and after this datetime","type":"string","format":"date-time"},"lastUpdatedBefore":{"description":"ISO 8601 formatted date. Lists only the id tags that were last updated on and before this datetime","type":"string","format":"date-time"}}}},"top_up_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"enabled":{"type":"string","format":"boolean","description":"Only list enabled or disabled Top-Up Packages"}}}},"voucher_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"],"description":"Lists only vouchers that are with one of these types `voucher`, `manual_top_up`, `top_up_auto`, `auto_top_up`, `top_up_by_operator`, `api_top_up`, `promo_code`, `subscribe_to_plan`."},"status":{"type":"string","enum":["enabled","disabled"],"description":"Lists only the vouchers that are with one of these statuses `enabled`, `disabled`."},"createdAt":{"type":"string","format":"date","description":"Lists only vouchers that are created on a particular date. Please provide the value in the following format `yyyy-mm-dd`."},"redeemedAfter":{"type":"string","format":"date-time","description":"Lists only vouchers that are redeemed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"redeemedBefore":{"type":"string","format":"date-time","description":"Lists only vouchers that were redeemed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"userId":{"type":"integer","description":"Lists only vouchers that were redeemed by a particular user."}}}},"voucher_filter_v21":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"type":{"type":"string","enum":["voucher","manual_top_up","auto_top_up","top_up_by_operator","api_top_up","promo_code","subscribe_to_plan"],"description":"Lists only vouchers that are with one of these types `voucher`, `manual_top_up`, `top_up_auto`, `auto_top_up`, `top_up_by_operator`, `api_top_up`, `promo_code`, `subscribe_to_plan`."},"status":{"type":"string","enum":["enabled","disabled"],"description":"Lists only the vouchers that are with one of these statuses `enabled`, `disabled`."},"createdAt":{"type":"string","format":"date","description":"Lists only vouchers that are created on a particular date. Please provide the value in the following format `YYYY-MM-DD`."},"redeemedAfter":{"type":"string","format":"date-time","description":"Lists only vouchers that are redeemed after the specified date and time. Please provide the value in ISO 8601 formatted date."},"redeemedBefore":{"type":"string","format":"date-time","description":"Lists only vouchers that were redeemed before the specified date and time. Please provide the value in ISO 8601 formatted date."},"userId":{"type":"integer","description":"Lists only vouchers that were redeemed by a particular user."},"expireDateAfter":{"type":"string","format":"date","description":"Lists only vouchers with expiration date after the specified date. Please provide the value in RFC 3339 formatted date `YYYY-MM-DD`."},"expireDateBefore":{"type":"string","format":"date","description":"Lists only vouchers with expiration date before the specified date. Please provide the value in RFC 3339 formatted date `YYYY-MM-DD`."},"code":{"type":"string","description":"Lists only vouchers with code which contains the specified string. Please provide min 3 chars value."}}}},"custom_fee_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}},"roaming_tariff_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only roaming tariffs created on or after this datetime."},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only roaming tariffs created on or before this datetime."}}}},"receipt_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"userId":{"type":"string","format":"integer","description":"Only list Receipts with a certain user id"},"taxId":{"type":"string","format":"integer","description":"Only list Receipts with specific VAT id"},"paymentStatus":{"type":"string","enum":["pending","paid","partially_paid"]},"periodStart":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"periodEnd":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"},"issuedFrom":{"type":"string","format":"date","description":"Filter receipts issued on or after this date (inclusive)"},"issuedTo":{"type":"string","format":"date","description":"Filter receipts issued on or before this date (inclusive)"}}}},"receipt_id":{"in":"path","name":"receipt","description":"The Receipt ID","schema":{"type":"integer"},"required":true},"authorization_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"createdAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created after this datetime"},"createdBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations created before this datetime"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated after this datetime"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only the authorizations that were last updated before this datetime"},"status":{"type":"string","description":"Lists only authorizations with one of the following statuses: \"accepted\", \"rejected\", \"pending\""},"method":{"type":"string","description":"Lists only authorizations with one of the following methods: \"user_device\", \"id_tag\", \"mac_address\", \"admin\", \"plug_and_charge\", \"roaming\", \"payment_terminal\", \"plug_and_charge_iso15118\""},"partnerId":{"type":"integer","description":"Lists only authorizations of users who are associated to a particular partner"}}}},"terms_and_policies_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"documentId":{"type":"integer"},"validFrom":{"type":"string","format":"date-time","description":"ISO 8601 formatted date"}}}},"expenses_with_breakdown":{"in":"query","name":"withBreakdown","description":"A detailed information about the expense \"platform-fee-cpo\" is returned, based on the contract details.","schema":{"type":"boolean","default":false}},"electricity_rate_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"utilityId":{"type":"integer"}}}},"utility":{"in":"path","name":"utility","description":"The ID of the utility","schema":{"type":"integer"},"required":true},"cdr_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"startDateTimeFrom":{"type":"string","format":"date-time","description":"Filters CDRs by the start time, selecting records with a start time equal to or later than the specified value. The date-time should be formatted according to ISO 8601 standards."},"startDateTimeTo":{"type":"string","format":"date-time","description":"Filters CDRs by the start time, selecting records with a start time equal to or earlier than the specified value. This filter helps in selecting records up to a certain start time. The provided date-time should be in ISO 8601 format."},"endDateTimeFrom":{"type":"string","format":"date-time","description":"This filter retrieves CDRs with an end time equal to or later than the specified value. It helps filter records based on the end of a timeframe, ensuring that only records ending after a certain point are selected. The date-time format should adhere to ISO 8601 standards."},"endDateTimeTo":{"type":"string","format":"date-time","description":"Filters CDRs based on their end time, selecting those with an end time equal to or earlier than the provided value. This filter limits the selection to records that conclude by a certain time. The date-time should be in ISO 8601 format."},"operatorId":{"type":"string","format":"integer","nullable":true,"description":"Only CDRs associated with a specific Roaming Operator/Provider."},"platformId":{"type":"string","format":"integer","description":"Only CDRs linked to a specific Roaming Platform."},"roamingId":{"type":"string","description":"Filters CDRs by the unique identifier within the CPO's platform (and sub-operator platforms)."},"credit":{"type":"string","format":"boolean","description":"Only Credit CDRs."},"isLocal":{"type":"string","format":"boolean","description":"If true only CDRs that we issued as CPO will be returned, if false only CDRs that we received as eMSP will be returned."},"receivedAfter":{"type":"string","format":"date-time","description":"Filters CDRs by the time when received from CPOs, selecting records with a received time equal to or later than the specified value. This filter helps in selecting received records from a certain time and works for non local CDRs. The provided date-time should be following the ISO 8601 standard."},"receivedBefore":{"type":"string","format":"date-time","description":"Filters CDRs by the time when received from CPOs, selecting records with a start time equal to or earlier than the specified value. This filter helps in selecting received records up to a certain time and works for non local CDRs. The provided date-time should be following the ISO 8601 standard."},"sentAfter":{"type":"string","format":"date-time","description":"Filters CDRs by the time when sent to EMSP, selecting records with a sent time equal to or later than the specified value. This filter helps in selecting sent records from a certain time and works for local CDRs. The provided date-time should be following the ISO 8601 standard."},"sentBefore":{"type":"string","format":"date-time","description":"Filters CDRs by the time when sent to EMSP, selecting records with a sent time equal to or earlier than the specified value. This filter helps in selecting sent records from a certain time and works for local CDRs. The provided date-time should be following the ISO 8601 standard."},"deliveryResponse":{"type":"string","enum":["success","fail"],"description":"Filters CDRs that were sent to the EMSP based on their delivery status.\nUse this dropdown filter to retrieve CDRs with one of the following statuses:\n  - `success`: CDRs successfully **accepted** by the EMSP.\n  - `fail`: CDRs that were **rejected** (not accepted) by the EMSP.\n"},"sessionId":{"type":"string","format":"integer","description":"Filter CDRs by internal session ID to retrieve all CDRs linked to a specific session."}}}},"paymentTerminal":{"in":"path","name":"paymentTerminal","schema":{"type":"string"},"required":true},"booking_request_id":{"in":"path","name":"bookingRequest","required":true,"schema":{"type":"integer"},"description":"Booking request ID"},"booking_requests_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected"],"description":"Filter by booking request status"},"userId":{"type":"integer","description":"Filter by user ID"},"locationId":{"type":"integer","description":"Filter by location ID"},"startAfter":{"type":"string","format":"date-time","description":"Filter requests with start time after this date"},"startBefore":{"type":"string","format":"date-time","description":"Filter requests with start time before this date"},"endAfter":{"type":"string","format":"date-time","description":"Filter requests with end time after this date"},"endBefore":{"type":"string","format":"date-time","description":"Filter requests with end time before this date"},"createdAfter":{"type":"string","format":"date-time","description":"Filter requests that were created after this date"},"createdBefore":{"type":"string","format":"date-time","description":"Filter requests that were created before this date"},"externalId":{"type":"string","description":"Filter by external identifier from roaming partner (e.g., OCPI request_id)","example":"OCPI-REQ-12345"}}},"description":"Filter options for booking requests"},"booking_id":{"in":"path","name":"booking","required":true,"schema":{"type":"integer"},"description":"Booking ID"},"bookings_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"status":{"type":"string","enum":["accepted","reserved","completed","cancelled","no-show","failed"],"description":"Filter by booking status"},"userId":{"type":"integer","description":"Filter by user ID"},"locationId":{"type":"integer","description":"Filter by location ID"},"startAfter":{"type":"string","format":"date-time","description":"Filter bookings with start time after this date"},"startBefore":{"type":"string","format":"date-time","description":"Filter bookings with start time before this date"},"endAfter":{"type":"string","format":"date-time","description":"Filter bookings with end time after this date"},"endBefore":{"type":"string","format":"date-time","description":"Filter bookings with end time before this date"}}},"description":"Filter options for bookings"},"location":{"in":"path","name":"location","schema":{"type":"integer"},"required":true,"description":"Location ID"},"installer_job_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"installationAndMaintenanceCompanyId":{"type":"integer"},"locationId":{"type":"integer"},"chargePointId":{"type":"integer"},"status":{"type":"string","enum":["new","in_progress","completed","failed"],"description":"The status of the installer job"},"installerAdminId":{"type":"integer"},"createdAfter":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been created after the specified date and time, please provide the value as an ISO 8601 formatted date"},"createdBefore":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been created before the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been last updated after the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"Lists the installer jobs that have been last updated before the specified date and time, please provide the value as an ISO 8601 formatted date"}}}},"consent_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"userId":{"type":"array","items":{"type":"integer"},"description":"Filter consents by specific user IDs"},"termType":{"type":"array","items":{"type":"string","enum":["marketing","signup","subscription","top-up"]},"description":"Filter by term types:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"status":{"type":"array","items":{"type":"string","enum":["agreed","rejected"]},"description":"Filter by consent statuses:\n- agreed: User has agreed to the terms\n- rejected: User has explicitly rejected the terms\n"},"agreedAfter":{"type":"string","format":"date-time","description":"Filter consents agreed after this date (ISO 8601 formatted date)"},"agreedBefore":{"type":"string","format":"date-time","description":"Filter consents agreed before this date (ISO 8601 formatted date)"},"rejectedAfter":{"type":"string","format":"date-time","description":"Filter consents rejected after this date (ISO 8601 formatted date)"},"rejectedBefore":{"type":"string","format":"date-time","description":"Filter consents rejected before this date (ISO 8601 formatted date)"}}}},"consent_history_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"userId":{"type":"array","items":{"type":"integer"},"description":"Filter consent history by specific user IDs"},"termType":{"type":"array","items":{"type":"string","enum":["marketing","signup","subscription","top-up"]},"description":"Filter by term types:\n- marketing: Marketing and promotional communications consent\n- signup: Initial registration terms and conditions\n- subscription: Subscription service terms\n- top-up: Top-up service terms\n"},"action":{"type":"array","items":{"type":"string","enum":["agreed","rejected"]},"description":"Filter by consent actions:\n- agreed: User agreed to the terms\n- rejected: User rejected the terms\n"},"after":{"type":"string","format":"date-time","description":"Filter consent history entries where the action occurred after this date (ISO 8601 formatted datetime)"},"before":{"type":"string","format":"date-time","description":"Filter consent history entries where the action occurred before this date (ISO 8601 formatted datetime)"}}}},"installation_and_maintenance_company_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"operatorId":{"description":"Filter by operator ID(s).\n\n**For operator-scoped tokens:**\nIf provided, must match the token's operator. Returns empty results if a different operator ID is specified.\n\n**For global admin tokens:**\nReturns resources from the specified operator(s). Multiple IDs can be provided to filter by multiple operators.\n\n**Usage examples:**\n- Single operator: `?filter[operatorId]=1`\n- Multiple operators: `?filter[operatorId][]=1&filter[operatorId][]=2`\n","oneOf":[{"type":"string","format":"integer"},{"type":"array","items":{"type":"string","format":"integer"}}],"example":"1"},"externalId":{"type":"string","description":"Filter by external identifier"},"countryCode":{"type":"string","description":"Filter by country code (ISO 3166-1 alpha-2)"},"integrationId":{"type":"integer","description":"Filter by Installer app integration ID"},"lastUpdatedAfter":{"type":"string","format":"date-time","description":"Lists the installation and maintenance companies that have been last updated after the specified date and time, please provide the value as an ISO 8601 formatted date"},"lastUpdatedBefore":{"type":"string","format":"date-time","description":"Lists the installation and maintenance companies that have been last updated before the specified date and time, please provide the value as an ISO 8601 formatted date"}}}},"subscription_billing_period_filter":{"in":"query","name":"filter","style":"deepObject","schema":{"type":"object","properties":{"subscriptionPlanId":{"type":"string","format":"integer","description":"Filter by subscription plan ID"},"subscriptionId":{"type":"string","format":"integer","description":"Filter by subscription ID"},"hasUnresolvedPaymentFailure":{"type":"string","format":"boolean","description":"When `true`, return only billing periods that currently have an unresolved payment failure (`firstPaymentFailureAt` is set). When `false`, return only billing periods without a current failure. Payment failure dates are cleared when a retry succeeds, so this reflects the current failure state, not historical failures."},"startedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods started after this datetime."},"startedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods started before this datetime."},"endedAfter":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods ended after this datetime."},"endedBefore":{"type":"string","format":"date-time","description":"ISO 8601 formatted date. Lists only billing periods ended before this datetime."}}}},"subscription_billing_period_id":{"in":"path","name":"billingPeriod","schema":{"type":"integer"},"required":true,"description":"The subscription billing period ID"}},"schemas":{"Location":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"public_charge_points":{"type":"integer","readOnly":true,"description":"The number of the charge points in that location that are both public and active"},"public_charge_points_ids":{"readOnly":true,"description":"The ids of the charge points in that location that are both public and active","type":"array","items":{"type":"integer"}},"name":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"status":{"deprecated":true,"type":"string","enum":["active","disabled"]},"description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"detailed_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"additional_description":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"geoposition":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}}},"address":{"type":"object","additionalProperties":{"type":"string","nullable":true},"example":{"en":"example","fr":"affaire"},"description":"Locales that have been created and are not provided on an update will be deleted. Please provide values in all locales that you wish to keep."},"post_code":{"type":"string"},"region":{"anyOf":[{"title":"US State","description":"For cases when the country is US.","type":"string","enum":["AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY"]},{"title":"Australian State","description":"For cases when the country is AU.","type":"string","enum":["NSW","VIC","QLD","WA","SA","TAS","ACT","NT","JBT","CX","NF","CC","AQ","CSI","ACI","HM"]},{"title":"Other Region","type":"string","description":"For cases when the country is not US or AU."}]},"city":{"type":"string"},"country":{"type":"string","enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"]},"external_id":{"type":"string","nullable":true,"description":"The field should have unique value"},"timezone":{"type":"string","nullable":true,"description":"A valid timezone in the form of Area/Location, required when `Allow Multiple Time Zones` option is turned on in the Timezone Setting."},"location_image":{"nullable":true,"readOnly":true,"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"images":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string","description":"URL to the original image"},"thumbnail":{"type":"string","description":"URL to a thumbnail image"},"mimeType":{"type":"string"}},"required":["original","mimeType"]},"readOnly":true},"working_hours":{"type":"object","properties":{"is_always_open":{"type":"boolean","description":"Indicates that the location is always open for charging. If set to false, the `hours` field is required, otherwise it should be ignored.\n"},"stop_session_outside_working_hours":{"type":"boolean","nullable":true,"description":"If a User has initiated a charging session during Working hours but it is already outside of the Working hours, the session will be terminated by the system. This is valid only for Users that are not included in one of the User Groups for which the Location is available 24/7.\n"},"hours":{"type":"object","nullable":true,"description":"The times should be considered to be in the location/tenant timezone.\nIf a day does not have any entries, it will be treated as closed for the whole day.\n","properties":{"monday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"tuesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"wednesday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"thursday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"friday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"saturday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}},"sunday":{"type":"array","description":"Working hours interval for single day","items":{"type":"object","properties":{"start":{"type":"string","format":"time","example":"01:00"},"end":{"type":"string","format":"time","example":"09:00"}},"required":["start","end"]}}}},"always_open_for_user_group_ids":{"type":"array","items":{"type":"number"},"nullable":true,"example":[1,2,3]}},"required":["is_always_open"]},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}}},"ChargePoint":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"},"externalId":{"type":"string","nullable":true},"chargingProfile":{"nullable":true,"type":"object","properties":{"id":{"type":"integer"},"min_charging_rate":{"type":"number","nullable":true},"schedule_periods":{"type":"array","nullable":true,"items":{"type":"object","properties":{"startPeriod":{"type":"integer"},"limit":{"type":"number","multipleOf":0.1},"numberPhases":{"type":"integer"}}}},"schedule_start":{"type":"string","format":"datetime","nullable":true},"charging_rate_unit":{"type":"string","enum":["A","W"]},"stack_level":{"type":"integer"},"charging_profile_kind":{"type":"string","enum":["Absolute","Recurring","Relative"]},"recurrency_kind":{"type":"string","nullable":true,"enum":["daily","weekly"]},"charging_complete_at":{"type":"string","format":"datetime","nullable":true},"purpose":{"type":"string","enum":["ChargePointMaxProfile","TxDefaultProfile","TxProfile"]},"valid_to":{"type":"string","format":"datetime","nullable":true},"valid_from":{"type":"string","format":"datetime","nullable":true},"duration":{"type":"integer","nullable":true}}},"roaming":{"description":"If the evse was received from a roaming CPO, this object will contain the details","type":"object","properties":{"evseId":{"type":"string","description":"The EVSE Id that we receive through roaming","nullable":true},"tariffIds":{"type":"array","items":{"type":"string"},"description":"The tariffs IDS that we received from roaming (as were specified by the CPO)","nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"description":"The evse capabilities defined by the CPO"},"status":{"type":"string","nullable":true,"enum":["available","blocked","charging","inoperative","outoforder","planned","removed","reserved","unknown"],"description":"* `available` - The EVSE/Connector is able to start a new charging session. * `blocked` - The EVSE/Connector is not accessible because of a physical barrier, i.e. a car. * `charging` - The EVSE/Connector is in use. * `inoperative` - The EVSE/Connector is not yet active or it is no longer available (deleted). * `outoforder` - The EVSE/Connector is currently out of order. * `planned` - The EVSE/Connector is planned, will be operating soon. * `removed` - The EVSE/Connector/charge point is discontinued/removed. * `reserved` - The EVSE/Connector is reserved for a particular EV driver and is unavailable for other drivers. * `unknown` -  No status information available. (Also used when offline)\n"}}},"connectors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}}}}},"required":["id"]},{"type":"object","properties":{"networkId":{"type":"string","description":"The OCPP evse identidier (should be consecutive numbers starting from 1)"},"physicalReference":{"type":"string","description":"The identifier that is presented to the user, so he can identify the EVSE at the location"},"currentType":{"type":"string","enum":["ac","dc"],"description":"Type of current available on the EVSE:\n- **ac**: Alternating Current (AC) charging\n- **dc**: Direct Current (DC) fast charging\n"},"maxPower":{"type":"number","description":"in Wh","nullable":true},"maxVoltage":{"type":"string","nullable":true,"description":"The maxVoltage of a CP can fluctuate. Hence, when creating a CP in the system the maxVoltage is given as a range. For OCPI purposes it maps as follows:\n * `220-240` = 230\n * `110-130` = 120\n * `400` = 400\n * `380` = 380\n"},"maxAmperage":{"type":"number","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order"]},"connectors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}},"midMeterCertificationEndYear":{"type":"number","nullable":true,"description":"The mid meter certification end year."},"tariffGroupId":{"type":"integer","nullable":true,"description":"The id of the tariff group associated with the evse"},"allowsReservation":{"type":"boolean","description":"are reservations allowed on this EVSE"}},"required":["networkId"]},{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"connectors":{"type":"array","items":{"allOf":[{"type":"object","properties":{"id":{"type":"integer"}}},{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled"]},"type":{"type":"string","enum":["type1","type2","type3","chademo","ccs1","ccs2","catarc","schuko","nacs","cee16","cee32","j1772","inductive","nema-5-20","type-e-french","type-g-british","type-j-swiss","avcon","chaoji","nema-6-30","nema-6-50","mcs"],"description":"Type of connector available on the EVSE:\n- **type1**: Type 1 connector (SAE J1772 AC)\n- **type2**: Type 2 connector (IEC 62196-2 AC)\n- **type3**: Type 3 connector (IEC 62196-2 AC)\n- **chademo**: CHAdeMO DC fast charging\n- **ccs1**: Combined Charging System 1 (CCS1/Combo 1)\n- **ccs2**: Combined Charging System 2 (CCS2/Combo 2)\n- **catarc**: CATARC connector (Chinese standard)\n- **schuko**: Standard European household socket\n- **nacs**: North American Charging Standard (Tesla)\n- **cee16**: CEE 16A industrial connector\n- **cee32**: CEE 32A industrial connector\n- **j1772**: SAE J1772 connector\n- **inductive**: Inductive/wireless charging\n- **nema-5-20**: Domestic M NEMA 5-20 Socket\n- **type-e-french**: French Type E socket\n- **type-g-british**: British Type G socket\n- **type-j-swiss**: Swiss Type J socket\n- **avcon**: AVCON connector (Australian standard)\n- **chaoji**: ChaoJi (CHAdeMO 3.0)\n- **nema-6-30**: NEMA 6-30\n- **nema-6-50**: NEMA 6-50\n- **mcs**: Megawatt Charging System (MCS)\n"},"format":{"type":"string","enum":["socket","cable"]}}}]}}}}]}},"lastBootNotification":{"type":"object","properties":{"model":{"type":"string"},"vendor":{"type":"string"},"charge_box_serial_number":{"type":"string","nullable":true},"charge_point_serial_number":{"type":"string","nullable":true},"firmware_version":{"type":"string","nullable":true},"iccid":{"type":"string","nullable":true},"imsi":{"type":"string","nullable":true},"meter_serial_number":{"type":"string","nullable":true},"meter_type":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true}},"nullable":true},"showToPublicWithNotice":{"type":"boolean","description":"Only available if the ChargePoint has private access"},"notice":{"type":"string","description":"The notice is only available if showToPublicWithNotice is set to \"true\"","nullable":true},"currentSecurityProfile":{"type":"integer","description":"The security profile that is currenty being used by the charge point. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"hardwareEnabledSecurityProfile":{"type":"integer","nullable":true,"description":"The maximum security profile that the charge point hardware supports. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"desiredSecurityProfileStatus":{"type":"string","description":"Whether the last requested desiredSecurityProfile was successfully applied to the charge point","enum":["applied","pending","rejected"]},"roamingOperatorId":{"type":"integer","description":"When null the charge point is a local one. For roaming charge points, the ID of the roaming operator is provided","nullable":true},"monitoringEnabled":{"type":"boolean","description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** This field will be removed in v2.1 (target: Q2 2026). Use `monitoringEnabled` and `autoRecoveryEnabled` instead.\n\n**Previous Behavior (Single Toggle):**\nThis field previously controlled both monitoring/notifications AND auto-recovery with a single toggle. Setting it to `true` enabled both behaviors, while `false` disabled both. This forced an \"all-or-nothing\" approach.\n\n**New Behavior (Independent Controls):**\nThe new fields provide independent control:\n- `monitoringEnabled` - Controls issue creation and notifications\n- `autoRecoveryEnabled` - Controls automated recovery attempts\n\n**Current Backward Compatibility:**\nThis field is maintained for backward compatibility and returns `true` only when **BOTH** `monitoringEnabled` AND `autoRecoveryEnabled` are enabled. If either field is `false`, this returns `false`.\n\n**Migration Guide - Common Use Cases:**\n1. **Receive notifications only (no auto-recovery):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: false`\n   - Use case: Manual control over recovery, but still get alerts\n\n2. **Auto-recovery only (silent mode):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: true`\n   - Use case: Auto-fix issues without creating alerts (not recommended - no visibility)\n\n3. **Full automation (current default):**\n   - Set `monitoringEnabled: true`, `autoRecoveryEnabled: true`\n   - Use case: Monitor and auto-recover (same as old `autoFaultRecovery: true`)\n\n4. **Disabled (manual control):**\n   - Set `monitoringEnabled: false`, `autoRecoveryEnabled: false`\n   - Use case: No monitoring or auto-recovery (same as old `autoFaultRecovery: false`)\n\n**Migration Deadline:** Please migrate to the new fields by Q1 2026.\n"},"externalId":{"type":"string","nullable":true,"description":"The field should have unique value"},"displayTariffsAndCosts":{"type":"boolean","nullable":true,"readOnly":true},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"firstConnection":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","nullable":true,"readOnly":true},"ownerUserId":{"type":"integer","nullable":true,"readOnly":true},"vendorErrorCode":{"type":"string","readOnly":true,"description":"This property is shown only when the hardwareStatus is faulted.","nullable":true},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}},"uptimeTrackingEnabled":{"type":"boolean","description":"Indicates whether Uptime tracking is currently enabled for the charge point.\n\n**Examples:**\n- `true` - Uptime tracking is enabled (open operational period exists)\n- `false` - Uptime tracking is disabled (no open operational period)\n","example":true},"uptimeTrackingActivatedAt":{"type":"string","format":"date-time","description":"The timestamp when Uptime tracking was activated (start of current open operational period).\nOmitted from response if Uptime tracking is not enabled or has never been activated.\nFormat: ISO 8601 with timezone offset.\n\n**Example:**\n`\"2025-10-14T08:30:00+00:00\"` - When uptime tracking is enabled\n\n**Note:** This field is omitted from the response when uptime tracking is disabled or never activated.\n","example":"2025-10-14T08:30:00+00:00"}},"required":["id","evses","networkProtocol","accessType","monitoringEnabled","autoRecoveryEnabled","autoFaultRecovery"]},{"type":"object","properties":{"name":{"type":"string"},"networkId":{"type":"string","description":"OCPP Identifier","nullable":true},"networkProtocol":{"type":"string","enum":["ocpp 1.5","ocpp 1.6","ocpp 1.6 soap","ocpp 2.0.1"]},"networkPassword":{"type":"string","nullable":true},"networkIp":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"networkPort":{"type":"string","description":"required for ocpp 1.5 (SOAP)","nullable":true},"status":{"type":"string","enum":["active","disabled","out of order","demo"]},"plugAndCharge":{"type":"boolean","description":"Enable this flag if you the CP is configured in plug and charge mode, it automatically starts a session when a car is plugged in, and the ID tag should not be authorized"},"locationId":{"type":"integer","nullable":true,"description":"locationId is always a REQUIRED field for commercial public and commercial private charge points. It is NOT a required field only for personal charge points."},"pin":{"type":"string","description":"pin is always a REQUIRED field for personal charge points. It is NOT a required field for commercial public and commercial private charge points."},"accessType":{"default":"public","type":"string","enum":["private","public","personal"]},"desiredSecurityProfile":{"type":"integer","nullable":true,"minimum":0,"maximum":2,"description":"The security profile that the backend will try to force the charge point to use for connecting to the backend. Description of the supported security profiles can be found in the security whitepaper available here - https://www.openchargealliance.org/protocols/ocpp-16/"},"ownerPartnerId":{"type":"integer","nullable":true},"ownerPartnerContractId":{"type":"integer","nullable":true},"partnerCorporateBillingAsDefault":{"type":"boolean","description":"For users who have corporate billing with the same Partner as the Partner assigned to the charge point, the default payment method on this charge point will be the respective corporate billing account of the Partner."},"partnerAccessType":{"type":"string","description":"Applicable only to Commercial Private charge points. Further defines the access type and visibility of the charge point.","enum":["privateViewPrivateUse","privateViewPublicUse","publicViewPrivateUse"]},"capabilities":{"type":"array","items":{"type":"string","enum":["REMOTE_START_STOP_CAPABLE","METER_VALUES","STOP_TRANSACTION_ON_EV_DISCONNECT"]}},"managedByOperator":{"type":"boolean"},"uptimeTrackingEnabled":{"type":"boolean","default":false,"description":"When set to true, enables Uptime tracking for the charge point by creating an operational period.\nWhen set to false or omitted, Uptime tracking remains disabled.\n\n**Requirements:**\n- Charge point must be commercial type (public or private)\n- Operator must have operational availability enabled\n\n**Validation Errors:**\n- Returns HTTP 422 if charge point is personal type\n- Returns HTTP 422 if operator has operational availability disabled\n\n**Examples:**\n```json\n{\n  \"name\": \"CP-001\",\n  \"accessType\": \"public\",\n  \"uptimeTrackingEnabled\": true\n}\n```\n\n**Validation Error Examples:**\n\nPersonal charge point error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Uptime tracking can only be enabled for commercial charge points\"\n    ]\n  }\n}\n```\n\nOperator settings error:\n```json\n{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"uptimeTrackingEnabled\": [\n      \"Operator must have operational availability enabled to track uptime\"\n    ]\n  }\n}\n```\n"},"monitoringEnabled":{"type":"boolean","default":true,"description":"When enabled, issues are created for hardware faults and connectivity problems, and notifications/webhooks are sent. When disabled, no issues are created and no notifications are sent for this charge point."},"autoRecoveryEnabled":{"type":"boolean","default":true,"description":"When enabled, the system automatically attempts to recover the charge point when hardware faults are detected (status requests, soft reboots). When disabled, issues are still created (if monitoring is enabled) but no automated recovery actions are taken."},"autoFaultRecovery":{"type":"boolean","deprecated":true,"description":"**DEPRECATED:** Use `monitoringEnabled` and `autoRecoveryEnabled` instead. This field continues to work for backward compatibility, setting both new fields to the same value when provided. New integrations should use the new fields for independent control over monitoring and auto-recovery.\n"},"tags":{"type":"array","description":"Tags can be used for filtering and grouping chargers by tag. When doing a PATCH input all tags that should be associated with the charge point. Omitting a tag would remove it from the charge point.","items":{"type":"string"}}}},{"type":"object","properties":{"networkStatus":{"type":"string","enum":["never connected","available","temporarily unavailable","long-term unavailable"],"description":"Connection status of the charge point:\n  * `never connected` - the charge point has not yet connected to the CPMS\n  * `available` - connected to the CPMS\n  * `temporarily unavailable` - disconnected a short while ago\n  * `long-term unavailable` - disconnected, and some time has passed, so we dont expect the connection will be restores\n"},"hardwareStatus":{"type":"string","description":"When hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for the charge point in the past","nullable":true,"enum":["available","unavailable","faulted"]},"evses":{"type":"array","items":{"allOf":[{"type":"object","properties":{"hardwareStatus":{"type":"string","nullable":true,"enum":["available","preparing","charging","suspendedEV","suspendedEVSE","finishing","reserved","unavailable","faulted"],"description":"Status reported by the charge point's EVSE:\n * `available` - When a Connector becomes available for a new user (Operative)\n * `preparing` - When a Connector becomes no longer available for a new user but there is no ongoing Transaction (yet). Typically a Connector is in preparing state when a user presents a tag, inserts a cable or a vehicle occupies the parking bay (Operative)\n * `charging` - When the contactor of a Connector closes, allowing the vehicle to charge (Operative)\n * `suspendedEVSE` - When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart charging restriction, local supply power constraints. (Operative)\n * `suspendedEV` - When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy. For example the driver has unlocked the car, and the car has paused charging. (Operative)\n * `finishing` - When a Transaction has stopped at a Connector, but the Connector is not yet available for a new user, e.g. the cable has not been removed or the vehicle has not left the parking bay (Operative)\n * `reserved` - When a EVSE becomes reserved as a result of a Reserve Now command (Operative)\n * `unavailable` - When a EVSE becomes unavailable as the result of a Change Availability command or an event upon which the Charge Point transitions to unavailable at its discretion. Upon receipt of a Change Availability command, the status MAY change immediately or the change MAY be scheduled. When scheduled, the Status Notification shall be send when the availability change becomes effective (Inoperative)\n * `faulted` - When a Charge Point or connector has reported an error and is not available for energy delivery (Inoperative)\n\nWhen hardware status is null, that means that the charge point has not connected yet or has not reported a hardware status for this evse in the past\n"}}},{"type":"object","properties":{"id":{"type":"integer"}}}]}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["networkStatus"]}]},"IssueChangedNotification":{"type":"object","description":"Webhook notification payload sent when an issue is created, updated, or deleted","properties":{"notification":{"type":"string","enum":["issue.changed"],"description":"Webhook notification type"},"issueId":{"type":"integer","description":"ID of the issue that changed"},"action":{"type":"string","enum":["created","updated","deleted"],"description":"Type of change that occurred"},"status":{"allOf":[{"type":"string","enum":["auto_recovery_in_progress","information_collection_in_progress","new","investigating","resolution_in_progress","resolved","wont_fix","non_issue"],"description":"Issue status:\n- **auto_recovery_in_progress**: Issue is in automatic recovery process (preparation state)\n- **information_collection_in_progress**: System is collecting diagnostic information (preparation state)\n- **new**: Issue has been reported and not yet investigated (open state)\n- **investigating**: Issue is currently being investigated (open state)\n- **resolution_in_progress**: Resolution actions are being applied (open state)\n- **resolved**: Issue has been resolved successfully (closed state)\n- **wont_fix**: Issue will not be fixed (closed state)\n- **non_issue**: Reported issue determined to not be an actual issue (closed state)\n","example":"investigating"}],"description":"Current status of the issue. Not present when action is deleted."},"workflowState":{"allOf":[{"type":"string","enum":["preparation","open","closed"],"description":"Issue workflow state (derived from status):\n- **preparation**: System is performing automatic actions before manual intervention (auto-resolution statuses)\n- **open**: Issue requires attention or is being worked on (new, investigating, resolutionInProgress)\n- **closed**: Issue is no longer active (resolved, wontFix, nonIssue)\n","example":"open"}],"description":"Current workflow state of the issue. Not present when action is deleted."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of the last update to the issue"}},"required":["notification","issueId","action","updatedAt"],"example":{"notification":"issue.changed","issueId":123,"action":"updated","status":"investigating","workflowState":"open","updatedAt":"2025-01-15T10:00:00+00:00"}},"Session":{"type":"object","description":"Charging session","properties":{"id":{"type":"string"},"operatorId":{"type":"integer","description":"The ID of the operator this resource belongs to","example":1},"chargePointId":{"type":"integer"},"evseId":{"type":"integer"},"connectorId":{"type":"integer","nullable":true},"status":{"type":"string","enum":["unknown","pending","active","finished","failed","expired"]},"reason":{"type":"string","enum":["working_hours_exceeded","timeout","authorization_amount_reached","new_start_transaction_received","force_stop","standard_stop","energy_exceeded","schedule_completed","pre_authorization_failed","system_force_stop","time_limit","balance_exceeded","deauthorized","emergencystop","energylimitreached","evdisconnected","groundfault","immediatereset","hardreset","local","localoutofcredit","masterpass","other","plug_and_charge","overcurrentfault","powerloss","powerquality","reboot","remote","soclimitreached","stoppedbyev","timeoutlimitreached","softreset","unlockcommand","no_ev_parked","no_ev_connected","charge_point_timeout","charging_on_evse_not_allowed","remote_start_failed","no_user_for_agile_streets","rejected","canceled_reservation","evse_occupied","evse_inoperative","failed","not_supported","unknown_reservation","ev_not_connected_to_evse","authorization_failed","unknown_session"],"description":"The reason why the session expired or has been stopped."},"userId":{"type":"integer","nullable":true,"description":"The id of the user that started the session"},"bookingId":{"type":"integer","description":"The ID of the linked booking (if any)"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"energy":{"deprecated":true,"type":"number","description":"Delivered energy in Wh"},"powerKw":{"deprecated":true,"type":"number","description":"This field representing the current charging speed in kilowatts is deprecated. Use the `power.latest` property instead for charging power information."},"socPercent":{"type":"number","description":"State of charge (in %). Optional."},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"nullable":true,"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"tax":{"type":"object","nullable":true,"deprecated":true,"properties":{"taxId":{"type":"integer"},"taxPercentage":{"type":"number","format":"decimal"}}},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"paymentType":{"type":"string","enum":["tokenized","subscription","balance","corporate","terminal","bank_transfer"]},"paymentMethodId":{"type":"string","description":"The ID of the payment method. Mind that this is actually a string. It can be, for example `corporate:1234` - for corporate billing, or `balance`, or `subscription` - when the session is to be paid with the user's post-paid subscription.","nullable":true},"terminalId":{"type":"integer","description":"The ID of the payment terminal when such is used.","nullable":true},"nonBillableEnergy":{"type":"number","description":"The energy that is included as an allowance for pre-paid and post subscriptions."},"paymentStatus":{"type":"string","nullable":true,"enum":["pending","paid","partially","failed",null]},"authorizationId":{"nullable":true,"type":"integer"},"idTag":{"type":"string","description":"The idTag defines the authentication source for the session (RFID identifier or remote start identifier)\nA remote start identifier has the format `*XXXXXXX` where the `XXXXXXX` is the session id padded with `0`s on the left\n"},"idTagLabel":{"type":"string","description":"Additional information about the idTag that differs depending on the type of the idTag or could be something else, related to the car or the user."},"idTagType":{"type":"string","nullable":true,"enum":["rfid","emaid","mac_address"],"description":"The type of identifier used for authentication. Returns 'rfid' for standard RFID card identifiers, 'emaid' for E-Mobility Account Identifiers used by ISO15118 Plug&Charge, or 'mac_address' for MAC addresses used by Autocharge."},"extendingSessionId":{"deprecated":true,"type":"integer","nullable":true,"description":"When a session is finished (because connectivity was lost for a long time) and more data is received, the\nadditional data is stored in an extending session. If this property is set, then this is an extending session.\n"},"originalSessionId":{"type":"integer","description":"ID of the session that the current session is extending."},"extendedBySessionId":{"type":"integer","description":"ID of the session that extends this session."},"reimbursementEligibility":{"type":"boolean"},"externalSessionId":{"deprecated":true,"nullable":true,"type":"string","description":"Deprecated: Use `idTag` field instead. This field will be removed in a future version.\nPreviously used for admin-started sessions, this value is now available in the `idTag` field.\n"},"authorization":{"type":"object","description":"Authorization","properties":{"id":{"type":"integer"},"operatorId":{"type":"integer","nullable":true,"description":"The ID of the operator this resource belongs to","example":1},"method":{"type":"string","enum":["user_device","rfid_tag","admin","plug_and_charge"]},"source":{"description":"In case roaming is set, the method can only be user_device or rfid_tag","type":"string","enum":["local","roaming","third_party"]},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["accepted","rejected"]},"rejectionReason":{"type":"string","nullable":true},"userId":{"type":"integer","nullable":true},"rfidTagUid":{"type":"string","nullable":true,"description":"The UID of the RFID card that created the authorization"},"roaming":{"description":"In case source is roaming, this object describes the EMSP that gave the authorization","type":"object","properties":{"platformId":{"description":"The roaming plarform ID that gave the authoriation","type":"integer"},"platformRoleId":{"description":"The role that gave the authorization (the EMSP)","type":"integer"},"platformRole":{"description":"The role identifier","type":"string"},"reference":{"description":"OCPI's authorization_reference, or Hubjects SessionID","type":"string"},"client":{"description":"OCPI's contractId, or Hubjects EVCO ID","type":"string"}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","method","source","createdAt","status","rejectionReason"]},"chargingPeriods":{"type":"array","items":{"type":"object","description":"Describes a period in the session that is billed separately, for example charging@night (for time of day tariffs) or idle (for tariffs that charge separately idle time)","properties":{"id":{"type":"integer"},"energy":{"type":"integer","description":"Delivered energy in Wh"},"energyPrecise":{"type":"number","nullable":true,"description":"Delivered energy in Wh with decimal precision"},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true},"state":{"deprecated":true,"type":"string","example":["charging","charging@night","charging@day","idle","idle@day","idle@night","charging@boosted","charging@optimised"],"description":"The state of the period. A non exhaustive list of possible values:\n  * `charging` - the vehicle was charging\n  * `charging@night` - a ToD tariff was selected and the vehicle was charging during the nighttime period of the tariff\n  * `charging@day` - a ToD tariff was selected and the vehicle was charging during the daytime period of the tariff\n  * `idle` - a tariff with separate pricing for idle time was selected and the charging was idle in that period\n  * `idle@night` - a ToD tariff was selected and the vehicle was idling during the nighttime period of the tariff\n  * `idle@day` - a ToD tariff was selected and the vehicle was idling during the daytime period of the tariff\n  * `charging@boosted` - Optimised dynamic pricing was applied and charging was performed with full available power\n  * `charging@optimised` - Optimised dynamic pricing was applied and charging was performed with lower price and limited power during peak hours\n"},"chargingState":{"type":"string","enum":["charging","idle"],"description":"The charging state of the period."},"graceTimeEndAt":{"type":"string","format":"date-time","description":"When the idle fee grace period expires for this charging period. Present only on idle charging periods that have a grace period configured."},"pricingDetails":{"description":"Optional pricing details specific to this charging period, dependent on the tariff.","type":"object","properties":{"chargingType":{"type":"string","enum":["boosted","optimised"],"nullable":true,"description":"Power delivery strategy used during this period.\n  * `boosted` - maximum available power delivery\n  * `optimised` - reduced power during peak hours for cost efficiency\n"},"dayPeriod":{"type":"string","nullable":true,"enum":["day","night"],"description":"The period of the day.\n  * `day` - daytime period of the tariff\n  * `night` - nighttime period of the tariff\n"},"pricingMethod":{"type":"string","nullable":true,"enum":["duration","energy","durationAndEnergy","free"],"description":"The method used for calculating price in standard tariffs.\n  * `duration` - pricing based on duration\n  * `energy` - pricing based on energy consumption\n  * `durationAndEnergy` - pricing based on both duration and energy\n  * `free` - free period with no charge\n"},"price":{"type":"number","format":"decimal","description":"Base price rate for Energy Time of Usage tariffs"},"markup":{"type":"number","format":"decimal","description":"Additional percentage or fixed amount added to the base price"},"initialEnergyPrice":{"type":"number","format":"decimal","description":"Starting price rate for energy-based charging"},"initialDurationPrice":{"type":"number","format":"decimal","description":"Starting price rate for time-based charging"},"startHour":{"type":"string","description":"The start hour for the charging period"},"endHour":{"type":"string","description":"The end hour for the charging period"},"day":{"type":"string","description":"The day being used"}}},"amount":{"type":"number","format":"decimal","nullable":true,"deprecated":true},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"]},"priceBreakdown":{"type":"array","items":{"description":"Charging period price breakdown","type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},"description":"A breakdown of the different tariff elements that create the total amount of the charging period. Only sent when `withChargingPeriodsPriceBreakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."}},"required":["id","energy","startedAt","state"]}},"priceBreakdown":{"type":"array","items":{"type":"object","allOf":[{"type":"object","properties":{"type":{"type":"string","enum":["flat","connection","energy","charging_time","idle_time","power_levels_time","min_price","service_fee","energy_flat_fee","duration_flat_fee","idle_flat_fee"],"description":"* `flat` - no matter the duration or energy consumed each session would cost one and the same amount,\n* `connection` - a fixed fee that is applied at the start of the charging session,\n* `energy` - the cost for the consumed energy,\n* `charging_time` - the cost for the duration of the session when there is ongoing charging,\n* `idle_time` - the cost for the time when there is no active charging but there is an ongoing session,\n* `power_levels_time` - the cost for peak and average power levels,\n* `min_price` - the minimum price a session should cost, anything below that price is rounded up to the minimum price,\n* `service_fee` - the cost for the mark up,\n* `energy_flat_fee` - a fixed fee applied per energy component,\n* `duration_flat_fee` - a fixed fee applied per duration component,\n* `idle_flat_fee` - a fixed fee applied per idle component.\n"},"currency":{"type":"string","example":"EUR","minLength":3,"maxLength":3,"description":"3-letter currency code (ISO 4217)"},"unit":{"type":"string","enum":["kwh","minute","session"],"description":"The measure that is used for the type element."},"pricePerUnit":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The price of a single unit of the tariff element."},"quantity":{"type":"number","format":"decimal","description":"The number of units."},"price":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"The `pricePerUnit` multiplied by the `quantity`."},"taxPercentage":{"type":"number","nullable":true,"format":"decimal","description":"The tax rate percentage applied to this tariff element."}},"required":["type","currency","price","quantity","pricePerUnit","unit"]},{"type":"object","properties":{"totalPrice":{"type":"number","format":"decimal","description":"The `unitPrice` multiplied by the `quantity`.","deprecated":true},"unitPrice":{"type":"number","format":"decimal","description":"The price of a single unit of the tariff element.","deprecated":true}},"required":["totalPrice","unitPrice"]}]},"description":"A breakdown of the different tariff elements that create the total amount of the charging session. Only sent when `session_with_price_breakdown` is set to `true`. The priceBreakdown will be displayed only when the Billing status of the session is marked as completed."},"tariffSnapshotId":{"type":"integer","nullable":true,"description":"At the start of the charging session the tariff will be snapshotted and that snapshot will not be changed ever. That snapshot is used to determine the price of the charging session. This is the ID of that snapshot.\n"},"electricityCost":{"type":"number","format":"decimal","nullable":true},"evsePhysicalReference":{"type":"string","description":"This could be either the identifier that is presented to the user, so they can identify the EVSE at the location. Or for roaming EVSEs - it is the roaming evse_id.\n","nullable":true},"paymentStatusUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true,"nullable":true},"chargePointOperatorRoamingId":{"type":"string","description":"The roaming operator identifier (e.g., \"DE*ENA\", \"LT*IGN\") of the operator who owns the charge point where the session occurred. Only returned for roaming sessions."},"roaming":{"type":"object","properties":{"cdrIds":{"type":"array","description":"The CDRs that are generated for roaming sessions.","items":{"type":"integer"}},"sessionId":{"type":"string","description":"The unique id that identifies the charging session in the CPO platform."},"roamingOperatorCpoId":{"type":"integer","description":"The id of the roaming operator that owns the charge point at which the session occurred."},"cpoLastUpdatedAt":{"type":"string","format":"date-time","description":"Applicable only for OCPI sessions and populated with the most recent shared `last_updated` value from the CPO roaming operator. ISO 8601 formatted date","readOnly":true}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true},"randomisedDelay":{"type":"integer","description":"Number of seconds by which current offering is being delayed at the start of the session. The field is omitted when randomised delay is not enabled in the Personal Charging settings or when there is no randomised delay."},"receiptId":{"deprecated":true,"type":"integer","nullable":true},"externalAppData":{"description":"Used to hold any external application data related to the session.","type":"object","nullable":true,"additionalProperties":true},"clockAlignedEnergyConsumption":{"type":"array","items":{"type":"object","description":"Session Clock aligned consumption period","properties":{"start":{"type":"string","format":"date-time","description":"The beginning of the clock-aligned consumption period."},"end":{"type":"string","format":"date-time","description":"The end of the clock-aligned consumption period."},"energyConsumed":{"deprecated":true,"type":"integer","description":"The amount of total consumed energy(Wh) during the clock-aligned consumption period."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"The amount of total consumed energy (Wh) during the clock-aligned consumption period."},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for the specified clock-aligned consumption period."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for the specified clock-aligned consumption period."}},"required":["total","grid"]},"totalCost":{"type":"object","description":"The total cost of energy consumption during the clock-aligned period.","properties":{"withTax":{"type":"number","description":"Total cost including tax."},"withoutTax":{"type":"number","description":"Total cost excluding tax."}},"required":["withTax"]}},"required":["start","end","energyConsumed","energyConsumption"]},"description":"Energy consumption during time intervals (15, 30 or 60 minutes) in the charging session. The start of the first interval is the start of the session then the intervals are defined by the exact minute of the hour. Clock-aligned consumption periods are included in the response only when the query param 'withClockAlignedEnergyConsumption' is set to 'true'."},"energyConsumption":{"type":"object","properties":{"total":{"type":"number","description":"Delivered energy (Wh)"},"local":{"type":"number","description":"The amount of consumed renewable energy (Wh) generated by individual source for all clock-aligned consumption periods in the charging session."},"grid":{"type":"number","description":"The amount of consumed energy (Wh) delivered from the grid for all clock-aligned consumption periods in the charging session."}},"required":["total","grid"]},"estimatedSavings":{"type":"number","description":"The sum of savings that could be achieved if the consumed energy was not locally generated but delivered from the grid for all clock-aligned consumption periods in the charging session."},"billingStatus":{"type":"string","description":"The status of the billing process for the session.","nullable":true,"enum":["pending","suspended","completed",null]},"billingCompletedAt":{"type":"string","format":"date-time","description":"The timestamp when session billing was completed. Only present when billing has completed, omitted otherwise."},"power":{"type":"object","properties":{"latest":{"type":"number","nullable":true,"description":"The current charging power (in watts)"},"peak":{"type":"number","nullable":true,"description":"The maximum charging power (in watts) reached during the session"},"average":{"type":"number","nullable":true,"description":"The average charging power (in watts) maintained during the session"}}}},"required":["id","operatorId","status","userId","authorizationId","energy","energyConsumption","chargePointId","evseId","startedAt","billingStatus"]},"TariffGroup":{"allOf":[{"type":"object","properties":{"operatorId":{"type":"integer","nullable":true,"description":"The operator ID for this resource.\nRequired for global admin tokens.\nOptional for operator-scoped tokens (defaults to token's operator).\n","example":1}}},{"type":"object","properties":{"name":{"type":"string"},"tariffIds":{"description":"Ordered list of tariff ids in the group. Please note that the order is checked from bottom to top, meaning that the tariff with the largest index in that list (in other words that is the lowest in the list), that matches the requirements will apply","type":"array","items":{"type":"integer"}},"partnerId":{"type":"integer","nullable":true,"description":"The assigned Partner will have access to make changes to the tariff group."},"display":{"type":"object","properties":{"defaultPriceInformation":{"type":"string","maxLength":150,"nullable":true,"description":"The default information that would be shown on the display of the charge point without the user having authorized themselves."},"defaultPriceInformationOffline":{"type":"string","maxLength":150,"nullable":true,"description":"The information that would be shown on the display of the charge point when offline."}}},"lastUpdatedAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["name"]}]},"SmartChargingTod":{"type":"object","properties":{"mode":{"type":"string","enum":["tod"],"description":"`tod` - for public and private charge points. The maximum load for a specific time period during the day could be set - the charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"periods":{"type":"array","items":{"type":"object","required":["weekDay","elements"],"properties":{"weekDay":{"type":"string","enum":["all","mon","tue","wed","thu","fri","sat","sun"],"description":"Specify the day for which the pricing would be valid."},"elements":{"type":"array","items":{"type":"object","required":["startAt","endAt"],"properties":{"startAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `00:00`\n"},"endAt":{"type":"string","format":"time","example":"00:00","description":"The 24-hour format should be used.</br>\nExample `01:00`\n"},"maxCurrent":{"type":"number","nullable":true}}}}}},"description":"The time period must be the same for every single day through the week and should be always 60 min. The `startAt` and `endAt` must comply with this restriction."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},"SmartChargingDynamic":{"type":"object","properties":{"mode":{"type":"string","enum":["dynamic"],"description":"`dynamic` - for public and private charge points. The charge point could be part of a dynamic load management circuit.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","maxVoltage","phases","phaseRotation"]},"SmartChargingUserSchedule":{"type":"object","properties":{"mode":{"type":"string","enum":["user_schedule"],"description":"`user_schedule` - for personal charge points. The maximum power load will be defined on the EVSE level. The charge point owner could manually create a charging schedule.\n"},"defaultChargePointMaxCurrent":{"type":"number","multipleOf":0.1,"description":"In amps. The max current would be used in the algorithm for the smart charging and wherever there is not a max current explicitly set."},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"circuitId":{"type":"integer","description":"The ID of the DLM Circuit to which the charge point is added (if any).","nullable":true,"readOnly":true},"minCurrent":{"type":"number","description":"minCurrent is always REQUIRED for `user_controlled_schedule`","nullable":true},"enableKeepAwake":{"type":"boolean","description":"For personal charge points. Keep the car awake during scheduled periods by continuously charging at a low current / power.","nullable":true},"maxVoltage":{"type":"string","enum":["230","380","400","480","120","208","240","110-130","220-240","277"]},"electricalConfiguration":{"type":"string","enum":["star","delta"],"default":"star","description":"Defines the type of electrical configuration of the charge point. The available options are </br> `star` - Star/Wye (Y) (default)</br> `delta` - Delta (Δ)</br>"},"phases":{"type":"string","enum":["single_phase","three_phase","split_phase"]},"phaseRotation":{"type":"string","nullable":true,"enum":["RST","RTS","SRT","STR","TRS","TSR"],"description":"`R` stands for `L1`, </br>\n`S` - for `L2` </br>\n`T` - for `L3` </br>\nSo for example `RST` = `L1`, `L2`, `L3`, while `RTS` = `L1`, `L3`, `L2`, etc. </br>\nWe are deriving the connected phase from this property for single phase if connectedPhase is not provided. Please don't rely on this property anymore as this functionality will be turned of in near future. Pass the correct connectedPhase instead. If you pass both properties (connectedPhase and phaseRotation) only connectedPhase will be taken into consideration for determining the phase.\n"},"allowDynamicLoadManagement":{"type":"boolean","description":"When selected, the Charge Point can be added to a DLM circuit."},"connectedPhase":{"allOf":[{"type":"string","nullable":true,"enum":["L1","L2","L3","L1_L2","L1_L3","L2_L3"],"description":"Specifies the active line conductors used in the circuit.\n- `L1_L2` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L2_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1_L3` - Valid when `phases` = `split_phase` in electrical configuration `star` or `phases` = `single_phase` in electrical configuration `delta`\n- `L1` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L2` - Valid when `phases` = `single_phase` in electrical configuration `star`\n- `L3` - Valid when `phases` = `single_phase` in electrical configuration `star`\n"}]}},"required":["mode","defaultChargePointMaxCurrent","minCurrent","enableKeepAwake","maxVoltage","phases","phaseRotation"]},"SmartChargingDisabled":{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"],"description":"`disabled` - no smart charging is available for the charge point\n"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."}},"required":["mode"]},"PersonalSmartChargingPreferencesUserControlledSchedule":{"title":"User controlled schedule","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["user_controlled_schedule"]},"preferences":{"type":"object","required":["startTime","endTime"],"properties":{"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen. Applicable for schedule mode"},"targetCharge":{"type":"object","nullable":true,"properties":{"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"trackElectricityCosts":{"type":"object","nullable":true,"properties":{"priceOffPeak":{"type":"number","example":1.3},"pricePeak":{"type":"number","example":0.9}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},"PersonalSmartChargingPreferencesSolar":{"title":"Solar","type":"object","required":["type","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["solar"]},"preferences":{"type":"object","required":["maxCurrentFromGrid","solarStableTime"],"properties":{"maxCurrentFromGrid":{"type":"number","description":"The max current that can be taken from grid to ensure a stable charging process.Recommended options to use 0, 6, 8, 10, 12."},"solarStableTime":{"type":"number","description":"Shorter time means more precise solar availability detection but also more frequent charging on/off switching. Recommended options to use 30, 60, 120, 300, 600."}}}}},"PersonalSmartChargingPreferencesOctopusAgile":{"title":"Octopus Agile","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_agile"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId","priceThreshold"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},"PersonalSmartChargingPreferencesOctopusGo":{"title":"Octopus Go","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["octopus_go"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["postCode","applicableTaxId"],"properties":{"applicableTaxId":{"type":"integer","description":"The ID of the applicable tax rate. Used to calculate correctly electricity costs shown to the user."},"targetCharge":{"type":"object","nullable":true,"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"minTargetChargeKwh":{"type":"number","example":10},"maxTargetChargeKwh":{"type":"number","example":20}}},"postCode":{"type":"string","description":"User's postcode. Used to determine the applicable tariff."},"priceThreshold":{"type":"number","description":"The price per kWh threshold below which charging would commence."}}}}},"PersonalSmartChargingPreferencesNordPool":{"title":"NordPool","type":"object","required":["type","preferences","integrationId"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["nordpool"]},"integrationId":{"type":"integer"},"preferences":{"type":"object","required":["location","targetCharge"],"properties":{"location":{"type":"string","enum":["GB1"],"description":"The price region based on NordPool prices"},"targetCharge":{"type":"object","required":["targetChargeKwh","departureTime"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10}}}}}}},"PersonalSmartChargingPreferencesChargerElectricityRate":{"title":"Electricity rate","type":"object","required":["type","electricityRateId","preferences"],"properties":{"enabled":{"type":"boolean","default":true,"description":"Enable or disable the smart charging from owner preferences\n"},"type":{"type":"string","enum":["charger_electricity_rate"]},"electricityRateId":{"type":"integer"},"preferences":{"type":"object","required":["startTime","endTime","targetCharge"],"properties":{"solar":{"type":"boolean","default":false,"description":"This boolean adds solar mode control for specific brands of chargers that are supported.\nE.g.: Some chargers support special keys in the charging profile which enables solar charging mode.\n"},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window which will be applied by default when no week day is chosen."},"endTime":{"type":"string","format":"time","description":"End of preferred charging window which will be applied by default when no week day is chosen."},"targetCharge":{"type":"object","required":["departureTime","targetChargeKwh"],"properties":{"departureTime":{"type":"string","format":"time"},"preconditioningTime":{"type":"integer","description":"The time in minutes before departure when the charging will be performed with full power."},"targetChargeKwh":{"type":"number","example":10,"description":"The desired charge energy which will be achieved with the most optimal price."}}},"weekDays":{"type":"array","items":{"type":"object","properties":{"days":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Specify the day(s) for which the schedule will apply."},"startTime":{"type":"string","format":"time","description":"Start of preferred charging window for chosen day(s).","example":"16:00"},"endTime":{"type":"string","format":"time","description":"End of preferred charging window for chosen day(s).","example":"23:00"}},"required":["days","startTime","endTime"]}}}}}},"PartnerAdmin-read":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Unique identifier of the partner administrator"},"name":{"type":"string","description":"Name of the administrator"},"email":{"type":"string","format":"email","description":"Email address of the administrator"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, can manage all partner resources\n* `partnerSiteManager` - Location-restricted access, can only manage assigned locations\n"},"roleId":{"type":"integer","description":"ID of the role assigned to this administrator"},"locale":{"type":"string","description":"Locale code for the administrator (e.g., \"en\", \"de\"). Omitted from response when not set.","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string"},"description":"List of IP addresses allowed for UI access","example":["192.168.1.1","10.0.0.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only present for `partnerSiteManager` type; omitted for `partner` type.","example":[1,2,3]},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"ISO 8601 timestamp of when the administrator was last updated"}}},"PartnerAdmin-create":{"type":"object","required":["name","email","password","passwordConfirmation","adminType","roleId"],"properties":{"name":{"type":"string","maxLength":255,"description":"Name of the administrator"},"email":{"type":"string","format":"email","maxLength":255,"description":"Email address of the administrator (must be unique across all admins)"},"password":{"type":"string","description":"Password meeting security requirements"},"passwordConfirmation":{"type":"string","description":"Must match the password field"},"adminType":{"type":"string","enum":["partner","partnerSiteManager"],"description":"Type of partner administrator:\n* `partner` - Full partner access, uses roles from partner role group\n* `partnerSiteManager` - Location-restricted access, uses roles from partner site manager role group\n"},"roleId":{"type":"integer","description":"Role ID (must be valid for the selected adminType)"},"locale":{"type":"string","maxLength":10,"nullable":true,"description":"Locale code for the administrator","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string","format":"ipv4"},"description":"List of IP addresses allowed for UI access restriction","example":["192.168.1.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Required when adminType is `partnerSiteManager`.","example":[1,2,3]}}},"PartnerAdmin-update":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Name of the administrator"},"email":{"type":"string","format":"email","maxLength":255,"description":"Email address of the administrator (must remain unique)"},"password":{"type":"string","description":"New password meeting security requirements. If provided, passwordConfirmation is required."},"passwordConfirmation":{"type":"string","description":"Must match the password field when password is provided"},"roleId":{"type":"integer","description":"Role ID (must be valid for the admin's current type)"},"locale":{"type":"string","maxLength":10,"nullable":true,"description":"Locale code for the administrator","example":"en"},"whitelistedIps":{"type":"array","items":{"type":"string","format":"ipv4"},"description":"List of IP addresses for UI access restriction (replaces existing list)","example":["192.168.1.1"]},"locationIds":{"type":"array","items":{"type":"integer"},"description":"Location IDs the administrator can manage. Only applicable for `partnerSiteManager` type.","example":[1,2,3]}}},"SubscriptionBillingPeriod-read":{"type":"object","description":"Subscription billing period","properties":{"id":{"type":"integer","description":"The billing period ID"},"subscriptionPlanId":{"type":"integer","description":"The ID of the subscription plan"},"subscriptionId":{"type":"integer","description":"The ID of the subscription"},"startedAt":{"type":"string","format":"date-time","description":"The start date of the billing period (ISO 8601 formatted)"},"endedAt":{"type":"string","format":"date-time","description":"The end date of the billing period (ISO 8601 formatted)"},"totalAmount":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Total amount (base fee + charger fees + session charges)"},"baseFee":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Subscription base fee amount"},"chargePointFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Per-charge-point fees amount"},"sessionFees":{"type":"object","properties":{"withTax":{"type":"number"},"withoutTax":{"type":"number"}},"required":["withTax"],"description":"Sum of all charging session costs during this billing period"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"The ISO 4217 3-letter code of the currency"},"firstPaymentFailureAt":{"type":"string","format":"date-time","description":"First payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureAt":{"type":"string","format":"date-time","description":"Latest payment failure date (ISO 8601 formatted). Cleared when a payment retry succeeds."},"latestPaymentFailureReason":{"type":"string","description":"Latest payment failure reason"},"obligationsTransferredAt":{"type":"string","format":"date-time","description":"When obligations were transferred (ISO 8601 formatted)"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 formatted date","readOnly":true}},"required":["id","subscriptionPlanId","subscriptionId","startedAt","endedAt","totalAmount","baseFee","currency","createdAt"]}},"responses":{"BadRequestError":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"UnauthorizedError":{"description":"Access token is missing or invalid","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"NoAccessError":{"description":"You do not have permission to perform the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","default":"This action is unauthorized."}}}}}},"ValidationError":{"description":"The payload you provided is invalid","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"NotFound":{"description":"The record is not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"StartSessionAccepted":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","required":["success","sessionId","authorizationId"],"properties":{"success":{"type":"boolean","description":"When the action is successful the value would be true. When the action is rejected the value would be false and additional information would be provided in the message property."},"sessionId":{"type":"number","nullable":true,"description":"The numeric representation of the session id being started. You need this in order to request session stop."},"authorizationId":{"type":"number","nullable":true,"description":"The numeric representation of the authorization. You need this in order to request session details."},"message":{"type":"string","description":"Additional information, only displayed when the action is rejected."},"errorCode":{"type":"string","enum":["BILLING_NOT_ASSOCIATED","BILLING_NOT_PARTNER_ASSOCIATED","INTERNAL_ISSUE","SESSION_EXISTS","AGILE_STREETS_CALCULATE","AGILE_STREETS_COMMUNICATION","CHARGING_NOT_ALLOWED","LOCATION_IS_CLOSED","USER_VALIDATION_NOT_COMPLETE","TERMS_NOT_ACCEPTED","USER_IS_DISABLED","SUBSCRIPTION_REQUIRED","SESSION_ALREADY_RUNNING","PREVIOUS_SESSION_NOT_PAID","ACCESS_RESTRICTED","PAYMENT_METHOD_REQUIRED","CANNOT_BILL_PAYMENT_METHOD","CORPORATE_ACCOUNT_LIMIT_REACHED","CANNOT_USE_EXPIRED_PAYMENT_METHOD","CANNOT_USE_PAYMENT_METHOD","PAYMENT_NO_FUNDS"],"description":"Reason for the error causing the session to fail starting:\n  * `BILLING_NOT_ASSOCIATED` - The selected corporate billing is not associated with the user\n  * `BILLING_NOT_PARTNER_ASSOCIATED` - The selected corporate billing is allowed on EVSEs that are not associated with the partner\n  * `INTERNAL_ISSUE` - Internal issue\n  * `SESSION_EXISTS` - Session already exists\n  * `AGILE_STREETS_CALCULATE` - Agile Streets calculation issue\n  * `AGILE_STREETS_COMMUNICATION` - Could not connect with Agile Streets\n  * `CHARGING_NOT_ALLOWED` - The tariff does not allow to charge on this evse\n  * `LOCATION_IS_CLOSED` - Charge point's location is closed\n  * `USER_VALIDATION_NOT_COMPLETE` - Either your email or phone is not verified or your profile is not completed\n  * `TERMS_NOT_ACCEPTED` - User hasn't accepted latest Terms\n  * `USER_IS_DISABLED` - Your account is disabled\n  * `SUBSCRIPTION_REQUIRED` - You do not have an active subscription for this charging point\n  * `SESSION_ALREADY_RUNNING` - Having another running session is not allowed\n  * `PREVIOUS_SESSION_NOT_PAID` - Cannot start new session before paying the previous one\n  * `ACCESS_RESTRICTED` - You do not have access to this charge point\n  * `PAYMENT_METHOD_REQUIRED` - Cannot start a session without a payment method\n  * `CANNOT_BILL_PAYMENT_METHOD` - The payment method either is invalid or the partner does not allow billing\n  * `CORPORATE_ACCOUNT_LIMIT_REACHED` - Corporate billing is not allowed, corporate billing is not set up, corporate billing limit is reached or your payment method has insufficient funds.\n  * `CANNOT_USE_EXPIRED_PAYMENT_METHOD` - The payment method has expired\n  * `CANNOT_USE_PAYMENT_METHOD` - Payment method is not allowed or your subscription is cancelled\n  * `PAYMENT_NO_FUNDS` - The current balance is below the needed minimum amount or there are not enough funds in the credit card (works only if you use Stripe)\n"}}}}}},"StartSessionWithoutEvseAccepted":{"description":"Action accepted","content":{"application/json":{"schema":{"type":"object","required":["success","authorizationId"],"properties":{"success":{"type":"boolean","description":"When the action is successful the value would be true. When the action is rejected the value would be false and additional information would be provided in the message property."},"authorizationId":{"type":"number","nullable":true,"description":"The numeric representation of the authorization. You need this in order to request session details."},"message":{"type":"string","description":"Additional information, only displayed when the action is rejected."},"errorCode":{"type":"string","enum":["BILLING_NOT_ASSOCIATED","BILLING_NOT_PARTNER_ASSOCIATED","INTERNAL_ISSUE","AGILE_STREETS_CALCULATE","AGILE_STREETS_COMMUNICATION","CHARGING_NOT_ALLOWED","LOCATION_IS_CLOSED","USER_VALIDATION_NOT_COMPLETE","TERMS_NOT_ACCEPTED","USER_IS_DISABLED","SUBSCRIPTION_REQUIRED","SESSION_ALREADY_RUNNING","PREVIOUS_SESSION_NOT_PAID","ACCESS_RESTRICTED"],"description":"Reason for the error causing the session to fail starting:\n  * `BILLING_NOT_ASSOCIATED` - The selected corporate billing is not associated with the user\n  * `BILLING_NOT_PARTNER_ASSOCIATED` - The selected corporate billing is allowed on EVSEs that are not associated with the partner\n  * `INTERNAL_ISSUE` - Internal issue\n  * `AGILE_STREETS_CALCULATE` - Agile Streets calculation issue\n  * `AGILE_STREETS_COMMUNICATION` - Could not connect with Agile Streets\n  * `CHARGING_NOT_ALLOWED` - The tariff does not allow to charge on this evse\n  * `LOCATION_IS_CLOSED` - Charge point's location is closed\n  * `USER_VALIDATION_NOT_COMPLETE` - Either your email or phone is not verified or your profile is not completed\n  * `TERMS_NOT_ACCEPTED` - User hasn't accepted latest Terms\n  * `USER_IS_DISABLED` - Your account is disabled\n  * `SUBSCRIPTION_REQUIRED` - You do not have an active subscription for this charging point\n  * `SESSION_ALREADY_RUNNING` - Having another running session is not allowed\n  * `PREVIOUS_SESSION_NOT_PAID` - Cannot start new session before paying the previous one\n  * `ACCESS_RESTRICTED` - You do not have access to this charge point\n"}}}}}},"FeatureDisabled":{"description":"Feature disabled for the system","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"Conflict":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"TooManyRequestsError":{"description":"Too many requests. Please try again later. For more information, please check the rate limit headers X-RateLimit-*","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"RequestTimeout":{"description":"Request timeout - the target did not respond within the expected time","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"NotAcceptable":{"description":"The requested operation is not supported by the target device (e.g., the charge point does not implement the required feature)","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"FailedDependency":{"description":"The requested operation cannot be completed because it depends on communication with an external system (e.g., charge point) that is currently disconnected or unreachable","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token"}}}}