Operator API key context (accessible networks + granted scopes)
curl 'https://api.proranked.com/cpms/v1/me' \ -H 'X-API-Key: pr_…'
{
"data": {
"accessibleNetworkCount": 2,
"scopes": [
"string"
],
"keyType": "Private",
"unrestricted": false,
"operatorId": "1d475851-fb81-45eb-bc9f-aa7c0368fca4",
"email": "[email protected]"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Canonical CPMS operator scope catalog (the OAuth scope vocabulary)
Every CPMS scope and what it grants. Note that cpms:command:* scopes are elevated and excluded from the default operator set.
curl 'https://api.proranked.com/cpms/v1/.well-known/scopes' \ -H 'X-API-Key: pr_…'
{
"data": {
"apiFamily": "cpms",
"reads": [
"string"
],
"writes": [
"string"
],
"commands": [
"string"
],
"note": "string"
},
"success": true,
"timestamp": null
}Operator revenue rollup over a date range (scoped to the key's networks)
curl 'https://api.proranked.com/cpms/v1/analytics/revenue' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "revenue",
"period": "day",
"from": "2026-05-21T00:00:00Z",
"to": "2026-06-20T00:00:00Z",
"totalRevenue": 18432.55,
"networkCount": 2,
"networks": [
{
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"rollup": null
}
]
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator energy (kWh) rollup over a date range
curl 'https://api.proranked.com/cpms/v1/analytics/energy' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "energy",
"period": "day",
"from": "2026-05-21T00:00:00Z",
"to": "2026-06-20T00:00:00Z",
"totalEnergyKwh": 54210.4,
"networkCount": 2,
"networks": [
{
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"rollup": null
}
]
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator session-count rollup over a date range
curl 'https://api.proranked.com/cpms/v1/analytics/sessions' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "sessions",
"period": "day",
"from": "2026-05-21T00:00:00Z",
"to": "2026-06-20T00:00:00Z",
"totalSessions": 7421,
"networkCount": 2,
"networks": [
{
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"rollup": null
}
]
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator connector utilization rollup over a date range
curl 'https://api.proranked.com/cpms/v1/analytics/utilization' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "utilization",
"period": "day",
"from": "2026-05-21T00:00:00Z",
"to": "2026-06-20T00:00:00Z",
"averageUtilization": 37.42,
"networkCount": 2,
"networks": [
{
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"rollup": null
}
]
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator charger uptime / availability (SLA) snapshot
curl 'https://api.proranked.com/cpms/v1/analytics/uptime' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "uptime",
"totalChargers": 84,
"available": 60,
"charging": 16,
"offline": 8,
"uptimePercent": 90.5,
"offlinePercent": 9.5,
"networkCount": 2,
"networks": [
{
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"totalChargers": 42,
"available": 30,
"charging": 8,
"offline": 4,
"availablePercent": 71.4,
"inUsePercent": 19,
"offlinePercent": 9.5
}
]
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator KPI summary (revenue, energy, sessions, avg duration)
curl 'https://api.proranked.com/cpms/v1/analytics/kpis' \ -H 'X-API-Key: pr_…'
{
"data": {
"metric": "kpis",
"from": "2026-05-21T00:00:00Z",
"to": "2026-06-20T00:00:00Z",
"totalSessions": 7421,
"totalEnergyKwh": 54210.4,
"totalRevenue": 18432.55,
"avgDurationMinutes": 46.7,
"networkCount": 2
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}List the operator's CPMS API keys (prefix/suffix only — never the secret)
curl 'https://api.proranked.com/cpms/v1/api-keys' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Reporting agent (read-only)",
"description": "Pulls nightly CDR exports.",
"keyType": "Rest",
"visibility": "Private",
"apiFamily": "cpms",
"keyClass": "ServerSide",
"keyEnvironment": "live",
"keyPrefix": "pk_cpms_live_",
"last4": "a1b2",
"permissions": [
"string"
],
"expiresAt": "2027-01-01T00:00:00Z",
"isRevoked": false,
"isExpired": false,
"lastUsedAt": "2026-06-19T03:00:00Z",
"usageCount": 14820,
"rateLimitPerHour": 5000,
"createdAt": "2026-03-12T08:00:00Z"
}
],
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Mint a new CPMS API key (the full secret is shown ONCE in this response)
curl -X POST 'https://api.proranked.com/cpms/v1/api-keys' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Reporting agent (read-only)",
"visibility": "Private",
"apiFamily": "cpms",
"keyClass": "ServerSide",
"keyPrefix": "pk_cpms_live_",
"last4": "a1b2",
"key": "pk_cpms_live_3f9a2c8e7b1d4f60a5c3e2d1b0a9f8e7",
"message": "Store this key securely. It will not be shown again."
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Revoke + soft-delete one of the operator's CPMS API keys
curl -X DELETE 'https://api.proranked.com/cpms/v1/api-keys/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"revoked": true,
"deleted": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Query the network's operator-action audit log
Returns the tenant-scoped audit trail of operator/API actions (create/update/delete/commands across tariffs, chargers, connectors, settings, team, API keys), newest first. Filter by category, action, resourceId, and a from/to UTC window. Page size 1–200 (default 50). The 'who did what, when, from where' feed for SOC2/ISO and compliance dashboards.
curl 'https://api.proranked.com/cpms/v1/audit-log' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": 80421,
"category": "tariff",
"action": "updated",
"resourceId": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
"resourceName": "Standard AC",
"description": "Tariff pricing updated",
"details": "{\"field\":\"energyRate\",\"from\":0.30,\"to\":0.35}",
"userId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaa001",
"userName": "[email protected]",
"ipAddress": "203.0.113.24",
"timestamp": "2026-06-19T18:42:09Z"
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 137,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Catalog of firmware images available for a charger model
curl 'https://api.proranked.com/cpms/v1/charger-models/{modelId}/firmware' \
-H 'X-API-Key: pr_…'{
"data": [
{
"id": "a1c2e3f4-5b6a-4c7d-8e9f-0a1b2c3d4e5f",
"version": "1.5.32",
"fileName": "evlink-1.5.32.bin",
"fileUrl": "https://firmware.phevnix.com/evlink/evlink-1.5.32.bin",
"fileSizeBytes": 8388608,
"releaseNotes": "Fixes intermittent MeterValues drop on AC connectors.",
"ocppVersionSupport": "1.6,2.0.1",
"checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"isLatest": true,
"releasedAt": "2026-05-01T00:00:00Z",
"createdAt": "2026-05-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 25,
"total": 7,
"totalPages": 1
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List charger models (global catalog, paginated; filter by manufacturer or search)
curl 'https://api.proranked.com/cpms/v1/charger-models' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"modelName": "string",
"description": "string",
"maxPower": 0,
"numberOfConnectors": 0,
"supportedConnectorTypes": "string",
"ocppVersion": "string",
"supportedFeatures": "string",
"imageUrl": "string",
"datasheetUrl": "string",
"manufacturer": null,
"createdAt": null,
"updatedAt": null
}
],
"pagination": {
"page": 0,
"pageSize": 0,
"total": 0,
"totalPages": 0
},
"success": true,
"timestamp": null
}Get a charger model by id (with manufacturer details)
curl 'https://api.proranked.com/cpms/v1/charger-models/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"modelName": "string",
"description": "string",
"maxPower": 0,
"numberOfConnectors": 0,
"supportedConnectorTypes": "string",
"ocppVersion": "string",
"supportedFeatures": "string",
"imageUrl": "string",
"datasheetUrl": "string",
"manufacturer": null,
"createdAt": null,
"updatedAt": null
},
"success": true,
"timestamp": null
}List the operator's chargers (+ live status)
curl 'https://api.proranked.com/cpms/v1/chargers' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"uid": "CP-IslaVerde-01",
"status": "Available",
"networkId": 3,
"locationId": 12,
"serialNumber": "SN-A1B2C3D4",
"firmwareVersion": "1.5.32",
"ocppVersion": "1.6",
"modelUuid": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"manufacturerUuid": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"locationName": "Isla Verde Plaza",
"locationUuid": "c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f"
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 137,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Register (create) a charger on one of the operator's networks
curl -X POST 'https://api.proranked.com/cpms/v1/chargers' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"uid": "CP-IslaVerde-01",
"evseId": "PR-A1B2C3",
"serialNumber": "SN-A1B2C3D4",
"status": "UNKNOWN",
"networkId": 3,
"locationId": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"created": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Charger detail (status, network, location, connectors)
curl 'https://api.proranked.com/cpms/v1/chargers/{uuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"uid": "CP-IslaVerde-01",
"status": "Available",
"networkId": 3,
"locationId": 12,
"serialNumber": "SN-A1B2C3D4",
"firmwareVersion": "1.5.32",
"ocppVersion": "1.6",
"maxPowerKw": 150,
"securityProfile": 2,
"lastHeartbeat": "2026-06-19T18:42:07Z",
"isOnline": true,
"modelUuid": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"manufacturerUuid": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"locationName": "Isla Verde Plaza",
"locationUuid": "c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f",
"connectors": [
{
"id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"number": 1,
"standard": "IEC_62196_T2",
"format": "SOCKET",
"powerType": "AC_3_PHASE",
"maxPowerKw": 22,
"status": "Available"
}
]
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Update charger details (status, physical reference, floor level, location)
curl -X PATCH 'https://api.proranked.com/cpms/v1/chargers/{uuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"updated": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Soft-delete (decommission) a charger
curl -X DELETE 'https://api.proranked.com/cpms/v1/chargers/{uuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"deleted": true,
"deactivatedConnectors": 2,
"deactivatedAssignments": 1
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator remote-start a charging session on one of the operator's own chargers (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/remote-start' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"idTag": "OPERATOR-START-001",
"accepted": true,
"deviceType": "OCPP",
"transactionId": "80231",
"message": "Start command accepted. The session row is created when the charger confirms StartTransaction; resolve it via GET /api/cpms/v1/sessions?status=ACTIVE."
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator remote-stop an active charging session on one of the operator's own chargers (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/remote-stop' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"sessionId": "7c1d2e30-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
"status": "STOPPING",
"accepted": true,
"deviceType": "OCPP",
"message": "Stop command accepted. Final session data arrives with the charger's StopTransaction."
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator reboot (Soft/Hard reset) one of the operator's own chargers (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/reboot' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"resetType": "Soft",
"accepted": true,
"message": "Soft reset command sent successfully"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Add a connector to one of the operator's chargers
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{uuid}/connectors' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 2,
"standard": "IEC_62196_T2",
"format": "SOCKET",
"powerType": "AC_3_PHASE",
"maxVoltage": 400,
"maxAmperage": 32,
"maxPower": 22,
"created": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator unlock a connector on one of the operator's own chargers (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/unlock-connector' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"accepted": true,
"message": "Unlock command sent successfully"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator change a charger/connector availability on the device (Operative/Inoperative, live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/change-availability' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 0,
"type": "Inoperative",
"accepted": true,
"message": "ChangeAvailability (Inoperative) command sent successfully"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator trigger an OCPP message on one of the operator's own chargers (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/trigger-message' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"requestedMessage": "StatusNotification",
"connectorNumber": 1,
"accepted": true,
"message": "TriggerMessage (StatusNotification) command sent successfully"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Read a charger's OCPP configuration (1.6 GetConfiguration / 2.0.1 GetVariables)
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/configuration' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargePointId": "CP-IslaVerde-01",
"ocppVersion": "1.6",
"result": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Change a charger's OCPP configuration key (1.6 ChangeConfiguration / 2.0.1 SetVariables, live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/configuration' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargePointId": "CP-IslaVerde-01",
"ocppVersion": "1.6",
"key": "HeartbeatInterval",
"accepted": true,
"result": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}OCPP 2.0.1: read device-model variables (GetVariables)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/variables/get' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargePointId": "CP-IslaVerde-01",
"ocppVersion": "1.6",
"result": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}OCPP 2.0.1: write device-model variables (SetVariables, live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/variables/set' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargePointId": "CP-IslaVerde-01",
"ocppVersion": "2.0.1",
"accepted": true,
"result": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Apply a firmware image to one of the operator's own chargers (OTA; live control)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/firmware/update' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"firmwareVersionId": "a1c2e3f4-5b6a-4c7d-8e9f-0a1b2c3d4e5f",
"firmwareVersion": "1.5.32",
"location": "https://firmware.phevnix.com/evlink/evlink-1.5.32.bin",
"accepted": true,
"payload": "{\"status\":\"Accepted\"}",
"message": "UpdateFirmware command accepted. Track progress via the charger's FirmwareStatusNotification (GET /api/cpms/v1/chargers/{id}/firmware/status)."
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Current firmware version + most recent firmware-update status for a charger
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/firmware/status' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"currentFirmwareVersion": "1.5.32",
"ocppVersion": "1.6",
"isOnline": true,
"lastHeartbeat": "2026-06-19T18:42:07Z",
"lastFirmwareUpdate": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Ask a charger to upload its diagnostics/log file (GetDiagnostics / GetLog)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/diagnostics/fetch' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargePointId": "CP-IslaVerde-01",
"fileName": "SN-A1B2C3D4_20260619-184205.log",
"accepted": true,
"uploadUrl": "https://blob.phevnix.com/diagnostics/SN-A1B2C3D4/SN-A1B2C3D4_20260619-184205.log",
"payload": "{\"fileName\":\"SN-A1B2C3D4_20260619-184205.log\"}",
"message": "Diagnostics request accepted. The charger uploads the file asynchronously; list it via GET /api/cpms/v1/diagnostic-files?chargerId={id}."
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Charger health snapshot: last heartbeat, online, recent status/error codes
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/diagnostics' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"serialNumber": "SN-A1B2C3D4",
"firmwareVersion": "1.5.32",
"ocppVersion": "1.6",
"ipAddress": "203.0.113.42",
"lastHeartbeat": "2026-06-19T18:42:07Z",
"isOnline": true,
"lastConnectionStatus": "Connected",
"statusHistory": [
{
"oldStatus": "AVAILABLE",
"newStatus": "FAULTED",
"errorCode": "GroundFailure",
"errorMessage": "Residual current detected",
"vendorErrorCode": "E-1042",
"timestamp": "2026-06-19T18:30:00Z"
}
],
"recentOcppMessages": [
{
"timestamp": "2026-06-19T18:41:55Z",
"direction": "incoming",
"messageType": "Call",
"action": "Heartbeat",
"status": "success",
"responseTimeMs": 42,
"correlationId": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"ocppVersion": "1.6"
}
],
"ocppMessageCount": 12847
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Recent OCPP commands sent to one of the operator's chargers, with results
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/commands' \
-H 'X-API-Key: pr_…'{
"data": [
{
"action": "string",
"status": "string",
"responseTimeMs": 0,
"timestamp": null,
"sentBy": "string",
"correlationId": "string"
}
],
"chargerId": "00000000-0000-0000-0000-000000000000",
"success": true,
"timestamp": null
}OCPP 2.0.1 device-model variables last reported by one of the operator's chargers
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/device-model' \
-H 'X-API-Key: pr_…'{
"data": [
{
"componentName": "string",
"componentInstance": "string",
"evseId": 0,
"connectorId": 0,
"variableName": "string",
"variableInstance": "string",
"attributeType": "string",
"attributeValue": "string",
"mutability": "string",
"dataType": "string",
"unit": "string",
"supportsMonitoring": true,
"lastReportedAt": null
}
],
"chargerId": "00000000-0000-0000-0000-000000000000",
"count": 0,
"success": true,
"timestamp": null
}Smart-charging profiles currently assigned to one of the operator's chargers
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/charging-profiles' \
-H 'X-API-Key: pr_…'{
"data": [
{
"assignmentId": 0,
"profileId": 0,
"isActive": true,
"startDate": null,
"endDate": null,
"profile": null
}
],
"chargerId": "00000000-0000-0000-0000-000000000000",
"count": 0,
"success": true,
"timestamp": null
}Variable-monitoring events reported by one of the operator's chargers
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/monitoring/events' \
-H 'X-API-Key: pr_…'{
"data": [
{
"eventId": 0,
"timestamp": null,
"trigger": "string",
"actualValue": "string",
"techCode": "string",
"techInfo": "string",
"cleared": true,
"transactionId": "string",
"componentName": "string",
"componentInstance": "string",
"variableName": "string",
"variableInstance": "string",
"severity": 0
}
],
"chargerId": "00000000-0000-0000-0000-000000000000",
"count": 0,
"success": true,
"timestamp": null
}Certificate metadata (serial, CN, validity, status) for one of the operator's chargers
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/certificates' \
-H 'X-API-Key: pr_…'{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"serialNumber": "string",
"thumbprint": "string",
"subjectCN": "string",
"issuerCN": "string",
"notBefore": null,
"notAfter": null,
"status": "string",
"revokedAt": null,
"revocationReason": "string",
"issuedAt": null,
"source": "string"
}
],
"chargerId": "00000000-0000-0000-0000-000000000000",
"count": 0,
"success": true,
"timestamp": null
}Live GetChargingProfiles — ask an OCPP 2.0.1 charger to report its installed profiles now
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/charging-profiles/query' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Live GetBaseReport — ask an OCPP 2.0.1 charger to re-report its full device model now
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/device-model/report' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Live GetDisplayMessages — list messages currently shown on an OCPP 2.0.1 charger
curl 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/display-messages' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Show a message on an OCPP 2.0.1 charger's display (SetDisplayMessage)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/display-messages' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Clear a message from an OCPP 2.0.1 charger's display (ClearDisplayMessage)
curl -X DELETE 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/display-messages/{messageId}' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Install variable monitors on an OCPP 2.0.1 charger (SetVariableMonitoring)
curl -X POST 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/monitoring/set' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Clear a variable monitor by id on an OCPP 2.0.1 charger (ClearVariableMonitoring)
curl -X DELETE 'https://api.proranked.com/cpms/v1/chargers/{chargerUuid}/monitoring/{monitorId}' \
-H 'X-API-Key: pr_…'{
"success": true,
"chargerId": "00000000-0000-0000-0000-000000000000",
"command": "string",
"ocppVersion": "string",
"errorCode": "string",
"errorDescription": "string",
"payload": "string",
"timestamp": null
}Live connector status
curl 'https://api.proranked.com/cpms/v1/connectors/{uuid}/status' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"number": 1,
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"status": "Charging",
"standard": "IEC_62196_T2",
"powerType": "AC_3_PHASE",
"maxPowerKw": 22,
"chargerOnline": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Update a connector's provisioning fields (Standard, Format, PowerType, MaxVoltage, MaxAmperage, MaxPower kW, Status). Scoped to the key's networks.
curl -X PUT 'https://api.proranked.com/cpms/v1/connectors/{connectorUuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"connectorIdentifier": "CP-IslaVerde-01-1",
"standard": "IEC_62196_T2",
"format": "SOCKET",
"powerType": "AC_3_PHASE",
"maxVoltage": 400,
"maxAmperage": 32,
"maxPower": 22,
"status": "AVAILABLE",
"networkId": 3,
"lastUpdated": "2026-06-19T18:42:07Z"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Soft-delete a connector
curl -X DELETE 'https://api.proranked.com/cpms/v1/connectors/{uuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"deleted": true,
"deactivatedAssignments": 0
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List diagnostic files a charger has uploaded (requires chargerId)
curl 'https://api.proranked.com/cpms/v1/diagnostic-files' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"name": "SN-A1B2C3D4_20260619-184205.log",
"url": "https://blob.phevnix.com/diagnostics/SN-A1B2C3D4/SN-A1B2C3D4_20260619-184205.log",
"size": 204800,
"uploadedAt": "2026-06-19T18:43:30Z"
}
],
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Operator SSE event stream (real-time updates scoped to the operator's networks)
curl 'https://api.proranked.com/cpms/v1/events/stream' \ -H 'X-API-Key: pr_…'
Catalog of firmware images applicable to the operator's chargers
curl 'https://api.proranked.com/cpms/v1/firmware' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "a1c2e3f4-5b6a-4c7d-8e9f-0a1b2c3d4e5f",
"version": "1.5.32",
"fileName": "evlink-1.5.32.bin",
"fileUrl": "https://firmware.phevnix.com/evlink/evlink-1.5.32.bin",
"fileSizeBytes": 8388608,
"releaseNotes": "Fixes intermittent MeterValues drop on AC connectors.",
"ocppVersionSupport": "1.6,2.0.1",
"checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"isLatest": true,
"releasedAt": "2026-05-01T00:00:00Z",
"createdAt": "2026-05-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 25,
"total": 7,
"totalPages": 1
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List drivers on the operator's networks currently held for an unpaid balance
curl 'https://api.proranked.com/cpms/v1/fraud/holds' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"driver_id": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a",
"email": "[email protected]",
"phone_verified": true,
"reason": "Unpaid idle-fee balance over threshold",
"held_at": "2026-06-18T09:21:44Z",
"outstanding_balance": 12.5
}
],
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Anti-fraud status for a driver (phone-verified, hold, outstanding balance)
curl 'https://api.proranked.com/cpms/v1/fraud/drivers/{driverUuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"driver_id": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a",
"email": "[email protected]",
"phone_verified": true,
"phone_verified_at": "2026-05-30T11:02:00Z",
"fraud_hold": true,
"fraud_hold_reason": "Unpaid idle-fee balance over threshold",
"fraud_hold_at": "2026-06-18T09:21:44Z",
"outstanding_balance": 12.5
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Clear a driver's fraud hold (optionally waive the outstanding balance so the live check passes)
curl -X POST 'https://api.proranked.com/cpms/v1/fraud/drivers/{driverUuid}/clear-hold' \
-H 'X-API-Key: pr_…'{
"data": {
"driver_id": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a",
"fraud_hold": false,
"hold_cleared": true,
"sessions_waived": 2
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Get provisioning caps: tier ceiling, your self-imposed cap, current usage, and remaining headroom for chargers and billable connectors
curl 'https://api.proranked.com/cpms/v1/limits' \ -H 'X-API-Key: pr_…'
{
"data": {
"planCode": "pro",
"chargers": {
"tierLimit": 50,
"selfLimit": 10,
"effectiveLimit": 10,
"currentUsage": 3,
"remaining": 7
},
"connectors": {
"tierLimit": 50,
"selfLimit": 10,
"effectiveLimit": 10,
"currentUsage": 3,
"remaining": 7
}
},
"success": true,
"timestamp": null
}Set or clear your self-imposed charger/connector caps (full replacement; null clears; never above the tier ceiling)
curl -X PUT 'https://api.proranked.com/cpms/v1/limits' \ -H 'X-API-Key: pr_…'
{
"data": {
"planCode": "pro",
"chargers": {
"tierLimit": 50,
"selfLimit": 10,
"effectiveLimit": 10,
"currentUsage": 3,
"remaining": 7
},
"connectors": {
"tierLimit": 50,
"selfLimit": 10,
"effectiveLimit": 10,
"currentUsage": 3,
"remaining": 7
}
},
"success": true,
"timestamp": null
}Request that the platform raise your tier ceiling above what your current plan allows
curl -X POST 'https://api.proranked.com/cpms/v1/limits/increase-request' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "b2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"resource": "connectors",
"currentTierLimit": 50,
"requestedLimit": 200,
"status": "pending",
"createdAt": "2026-06-23T18:22:00Z",
"nextStep": "Upgrade to Pro for a higher ceiling, or our team will review this request."
},
"success": true,
"timestamp": null
}List your tier-increase requests and their review status
curl 'https://api.proranked.com/cpms/v1/limits/increase-requests' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "b2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
"resource": "connectors",
"currentTierLimit": 50,
"requestedLimit": 200,
"status": "pending",
"reason": "Rolling out 150 connectors across 30 sites in Q3.",
"createdAt": "2026-06-23T18:22:00Z",
"reviewedAt": "2026-06-24T09:00:00Z",
"reviewNote": "Approved — Pro ceiling raised to 200 connectors."
}
],
"success": true,
"timestamp": null
}Read the present load-balancing allocation/cap for one of the operator's stations
curl 'https://api.proranked.com/cpms/v1/load-balancing/{stationOrLocationId}' \
-H 'X-API-Key: pr_…'{
"data": {
"stationId": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"enabled": true,
"strategy": "equal",
"siteMaxPowerKw": 150,
"safetyMarginPct": 15,
"currentDrawKw": 29.6,
"allocatedKw": 44,
"evses": [
{
"evseId": "PR-A1B2C3",
"physicalRef": "Bay 3",
"maxPowerKw": 22,
"allocatedKw": 11,
"currentDrawKw": 7.4,
"status": "Charging",
"priority": 0
}
],
"rules": [
{
"id": "7c2b1a90-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"name": "Default",
"description": "Default load balancing rule",
"loadLimitKw": 150,
"loadLimitAmps": 0,
"numberOfPhases": 3,
"strategy": "equal",
"fallbackStrategy": "equal",
"priority": 0,
"isActive": true,
"startTime": "00:00",
"endTime": "23:59",
"daysOfWeek": "0123456"
}
]
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Update the load-balancing configuration for one of the operator's stations
curl -X PUT 'https://api.proranked.com/cpms/v1/load-balancing/{stationOrLocationId}' \
-H 'X-API-Key: pr_…'{
"data": {
"stationId": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"updated": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Trigger an immediate load-balancing rebalance for one of the operator's stations
curl -X POST 'https://api.proranked.com/cpms/v1/load-balancing/{stationOrLocationId}/rebalance' \
-H 'X-API-Key: pr_…'{
"data": {
"stationId": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"rebalanced": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List the operator's locations/stations
curl 'https://api.proranked.com/cpms/v1/locations' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "2a1b9c80-3d4e-4f5a-9b6c-7d8e9f0a1b2c",
"name": "Isla Verde Plaza",
"address": "8169 Calle Marginal",
"city": "Carolina",
"state": "PR",
"country": "US",
"networkId": 3
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 137,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Create a location/site on one of the operator's networks
curl -X POST 'https://api.proranked.com/cpms/v1/locations' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"name": "Isla Verde Plaza",
"address": "100 Av. Isla Verde",
"city": "Carolina",
"networkId": 3,
"created": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Location/site detail
curl 'https://api.proranked.com/cpms/v1/locations/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "2a1b9c80-3d4e-4f5a-9b6c-7d8e9f0a1b2c",
"name": "Isla Verde Plaza",
"address": "8169 Calle Marginal",
"city": "Carolina",
"state": "PR",
"country": "US",
"postalCode": "00979",
"networkId": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Update a location/site
curl -X PUT 'https://api.proranked.com/cpms/v1/locations/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"updated": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Soft-delete a location/site (blocks if chargers attached or sessions active)
curl -X DELETE 'https://api.proranked.com/cpms/v1/locations/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"deleted": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List charger manufacturers (global catalog, paginated)
curl 'https://api.proranked.com/cpms/v1/manufacturers' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"logoUrl": "string"
}
],
"pagination": {
"page": 0,
"pageSize": 0,
"total": 0,
"totalPages": 0
},
"success": true,
"timestamp": null
}Get a charger manufacturer by id
curl 'https://api.proranked.com/cpms/v1/manufacturers/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"logoUrl": "string"
},
"success": true,
"timestamp": null
}Describe the authenticated operator key (networks, scopes, capabilities)
Alias of GET /cpms/v1/me, exempt from scope gating so a key can always describe itself.
curl 'https://api.proranked.com/cpms/v1/me-key' \ -H 'X-API-Key: pr_…'
{
"data": {
"accessibleNetworkCount": 2,
"scopes": [
"string"
],
"keyType": "Private",
"unrestricted": false,
"operatorId": "1d475851-fb81-45eb-bc9f-aa7c0368fca4",
"email": "[email protected]"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List the networks this key is authorized to operate
curl 'https://api.proranked.com/cpms/v1/networks' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a",
"name": "Isla Verde Network"
}
],
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}CSV (or JSON) export of the operator's sessions/revenue for a date range
curl 'https://api.proranked.com/cpms/v1/reports/export' \ -H 'X-API-Key: pr_…'
List the operator's charging sessions
curl 'https://api.proranked.com/cpms/v1/sessions' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "7c3d8e21-9a4b-4c5d-8e6f-1a2b3c4d5e6f",
"status": "COMPLETED",
"chargerId": 48,
"chargerUuid": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"chargerUid": "CP-IslaVerde-01",
"energyKwh": 18.42,
"total": 7.95,
"currency": "USD",
"startedAt": "2026-06-19T17:05:11Z",
"endedAt": "2026-06-19T18:12:43Z"
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 137,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Charging session detail (energy, cost, timing)
curl 'https://api.proranked.com/cpms/v1/sessions/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "7c3d8e21-9a4b-4c5d-8e6f-1a2b3c4d5e6f",
"status": "ACTIVE",
"chargerId": 48,
"networkId": 3,
"energyKwh": 18.42,
"currentPowerKw": 11,
"total": 7.95,
"currency": "USD",
"startedAt": "2026-06-19T17:05:11Z",
"endedAt": "2026-06-19T18:12:43Z"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Session energy curve (meter values)
Returns the time-ordered OCPP meter-value samples captured during the charge — the per-session kWh consumption curve (cumulative register + instantaneous power, plus current/voltage/SoC/temperature when the charger reports them) for charging graphs and delivered-energy verification. Capped by `limit` (default 1000, max 5000); `truncated` flags when the session has more. Scoped to the key's networks.
curl 'https://api.proranked.com/cpms/v1/sessions/{id}/meter-values' \
-H 'X-API-Key: pr_…'{
"data": [
{
"timestamp": "2026-06-19T18:21:30Z",
"meterValue": 14.382,
"powerKw": 7.2,
"energyWh": 120,
"currentA": 31.5,
"currentB": 0,
"currentC": 0,
"voltageA": 230.1,
"voltageB": 0,
"voltageC": 0,
"stateOfCharge": 64,
"temperature": 0
}
],
"count": 96,
"truncated": false,
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Refund a session's charge (reverses the operator transfer) — off-by-default money action
curl -X POST 'https://api.proranked.com/cpms/v1/sessions/{id}/refund' \
-H 'X-API-Key: pr_…'{
"data": {
"sessionId": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f",
"refundId": "re_3PXyZ2EXAMPLE0001",
"refundedAmount": 9.82,
"currency": "USD",
"paymentIntent": "pi_3PXyZ2EXAMPLE0001",
"refunded": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator force-close a hung charging session (live control)
curl -X POST 'https://api.proranked.com/cpms/v1/sessions/{id}/force-stop' \
-H 'X-API-Key: pr_…'{
"data": {
"sessionId": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f",
"stopped": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Waive a session's idle fee (full or partial) — money adjustment; off-by-default
curl -X POST 'https://api.proranked.com/cpms/v1/sessions/{id}/waive-idle-fee' \
-H 'X-API-Key: pr_…'{
"data": {
"sessionId": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f",
"originalIdleFee": 6,
"waivedAmount": 6,
"remainingIdleFee": 0,
"currency": "USD",
"waived": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Recorded lifecycle/domain events for one of the operator's charging sessions
curl 'https://api.proranked.com/cpms/v1/sessions/{id}/events' \
-H 'X-API-Key: pr_…'{
"data": [
{
"eventType": "string",
"details": "string",
"occurredAt": null
}
],
"sessionId": "00000000-0000-0000-0000-000000000000",
"count": 0,
"success": true,
"timestamp": null
}Read the operator's network settings (the fields safe for self-service)
curl 'https://api.proranked.com/cpms/v1/settings' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "c0ffee00-1234-4567-89ab-cdef01234567",
"name": "Isla Verde Charging",
"description": "Public charging across the Isla Verde district.",
"contactEmail": "[email protected]",
"contactPhone": "+1-787-555-0100",
"website": "https://islaverde.example.com",
"country": "US",
"currency": "USD",
"timeZone": "America/Puerto_Rico",
"isActive": true,
"branding": {
"primaryColor": "#E2231A",
"secondaryColor": "#1A1A1A",
"logoUrl": "https://cdn.example.com/logo.svg",
"faviconUrl": "https://cdn.example.com/favicon.ico"
},
"billing": {
"vatRate": 11.5,
"billingAddress": "100 Av. Isla Verde, Carolina, PR 00979",
"invoicePrefix": "INV",
"paymentTermsDays": 30
}
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Update the operator's network settings (self-service subset only)
curl -X PUT 'https://api.proranked.com/cpms/v1/settings' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "c0ffee00-1234-4567-89ab-cdef01234567",
"updated": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Get the effective charging limit (composite schedule) for one of the operator's connectors
curl 'https://api.proranked.com/cpms/v1/smart-charging/{chargerUuid}/limit' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"unit": "A",
"accepted": true,
"schedule": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Set a per-connector charging limit (A or W) on one of the operator's chargers
curl -X PUT 'https://api.proranked.com/cpms/v1/smart-charging/{chargerUuid}/limit' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"unit": "A",
"limit": 32,
"profileId": 90001,
"accepted": true,
"reason": "The charger rejected the request.",
"retryable": false
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Clear the operator-set charging limit on one of the operator's connectors
curl -X DELETE 'https://api.proranked.com/cpms/v1/smart-charging/{chargerUuid}/limit' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"profileId": 90001,
"accepted": true,
"reason": "The charger rejected the request.",
"retryable": false
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Read the OCPP composite schedule for one of the operator's connectors
curl 'https://api.proranked.com/cpms/v1/smart-charging/{chargerUuid}/composite-schedule' \
-H 'X-API-Key: pr_…'{
"data": {
"chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorNumber": 1,
"durationSeconds": 3600,
"unit": "A",
"accepted": true,
"schedule": null
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List the operator's tariffs
curl 'https://api.proranked.com/cpms/v1/tariffs' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
"name": "Standard AC",
"type": "REGULAR",
"currency": "USD",
"energyRate": 0.35,
"timeRate": 2,
"idleRate": 0.5,
"isFree": false
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 137,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Create a new tariff on one of the operator's networks
curl -X POST 'https://api.proranked.com/cpms/v1/tariffs' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "d4e5f6a7-b8c9-4012-8345-6789abcdef01",
"name": "Standard AC",
"currency": "USD",
"networkId": "c0ffee00-1234-4567-89ab-cdef01234567",
"created": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Tariff detail (rates, currency)
curl 'https://api.proranked.com/cpms/v1/tariffs/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
"name": "Standard AC",
"type": "REGULAR",
"currency": "USD",
"energyRate": 0.35,
"timeRate": 2,
"idleRate": 0.5,
"sessionFee": 1,
"idleGracePeriodMinutes": 15,
"idleFeeEnabled": true,
"idleFeeMaximum": 20,
"taxRate": 11.5,
"peakHoursStart": "17:00",
"peakHoursEnd": "21:00",
"peakMultiplier": 1.5,
"weekendMultiplier": 0.8,
"isFree": false
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Update tariff pricing and fields
curl -X PUT 'https://api.proranked.com/cpms/v1/tariffs/{tariffUuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "d4e5f6a7-b8c9-4012-8345-6789abcdef01",
"updated": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Soft-delete a tariff (cascade-deactivates its assignments)
curl -X DELETE 'https://api.proranked.com/cpms/v1/tariffs/{tariffUuid}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "d4e5f6a7-b8c9-4012-8345-6789abcdef01",
"deleted": true,
"deactivatedAssignments": 3
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Assign a tariff to a network, location, charger, or connector
curl -X POST 'https://api.proranked.com/cpms/v1/tariffs/{tariffUuid}/assign' \
-H 'X-API-Key: pr_…'{
"data": {
"assignmentId": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"tariffId": "b2c3d4e5-6f70-8192-a3b4-c5d6e7f8a9b0",
"level": "Charger",
"locationUuid": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"chargerUuid": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
"connectorUuid": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"assigned": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List active assignments for a tariff
curl 'https://api.proranked.com/cpms/v1/tariffs/{tariffUuid}/assignments' \
-H 'X-API-Key: pr_…'{
"data": [
{
"assignmentId": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"level": "Charger",
"locationId": 12,
"chargerId": 45,
"connectorId": 89,
"startDate": "2026-06-01T12:00:00Z",
"priority": 0
}
],
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Detach (deactivate) a tariff assignment
curl -X DELETE 'https://api.proranked.com/cpms/v1/tariffs/assignments/{assignmentId}' \
-H 'X-API-Key: pr_…'{
"data": {
"assignmentId": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"detached": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List the operator's team members
curl 'https://api.proranked.com/cpms/v1/team' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "11111111-2222-4333-8444-555566667777",
"email": "[email protected]",
"firstName": "Maria",
"lastName": "Rivera",
"role": "Manager",
"joinedAt": "2026-03-12T08:00:00Z",
"lastActiveAt": "2026-06-19T17:55:00Z"
}
],
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Add an existing platform user to the operator's team
curl -X POST 'https://api.proranked.com/cpms/v1/team' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "11111111-2222-4333-8444-555566667777",
"email": "[email protected]",
"role": "Manager",
"added": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Update a team member's role
curl -X PUT 'https://api.proranked.com/cpms/v1/team/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "11111111-2222-4333-8444-555566667777",
"role": "Admin",
"updated": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Remove a team member from the operator's network
curl -X DELETE 'https://api.proranked.com/cpms/v1/team/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "11111111-2222-4333-8444-555566667777",
"removed": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Operator CDR / transaction ledger (paged; filters: chargerId, from, to) with cost/profit/payout fields
curl 'https://api.proranked.com/cpms/v1/transactions' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "7c1a2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"ocpiId": "CDR-2026-000123",
"sessionId": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f",
"chargerUid": "CP-IslaVerde-01",
"locationName": "Isla Verde Plaza",
"startTime": "2026-06-19T14:02:11Z",
"endTime": "2026-06-19T14:48:53Z",
"energyKwh": 23.4,
"amount": 9.82,
"currency": "USD",
"paymentStatus": "succeeded",
"paymentMethod": "card",
"paymentReference": "pi_3PXyZ2EXAMPLE0001",
"energyCost": 4.1,
"timeCost": 0,
"sessionFee": 0.5,
"processingFees": 0.41,
"totalCosts": 5.01,
"grossProfit": 5.31,
"netProfit": 4.81,
"profitMarginPercent": 48.9,
"taxAmount": 0,
"payoutId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"isFree": false
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 412,
"totalPages": 9
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Export the operator's CDRs for a date range as CSV (Form 480 / reconciliation)
curl 'https://api.proranked.com/cpms/v1/transactions/export' \ -H 'X-API-Key: pr_…'
Operator transaction (CDR) detail with full cost breakdown, profit summary, and payout id
curl 'https://api.proranked.com/cpms/v1/transactions/{id}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "7c1a2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
"ocpiId": "CDR-2026-000123",
"sessionId": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f",
"startTime": "2026-06-19T14:02:11Z",
"endTime": "2026-06-19T14:48:53Z",
"energyKwh": 23.4,
"totalTimeMinutes": 46.7,
"currency": "USD",
"amount": 9.82,
"paymentStatus": "succeeded",
"paymentMethod": "card",
"paymentReference": "pi_3PXyZ2EXAMPLE0001",
"authMethod": "AppUser",
"authorizationReference": "pi_3PXyZ2EXAMPLE0001",
"isFree": false,
"locationName": "Isla Verde Plaza",
"locationAddress": "100 Av. Isla Verde, Carolina",
"chargerUid": "CP-IslaVerde-01",
"connectorNumber": 1,
"costBreakdown": {
"energyCost": 4.1,
"timeCost": 0,
"sessionFee": 0.5,
"processingFees": 0.41,
"subtotal": 4.6,
"tax": 0,
"taxRate": 11.5,
"total": 9.82,
"totalCosts": 5.01
},
"profit": {
"grossProfit": 5.31,
"netProfit": 4.81,
"profitMarginPercent": 48.9
},
"payout": null,
"invoiceNumber": "INV-2026-000123",
"invoiceDate": "2026-06-20T00:00:00Z"
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}API consumption rollup (metering) for this key's networks
curl 'https://api.proranked.com/cpms/v1/usage' \ -H 'X-API-Key: pr_…'
{
"data": {
"totalRequests": 54210,
"totalUnits": 54210,
"sinceUtc": "2026-05-20T00:00:00Z",
"daily": [
{
"date": "2026-06-19T00:00:00Z",
"family": "cpms",
"env": "live",
"requests": 1842,
"units": 1842
}
]
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Grant a driver wallet credit (operator-funded)
Adds operator-funded balance to a driver's wallet for this network (promo/loyalty/goodwill); the driver spends it on the operator's chargers. Idempotent via idempotencyKey. Not a driver cash top-up.
curl -X POST 'https://api.proranked.com/cpms/v1/wallets/credit' \ -H 'X-API-Key: pr_…'
Get a driver's wallet balance for this network
curl 'https://api.proranked.com/cpms/v1/wallets/{driverId}' \
-H 'X-API-Key: pr_…'List the operator's webhook subscriptions
curl 'https://api.proranked.com/cpms/v1/webhooks' \ -H 'X-API-Key: pr_…'
{
"data": [
{
"id": "c7e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8",
"url": "https://example.com/webhooks/phevnix",
"events": "charging.session.started,charging.session.stopped",
"description": "Billing pipeline",
"is_active": true,
"consecutive_failures": 0,
"disabled_at": "2026-06-19T18:42:07Z",
"disabled_reason": "Too many consecutive delivery failures",
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-06-19T18:42:09Z"
}
],
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Create a webhook subscription for the operator's network
curl -X POST 'https://api.proranked.com/cpms/v1/webhooks' \ -H 'X-API-Key: pr_…'
{
"data": {
"id": "e1d2c3b4-a596-4877-8c9d-0e1f2a3b4c5d",
"url": "https://hooks.example.com/phevnix",
"events": "charging.session.started,charging.session.stopped",
"description": "Billing reconciliation hook",
"hmac_secret": "whsec_3f9a2c8e7b1d4f60a5c3e2d1b0a9f8e7",
"is_active": true,
"created_at": "2026-06-20T18:42:09Z"
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Update / re-enable a webhook subscription owned by the operator
curl -X PATCH 'https://api.proranked.com/cpms/v1/webhooks/{webhookId}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "c7e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8",
"url": "https://example.com/webhooks/phevnix",
"events": "charging.session.started,charging.session.stopped",
"description": "Billing pipeline",
"is_active": true,
"consecutive_failures": 0,
"disabled_at": "2026-06-19T18:42:07Z",
"disabled_reason": "Too many consecutive delivery failures",
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-06-19T18:42:09Z"
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Delete a webhook subscription owned by the operator
curl -X DELETE 'https://api.proranked.com/cpms/v1/webhooks/{webhookId}' \
-H 'X-API-Key: pr_…'{
"data": {
"id": "e1d2c3b4-a596-4877-8c9d-0e1f2a3b4c5d",
"deleted": true
},
"success": true,
"timestamp": "2026-06-20T18:42:09Z"
}Send a test event to a webhook subscription
curl -X POST 'https://api.proranked.com/cpms/v1/webhooks/{webhookId}/test' \
-H 'X-API-Key: pr_…'{
"data": {
"webhook_id": "c7e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8",
"test_enqueued": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}List recent delivery attempts for a webhook subscription
curl 'https://api.proranked.com/cpms/v1/webhooks/{webhookId}/deliveries' \
-H 'X-API-Key: pr_…'{
"data": [
{
"id": "d1e2f3a4-5b6c-7d8e-9f01-2a3b4c5d6e7f",
"event_type": "charging.session.stopped",
"http_status": 200,
"success": true,
"status": "Delivered",
"attempts": 1,
"max_attempts": 5,
"duration_ms": 142,
"next_retry_at": "2026-06-19T18:47:09Z",
"created_at": "2026-06-19T18:42:00Z",
"completed_at": "2026-06-19T18:42:09Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 42,
"totalPages": 3
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Retry a webhook delivery attempt
curl -X POST 'https://api.proranked.com/cpms/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry' \
-H 'X-API-Key: pr_…'{
"data": {
"delivery_id": "d1e2f3a4-5b6c-7d8e-9f01-2a3b4c5d6e7f",
"retry_enqueued": true
},
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}Catalog of available webhook event types
curl 'https://api.proranked.com/cpms/v1/webhooks/event-types' \ -H 'X-API-Key: pr_…'
{
"data": [
"string"
],
"success": true,
"timestamp": "2026-06-19T18:42:09Z"
}