Feature Profile: Core
Generated from the official OCA JSON schemas for OCPP 1.6 edition 2.
Field names, types, required status, enum values, and constraints are
extracted mechanically. No manual editing applied.
#Messages
- Authorize (CP → CS)
- BootNotification (CP → CS)
- ChangeAvailability (CS → CP)
- ChangeConfiguration (CS → CP)
- ClearCache (CS → CP)
- DataTransfer (CP ↔ CS)
- GetConfiguration (CS → CP)
- Heartbeat (CP → CS)
- MeterValues (CP → CS)
- RemoteStartTransaction (CS → CP)
- RemoteStopTransaction (CS → CP)
- Reset (CS → CP)
- StartTransaction (CP → CS)
- StatusNotification (CP → CS)
- StopTransaction (CP → CS)
- UnlockConnector (CS → CP)
#Authorize
Direction: CP → CS
Validate an idTag before or during a transaction.
#Authorize.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
idTag |
string | Yes | maxLength: 20 |
Example Authorize.req
{
"idTag": "ABCDEF1234"
}
#Authorize.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
idTagInfo |
object | Yes |
idTagInfo object:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Blocked, Expired, Invalid, ConcurrentTx |
|
expiryDate |
string (date-time) | No | ||
parentIdTag |
string | No | maxLength: 20 |
Example Authorize.conf
{
"idTagInfo": {
"status": "Accepted"
}
}
#BootNotification
Direction: CP → CS
Charge Point registers with the Central System after (re)boot.
#BootNotification.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargePointModel |
string | Yes | maxLength: 20 | |
chargePointVendor |
string | Yes | maxLength: 20 | |
chargeBoxSerialNumber |
string | No | maxLength: 25 | |
chargePointSerialNumber |
string | No | maxLength: 25 | |
firmwareVersion |
string | No | maxLength: 50 | |
iccid |
string | No | maxLength: 20 | |
imsi |
string | No | maxLength: 20 | |
meterSerialNumber |
string | No | maxLength: 25 | |
meterType |
string | No | maxLength: 25 |
Example BootNotification.req
{
"chargePointModel": "ABCDEF1234",
"chargePointVendor": "ABCDEF1234"
}
#BootNotification.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
currentTime |
string (date-time) | Yes | ||
interval |
integer | Yes | ||
status |
string (enum) | Yes | Values: Accepted, Pending, Rejected |
Example BootNotification.conf
{
"currentTime": "2024-01-15T10:30:00Z",
"interval": 0,
"status": "Accepted"
}
#ChangeAvailability
Direction: CS → CP
Change a connector or the entire Charge Point to operative/inoperative.
#ChangeAvailability.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
connectorId |
integer | Yes | ||
type |
string (enum) | Yes | Values: Inoperative, Operative |
Example ChangeAvailability.req
{
"connectorId": 0,
"type": "Inoperative"
}
#ChangeAvailability.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected, Scheduled |
Example ChangeAvailability.conf
{
"status": "Accepted"
}
#ChangeConfiguration
Direction: CS → CP
Set a configuration key on the Charge Point.
#ChangeConfiguration.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
key |
string | Yes | maxLength: 50 | |
value |
string | Yes | maxLength: 500 |
Example ChangeConfiguration.req
{
"key": "string",
"value": "string"
}
#ChangeConfiguration.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected, RebootRequired, NotSupported |
Example ChangeConfiguration.conf
{
"status": "Accepted"
}
#ClearCache
Direction: CS → CP
Clear the Charge Point's authorization cache.
#ClearCache.req
No fields (empty object {}).
Example ClearCache.req
{}
#ClearCache.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected |
Example ClearCache.conf
{
"status": "Accepted"
}
#DataTransfer
Direction: CP ↔ CS
Vendor-specific data exchange (bidirectional).
#DataTransfer.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
vendorId |
string | Yes | maxLength: 255 | |
data |
string | No | ||
messageId |
string | No | maxLength: 50 |
Example DataTransfer.req
{
"vendorId": "string"
}
#DataTransfer.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected, UnknownMessageId, UnknownVendorId |
|
data |
string | No |
Example DataTransfer.conf
{
"status": "Accepted"
}
#GetConfiguration
Direction: CS → CP
Read one or more configuration keys from the Charge Point.
#GetConfiguration.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
key |
string[] | No |
Example GetConfiguration.req
{}
#GetConfiguration.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
configurationKey |
object[] | No |
configurationKey[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
key |
string | Yes | maxLength: 50 | |
readonly |
boolean | Yes | ||
value |
string | No | maxLength: 500 | |
unknownKey |
string[] | No |
Example GetConfiguration.conf
{}
#Heartbeat
Direction: CP → CS
Keepalive — Charge Point signals it is still connected.
#Heartbeat.req
No fields (empty object {}).
Example Heartbeat.req
{}
#Heartbeat.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
currentTime |
string (date-time) | Yes |
Example Heartbeat.conf
{
"currentTime": "2024-01-15T10:30:00Z"
}
#MeterValues
Direction: CP → CS
Send periodic or clock-aligned meter readings.
#MeterValues.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
connectorId |
integer | Yes | ||
meterValue |
object[] | Yes |
meterValue[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
sampledValue |
object[] | Yes |
sampledValue[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
value |
string | Yes | ||
context |
string (enum) | No | Values: Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other |
|
format |
string (enum) | No | Values: Raw, SignedData |
|
location |
string (enum) | No | Values: Cable, EV, Inlet, Outlet, Body |
|
measurand |
string (enum) | No | Values: Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM |
|
phase |
string (enum) | No | Values: L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1 |
|
unit |
string (enum) | No | Values: Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent |
|
timestamp |
string (date-time) | Yes | ||
transactionId |
integer | No |
Example MeterValues.req
{
"connectorId": 0,
"meterValue": [
{
"sampledValue": [
{
"value": "string"
}
],
"timestamp": "2024-01-15T10:30:00Z"
}
]
}
#MeterValues.conf
No fields (empty object {}).
Example MeterValues.conf
{}
#RemoteStartTransaction
Direction: CS → CP
Central System requests the Charge Point to start a transaction.
#RemoteStartTransaction.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
idTag |
string | Yes | maxLength: 20 | |
chargingProfile |
object | No |
chargingProfile object:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingProfileId |
integer | Yes | ||
chargingProfileKind |
string (enum) | Yes | Values: Absolute, Recurring, Relative |
|
chargingProfilePurpose |
string (enum) | Yes | Values: ChargePointMaxProfile, TxDefaultProfile, TxProfile |
|
chargingSchedule |
object | Yes |
chargingSchedule object:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingRateUnit |
string (enum) | Yes | Values: A, W |
|
chargingSchedulePeriod |
object[] | Yes |
chargingSchedulePeriod[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
limit |
number | Yes | multipleOf: 0.1 | |
startPeriod |
integer | Yes | ||
numberPhases |
integer | No | ||
duration |
integer | No | ||
minChargingRate |
number | No | multipleOf: 0.1 | |
startSchedule |
string (date-time) | No | ||
stackLevel |
integer | Yes | ||
recurrencyKind |
string (enum) | No | Values: Daily, Weekly |
|
transactionId |
integer | No | ||
validFrom |
string (date-time) | No | ||
validTo |
string (date-time) | No | ||
connectorId |
integer | No |
Example RemoteStartTransaction.req
{
"idTag": "ABCDEF1234"
}
#RemoteStartTransaction.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected |
Example RemoteStartTransaction.conf
{
"status": "Accepted"
}
#RemoteStopTransaction
Direction: CS → CP
Central System requests the Charge Point to stop a transaction.
#RemoteStopTransaction.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
transactionId |
integer | Yes |
Example RemoteStopTransaction.req
{
"transactionId": 0
}
#RemoteStopTransaction.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected |
Example RemoteStopTransaction.conf
{
"status": "Accepted"
}
#Reset
Direction: CS → CP
Reboot the Charge Point (Hard or Soft).
#Reset.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
type |
string (enum) | Yes | Values: Hard, Soft |
Example Reset.req
{
"type": "Hard"
}
#Reset.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Rejected |
Example Reset.conf
{
"status": "Accepted"
}
#StartTransaction
Direction: CP → CS
Charge Point reports that a transaction has started.
#StartTransaction.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
connectorId |
integer | Yes | ||
idTag |
string | Yes | maxLength: 20 | |
meterStart |
integer | Yes | ||
timestamp |
string (date-time) | Yes | ||
reservationId |
integer | No |
Example StartTransaction.req
{
"connectorId": 0,
"idTag": "ABCDEF1234",
"meterStart": 0,
"timestamp": "2024-01-15T10:30:00Z"
}
#StartTransaction.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
idTagInfo |
object | Yes |
idTagInfo object:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Blocked, Expired, Invalid, ConcurrentTx |
|
expiryDate |
string (date-time) | No | ||
parentIdTag |
string | No | maxLength: 20 | |
transactionId |
integer | Yes |
Example StartTransaction.conf
{
"idTagInfo": {
"status": "Accepted"
},
"transactionId": 0
}
#StatusNotification
Direction: CP → CS
Charge Point reports a connector status or error change.
#StatusNotification.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
connectorId |
integer | Yes | ||
errorCode |
string (enum) | Yes | Values: ConnectorLockFailure, EVCommunicationError, GroundFailure, HighTemperature, InternalError, LocalListConflict, NoError, OtherError, OverCurrentFailure, PowerMeterFailure, PowerSwitchFailure, ReaderFailure, ResetFailure, UnderVoltage, OverVoltage, WeakSignal |
|
status |
string (enum) | Yes | Values: Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted |
|
info |
string | No | maxLength: 50 | |
timestamp |
string (date-time) | No | ||
vendorErrorCode |
string | No | maxLength: 50 | |
vendorId |
string | No | maxLength: 255 |
Example StatusNotification.req
{
"connectorId": 0,
"errorCode": "ConnectorLockFailure",
"status": "Available"
}
#StatusNotification.conf
No fields (empty object {}).
Example StatusNotification.conf
{}
#StopTransaction
Direction: CP → CS
Charge Point reports that a transaction has ended.
#StopTransaction.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
meterStop |
integer | Yes | ||
timestamp |
string (date-time) | Yes | ||
transactionId |
integer | Yes | ||
idTag |
string | No | maxLength: 20 | |
reason |
string (enum) | No | Values: EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized |
|
transactionData |
object[] | No |
transactionData[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
sampledValue |
object[] | Yes |
sampledValue[] items:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
value |
string | Yes | ||
context |
string (enum) | No | Values: Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other |
|
format |
string (enum) | No | Values: Raw, SignedData |
|
location |
string (enum) | No | Values: Cable, EV, Inlet, Outlet, Body |
|
measurand |
string (enum) | No | Values: Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM |
|
phase |
string (enum) | No | Values: L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1 |
|
unit |
string (enum) | No | Values: Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent |
|
timestamp |
string (date-time) | Yes |
Example StopTransaction.req
{
"meterStop": 0,
"timestamp": "2024-01-15T10:30:00Z",
"transactionId": 0
}
#StopTransaction.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
idTagInfo |
object | No |
idTagInfo object:
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Accepted, Blocked, Expired, Invalid, ConcurrentTx |
|
expiryDate |
string (date-time) | No | ||
parentIdTag |
string | No | maxLength: 20 |
Example StopTransaction.conf
{}
#UnlockConnector
Direction: CS → CP
Remotely unlock a connector (for cable removal).
#UnlockConnector.req
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
connectorId |
integer | Yes |
Example UnlockConnector.req
{
"connectorId": 0
}
#UnlockConnector.conf
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
string (enum) | Yes | Values: Unlocked, UnlockFailed, NotSupported |
Example UnlockConnector.conf
{
"status": "Unlocked"
}