Skip to content

Create Charger

POST
/tenant/{tenantId}/charger
curl --request POST \
--url https://api.exolink.cloud/tenant/example/charger \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "profileId": 1, "displayName": "example", "identity": "example", "aliases": { "1": "DE*XYZ*E000001" } }'

Create a new charger. Chargers created via the API are never provisioned. An identity that a live charger of the tenant already has is refused with 409; an identity that only deleted chargers had is created again, with every field set as for a new charger.

tenantId
required
string

Tenant domain prefix

Media typeapplication/json
object
profileId
required

Configuration profile ID

integer
displayName

Charger display name

string
identity
required

Unique identity for OCPP communication

string
aliases

Identity the charger has on a CPMS, keyed by CPMS ID

object
key
additional properties
string

Example

{
"1": "DE*XYZ*E000001"
}

Charger created successfully

Media typeapplication/json
object
id

Unique identifier for the charger

integer
tenantId

ID of the tenant that owns this charger

integer
profileId

ID of the configuration profile associated with this charger

integer
displayName

User-friendly name for the charger

string
nullable
provisioned

Indicates whether the charger has been discovered and configured

boolean
identity

Unique identity string used for OCPP communication

string
chargeBoxSerialNumber

Serial number of the charge box hardware

string
nullable
chargePointSerialNumber

Serial number of the charge point

string
nullable
meterSerialNumber

Serial number of the integrated energy meter

string
nullable
chargePointModel

Model identifier of the charge point

string
chargePointVendor

Manufacturer or vendor of the charge point

string
firmwareVersion

Current firmware version running on the charger

string
nullable
iccid

Integrated Circuit Card Identifier for the SIM card (if applicable)

string
nullable
imsi

International Mobile Subscriber Identity for cellular connectivity (if applicable)

string
nullable
meterType

Type or model of the energy meter

string
nullable
status

Current operational status of the charger; empty when not blocked

string
Allowed values: BLOCKED ""
aliases

Identity the charger has on a CPMS, keyed by CPMS ID

object
key
additional properties
string
createdAt

Timestamp when the charger record was created

string
updatedAt

Timestamp when the charger record was last updated

string
deletedAt

Timestamp when the charger record was soft-deleted (null if active)

string
nullable
profileName

Name of the configuration profile associated with this charger

string
chargerConnected

Indicates whether the charger is currently connected to the platform; null when unknown

boolean
nullable
cpmsConnected

Indicates whether the charger is currently connected to the CPMS backend; null when unknown

boolean
nullable
connectedCpmsIds

IDs of the CPMS backends the charger is currently connected to; null when unknown

Array<string>
nullable
cpmsName

Name(s) of the CPMS backend(s) this charger is connected to

string
cpmsUrl

WebSocket URL(s) of the CPMS backend(s) this charger is connected to

string

Example

{
"id": 1,
"tenantId": 1,
"profileId": 1,
"displayName": "My Charger",
"provisioned": false,
"identity": "TEST",
"chargeBoxSerialNumber": "12345",
"chargePointSerialNumber": "12345",
"chargePointModel": "KC-P30-EC2404B2-E00",
"chargePointVendor": "Keba AG",
"firmwareVersion": "1.0.0",
"status": "BLOCKED",
"aliases": {
"1": "DE*XYZ*E000001"
},
"createdAt": "2025-10-15T15:19:50.834Z",
"updatedAt": "2025-10-15T15:19:50.834Z",
"deletedAt": "2025-10-15T15:19:50.834Z",
"profileName": "Main Profile",
"cpmsName": "MyCPMS",
"cpmsUrl": "wss://cpms.example.com"
}

Malformed request

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Bad Request",
"errorCode": "ERR_API_BAD_REQUEST"
}

Missing, invalid or expired credentials

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Not authorized",
"errorCode": "ERR_API_NOT_AUTHORIZED"
}

The required product is not subscribed

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "No Connect product subscribed",
"errorCode": "ERR_API_PAYMENT_REQUIRED"
}

The caller may not perform this action

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Forbidden",
"errorCode": "ERR_API_FORBIDDEN"
}

Resource not found

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Charger '7' not found",
"errorCode": "ERR_API_RESOURCE_NOT_FOUND"
}

Resource already exists or a limit is reached

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Subscription limit for product reached",
"errorCode": "ERR_API_RESOURCE_ALREADY_EXISTS"
}

Validation or verification failed

Media typeapplication/json

Error response. Some rejections carry only message.

object
message
required

Error message

string
errorCode

Error code

string
Allowed values: ERR_API_BAD_REQUEST ERR_API_NOT_AUTHORIZED ERR_API_PAYMENT_REQUIRED ERR_API_FORBIDDEN ERR_API_RESOURCE_NOT_FOUND ERR_API_RESOURCE_IN_USE ERR_API_RESOURCE_ALREADY_EXISTS ERR_API_UNEXPECTED_STATE ERR_API_CONTENT_TOO_LARGE ERR_API_VALIDATION_FAILED ERR_API_VERIFICATION_FAILED ERR_API_NO_TENANT ERR_API_INVALID_INVITATION ERR_API_USER_DISABLED ERR_API_FAILED_DEPENDENCY ERR_EXOLINK_GENERIC
details

Failed validations, for requests checked against a schema

Array<object>
object
path

Path of the invalid field

string
message
string
code
string

Example

{
"message": "Missing parameter: displayName",
"errorCode": "ERR_API_VALIDATION_FAILED"
}