- Reference
- OCPI 2.1.1 (CPO)
- Receiver Tokens
OpenAPI reference
Receiver Tokens
/tokens/{country_code}/{party_id}/{token_uid}New or updated Token objects are pushed from the eMSP to the CPO.
API: OCPI 2.1.1 (CPO) · Module: Tokens (CPO)
Base path:/tokens· Base URL:https://ocpi-api.gridos.co/ocpi/cpo/2.1.1
Overview
PUT /tokens/{country_code}/{party_id}/{token_uid}Absolute URL: https://ocpi-api.gridos.co/ocpi/cpo/2.1.1/tokens/{country_code}/{party_id}/{token_uid}
New or updated Token objects are pushed from the eMSP to the CPO.
Requires authentication. Use Authorization: Token <token>. See OCPI credentials.
How to call
Quick Shell sample (set OCPI_TOKEN when auth is required). Full Python and TypeScript under Examples.
curl -sS -X PUT 'https://ocpi-api.gridos.co/ocpi/cpo/2.1.1/tokens/NL/ABC/TOKEN123' \
-H "Authorization: Token $OCPI_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"uid":"100012","type":"RFID","auth_id":"FA54320","visual_number":"DF000-2001-8999","issuer":"TheNewMotion","valid":true,"whitelist":"ALWAYS","language":"en","last_updated":"2015-06-21T22:39:05Z"}'Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
country_code | string | Yes | ISO-3166 alpha-2 country code of the party performing this request. |
party_id | string | Yes | 3-char party ID of the CPO or eMSP (ISO-15118). |
token_uid | string | Yes | Token.uid of the Token. |
Request body
application/json · Required
Schema: Token
| Field | Type | Required | Description |
|---|---|---|---|
uid | string | Yes | Unique ID by which this Token can be identified. |
type | `"RFID" | "OTHER"` | Yes |
auth_id | string | Yes | Uniquely identifies the EV driver contract token within the eMSP. |
visual_number | string | No | Visual readable number/identification printed on the Token. |
issuer | string | Yes | Issuing company, usually the connected eMSP. |
valid | boolean | Yes | Is this Token valid. |
whitelist | `"ALWAYS" | "ALLOWED" | "ALLOWED_OFFLINE" |
language | string | No | ISO 639-1 language code of the Token owner's preferred language. |
last_updated | string (date-time) | Yes | — |
Request examples
Example 1
{
"uid": "100012",
"type": "RFID",
"auth_id": "FA54320",
"visual_number": "DF000-2001-8999",
"issuer": "TheNewMotion",
"valid": true,
"whitelist": "ALWAYS",
"language": "en",
"last_updated": "2015-06-21T22:39:05Z"
}Example 2
{
"uid": "APPUSER-99",
"type": "OTHER",
"auth_id": "EMP-99001",
"issuer": "Example Mobility",
"valid": true,
"whitelist": "ALLOWED",
"last_updated": "2015-06-23T08:00:00Z"
}Responses
| Status | Description | Schema |
|---|---|---|
200 | Successful Response | OneTokenResponse |
400 | Invalid or missing parameters (HTTP 200, OCPI envelope) | — |
401 | Unauthorized | — |
404 | Not Found | — |
422 | Validation Error | HTTPValidationError |
200 — successful response
application/json
Schema: OneTokenResponse
| Field | Type | Required | Description |
|---|---|---|---|
status_code | integer | No | Default: 1000 |
status_message | string | No | — |
timestamp | string (date-time) | No | — |
data | Token | No | Token |
Response example
{
"status_code": 1000,
"status_message": "Success",
"timestamp": "2015-06-29T22:39:09Z",
"data": {
"auth_id": "DE8ACC12E46L89",
"issuer": "TheNewMotion",
"language": "en",
"last_updated": "2015-06-29T22:39:09Z",
"type": "RFID",
"uid": "012345678",
"valid": true,
"visual_number": "DF000-2001-8999",
"whitelist": "ALLOWED"
}
}400 — invalid or missing parameters (HTTP 200, OCPI envelope)
application/json
Response example
{
"status_code": 2001,
"status_message": "Invalid or missing parameters",
"timestamp": "2025-01-01T00:00:00Z",
"doc_url": "https://github.com/ocpplab/ocpi-gateway/blob/main/docs/errors.md#2001-invalid-parameters",
"errors": [
{
"field": "country_code",
"message": "expected 'NL' to match Token A identity",
"type": "value_error.identity_mismatch"
}
]
}401 — unauthorized
application/json
Response example
{
"status_code": 2000,
"status_message": "Unauthorized",
"timestamp": "2025-01-01T00:00:00Z"
}404 — not found
application/json
Response example
{
"status_code": 2004,
"status_message": "Resource not found",
"timestamp": "2025-01-01T00:00:00Z"
}422 — validation error
application/json
Schema: HTTPValidationError
| Field | Type | Required | Description |
|---|---|---|---|
detail | ValidationError[] | No | Detail |
Response example
{
"detail": [
{
"loc": [],
"msg": "string",
"type": "string",
"input": {
"_type": "Input"
},
"ctx": {
"_type": "Context"
}
}
]
}Examples
Shell, Python, and TypeScript (set OCPI_TOKEN when auth is required).
curl -sS -X PUT 'https://ocpi-api.gridos.co/ocpi/cpo/2.1.1/tokens/NL/ABC/TOKEN123' \
-H "Authorization: Token $OCPI_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"uid":"100012","type":"RFID","auth_id":"FA54320","visual_number":"DF000-2001-8999","issuer":"TheNewMotion","valid":true,"whitelist":"ALWAYS","language":"en","last_updated":"2015-06-21T22:39:05Z"}'