API REFERENCE
Register APNs/FCM device for published-plan notifications
/api/v1/driver/push-devicesDriver session only; APNs token requires even-length hexadecimal. Push transport requires deployment credentials; registering a token is not proof of delivery/receipt. Driver refresh remains authoritative.
Authentication
Requires a driver bearer session. Administrator sessions and integration keys cannot perform this driver action.
Parameters
No path or query parameters.
Request
| Field | Type | Description & constraints |
|---|---|---|
providerRequired | apns | fcm | Resource-specific value; see the related workflow and schema. |
device_tokenRequired | string | Resource-specific value; see the related workflow and schema.Max length: 4096 |
Example JSON body
{
"provider": "apns",
"device_token": "example"
}Request schema
{
"type": "object",
"properties": {
"provider": {
"enum": [
"apns",
"fcm"
]
},
"device_token": {
"type": "string",
"maxLength": 4096
}
},
"required": [
"provider",
"device_token"
]
}Example request
Replace synthetic identifiers and credentials. Example dates, coordinates, revisions, and IDs are not production defaults. Read the workflow guide before making a write.
curl --request POST 'https://route-api.okok.space/api/v1/driver/push-devices' \
--header 'Authorization: Bearer REPLACE_WITH_DRIVER_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"provider":"apns","device_token":"example"}'Responses
Examples illustrate the documented shape; optional fields and current state can differ. JSON extraction/body-limit errors may be plain text.
200 · Successful response
application/json
| Field | Type | Description & constraints |
|---|---|---|
id | string | Identifier unique within its authorized business. Some create operations generate it when omitted. |
created_at | string | RFC3339 UTC instant or explicit offset; business wall times are resolved separately.Format: date-time |
updated_at | string | RFC3339 UTC instant or explicit offset; business wall times are resolved separately.Format: date-time |
revision | integer | Current version used to detect stale edits or publication. |
deleted_at | string | null | System-managed UTC soft-deletion instant; null for active records.Format: date-time |
deleted_by | string | null | Deletion actor retained for history.Format: uuid |
Illustrative response
{
"id": "example-id",
"created_at": "2026-11-02T09:00:00Z",
"updated_at": "2026-11-02T09:00:00Z",
"revision": 1,
"deleted_at": "2026-11-02T09:00:00Z",
"deleted_by": "11111111-1111-4111-8111-111111111111"
}Response schema
{
"$ref": "#/components/schemas/Record"
}401 · Invalid/revoked driver session
application/json
| Field | Type | Description & constraints |
|---|---|---|
errorRequired | object | Resource-specific value; see the related workflow and schema. |
error fields
| Field | Type | Description & constraints |
|---|---|---|
error.codeRequired | validation | unauthorized | not_found | conflict | unavailable | rate_limited | Private activation or recovery code supplied to the driver. |
error.messageRequired | string | Resource-specific value; see the related workflow and schema. |
Illustrative response
{
"error": {
"code": "unauthorized",
"message": "Invalid/revoked driver session"
}
}Response schema
{
"$ref": "#/components/schemas/Error"
}403 · Required driver permission denied
application/json
| Field | Type | Description & constraints |
|---|---|---|
errorRequired | object | Resource-specific value; see the related workflow and schema. |
error fields
| Field | Type | Description & constraints |
|---|---|---|
error.codeRequired | validation | unauthorized | not_found | conflict | unavailable | rate_limited | Private activation or recovery code supplied to the driver. |
error.messageRequired | string | Resource-specific value; see the related workflow and schema. |
Illustrative response
{
"error": {
"code": "unauthorized",
"message": "Required driver permission denied"
}
}Response schema
{
"$ref": "#/components/schemas/Error"
}404 · Not found in own business
application/json
| Field | Type | Description & constraints |
|---|---|---|
errorRequired | object | Resource-specific value; see the related workflow and schema. |
error fields
| Field | Type | Description & constraints |
|---|---|---|
error.codeRequired | validation | unauthorized | not_found | conflict | unavailable | rate_limited | Private activation or recovery code supplied to the driver. |
error.messageRequired | string | Resource-specific value; see the related workflow and schema. |
Illustrative response
{
"error": {
"code": "not_found",
"message": "Not found in own business"
}
}Response schema
{
"$ref": "#/components/schemas/Error"
}422 · Validation failed
application/json
| Field | Type | Description & constraints |
|---|---|---|
errorRequired | object | Resource-specific value; see the related workflow and schema. |
error fields
| Field | Type | Description & constraints |
|---|---|---|
error.codeRequired | validation | unauthorized | not_found | conflict | unavailable | rate_limited | Private activation or recovery code supplied to the driver. |
error.messageRequired | string | Resource-specific value; see the related workflow and schema. |
Illustrative response
{
"error": {
"code": "validation",
"message": "Validation failed"
}
}Response schema
{
"$ref": "#/components/schemas/Error"
}503 · Required infrastructure unavailable
application/json
| Field | Type | Description & constraints |
|---|---|---|
errorRequired | object | Resource-specific value; see the related workflow and schema. |
error fields
| Field | Type | Description & constraints |
|---|---|---|
error.codeRequired | validation | unauthorized | not_found | conflict | unavailable | rate_limited | Private activation or recovery code supplied to the driver. |
error.messageRequired | string | Resource-specific value; see the related workflow and schema. |
Illustrative response
{
"error": {
"code": "unavailable",
"message": "Required infrastructure unavailable"
}
}Response schema
{
"$ref": "#/components/schemas/Error"
}