SendLocalList

LocalAuthListManagement CSMS->CS OCPP 2.0.1

Sent by the CSMS to update or replace the local authorization list on the Charging Station, enabling offline authorization.

Quick Reference

Required Fields

versionNumber integer

Version number of the list being sent

updateType UpdateEnumType

Differential (add/update/delete entries) or Full (replace entire list)

Optional Fields

localAuthorizationList array[AuthorizationData]

List of authorization entries to add, update, or include in a full list

Example Payload

{
  "versionNumber": 2,
  "updateType": "Differential",
  "localAuthorizationList": [
    {
      "idToken": {
        "idToken": "AABBCCDD",
        "type": "ISO14443"
      },
      "idTokenInfo": {
        "status": "Accepted"
      }
    },
    {
      "idToken": {
        "idToken": "DEADBEEF",
        "type": "ISO14443"
      },
      "idTokenInfo": {
        "status": "Blocked"
      }
    }
  ]
}

Example Full Frame

[
  2,
  "msg-001",
  "SendLocalList",
  {
    "versionNumber": 2,
    "updateType": "Differential",
    "localAuthorizationList": [
      {
        "idToken": {
          "idToken": "AABBCCDD",
          "type": "ISO14443"
        },
        "idTokenInfo": {
          "status": "Accepted"
        }
      },
      {
        "idToken": {
          "idToken": "DEADBEEF",
          "type": "ISO14443"
        },
        "idTokenInfo": {
          "status": "Blocked"
        }
      }
    ]
  }
]

Format: [MessageType, MessageId, Action, Payload]

Overview

SendLocalList updates the Charging Station’s local authorization list, which allows it to authorize tokens without contacting the CSMS. This is critical for resilience during network outages.

When to Send

  • When new RFID cards are issued
  • When a card is revoked (send with status: Blocked)
  • Periodically to keep the list in sync with the CSMS

Expected Response

  • status: Accepted, Failed, or VersionMismatch

Key Differences from OCPP 1.6J

OCPP 1.6JOCPP 2.0.1
idTag (string, max 20)idToken object with idToken + type
IdTagInfo in each entryidTokenInfo with richer status set

Usage Notes

  • Full replaces the entire list — use for initial provisioning or full resync
  • Differential adds/updates/removes individual entries — more efficient for small changes
  • To remove an entry in a Differential update, send the entry with no idTokenInfo
  • versionNumber must be greater than the current version

Testing Tips

  • Send Full list and verify all entries are available for offline authorization
  • Send Differential with a blocked token and verify authorization is denied without CSMS contact
  • Test VersionMismatch by sending a lower version number

Common Errors

TypeConstraintViolation

Cause: idToken sent as a plain string in the list entries

Solution: Each list entry uses idToken as an IdTokenType object (with idToken + type fields)

GenericError

Cause: versionNumber is lower than the current version

Solution: Ensure versionNumber is higher than the current version returned by GetLocalListVersion