APIs Device to Cloud UDP Devices Onboard devices
UDP Device provisioning request
Devices are represented as node
instances in oneM2M.
You can request to onboard a list of nodes by adding a “/device-provisioning/request”:
- Request
- Response
POST {{API_URL}}/device-provisioning/request HTTP/2
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:noPRt": {
"cnd": "com.telekom.iot.orchestrator.nodeProvisioningRequest",
"rn": "myUDP-DeviceProvisioningRequest",
"opern": 1,
"reqLt": [
{
"ni" : "urn:gsma:imei:999907050041452",
"noRNe": "myUDP-Device01",
"profe" : "SCS-UDP",
"lbl": [
"Location:13509 Berlin, Holzhauser Str 4-8, Building A",
"d2c-uplink-property_AssetId:1234543",
"d2c:1.0"
],
"nodeDeviceGroups": [],
"ndvi": {
"rn": "device-info",
"mgd": 1007,
"man": "some manufacturer",
"dty": "some device type",
"mod": "some model",
"dlb": "some:label",
"dc": "a comment"
}
}
]
}
}
HTTP/1.1 201 Created
date: Fri, 22 May 2026 08:55:26 GMT
content-type: application/json; charset=utf-8
request-context: appId=cid-v1:
x-service-responder: device-management-orchestrator
x-m2m-ri: 123
x-m2m-rvi: 4
x-m2m-ot: 2026-05-22T08:55:26.304Z
x-m2m-rsc: 2001
x-azure-ref: 20260522T085526Z-157794674c588bv2hC1FRAqubc0000000yng00000000nr1d
x-cache: CONFIG_NOCACHE
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 0
referrer-policy: no-referrer
x-tardis-traceid: e02c1daad6529714d14a233132313436
vary: Origin
x-kong-upstream-latency: 138
x-kong-proxy-latency: 2
x-kong-request-id: c124506370a5fa4ad225a547eea42631
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 994
x-http2-stream-id: 3
{
"dtiot:noPRt": {
"cnd": "com.telekom.iot.orchestrator.nodeProvisioningRequest",
"rn": "myUDP-DeviceProvisioningRequest",
"opern": 1,
"reqLt": [
{
"ni": "urn:gsma:imei:999907050041452",
"noRNe": "myUDP-Device01",
"profe": "SCS-UDP",
"lbl": [
"Location:13509 Berlin, Holzhauser Str 4-8, Building A",
"d2c-uplink-property_AssetId:1234543",
"d2c:1.0"
],
"ndvi": {
"rn": "device-info",
"mgd": 1007,
"man": "some manufacturer",
"ty": "some device type",
"mod": "some model",
"dlb": "some:label",
"dc": "a comment"
},
"nodeDeviceGroups": []
}
],
"ty": 28,
"cr": "CmyApplication",
"st": 0,
"ri": "67...2a",
"pi": "67...3f",
"ct": "20241121T091747,984000",
"lt": "20241121T091747,984000"
}
}
Parameters:
- In
Content-Typeheader:ty=28means “flexContainer” cnd- containerDefinition — contains an identifier reference (URI) to the “flexContainer” schema definition which shall be used by the CSE to validate the syntax of the FlexContainer resourceoperation: 1=provisionrequestList: Array of “node” instances withnodeID: The value shall be a valid nodeID string in the format:urn:gsma:imei:<imei>nodeResourceName: This is the “Device ID” which e.g. is used in Device Groups to identify the device.profile: Defines the IoT platform where the device is onboarded. For UDP Devices useSCS-UDP.lbl: An array of strings. The label"d2c:1.0"is mandatory for “Device to Cloud” IoT devices. Example:["Location:Berlin","d2c-uplink-property_AssetId:123","d2c:1.0"]nodeDeviceGroups(optional): An array containing a list of groups where the device should be added.ndvi(optional): Device-related information (manufacturer, device type, model, etc.)
X-M2M-RI: Represents a unique request ID. Please don’t use123! If you have a support request you can help us by providing us the related request ID.
nodeCredentials (PSK). The platform identifies UDP devices by their SIM card (IMEI) via the Telekom mobile network.What happens during provisioning
The provisioning request for UDP devices (profile: SCS-UDP) triggers the following actions on the platform:
- Device node and containers — the device node and all required message containers (
received-msg,sent-msg,outgoing-msg,error-msg) are created in DMO. - IMEI-to-tenant mapping — the platform registers the device IMEI so that incoming uplink traffic is routed to the correct tenant.
- Uplink properties — the platform stores the custom uplink properties (derived from
d2c-uplink-property_labels) so they can be included in every uplink message.
Get a device by IMEI
- Request
- Response
GET {{API_URL}}?rcn=4&ty=13&ty=14&ni=urn:gsma:imei:999907050041452 HTTP/2
Accept: application/json
Content-Type: application/json
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
HTTP/1.1 200 OK
date: Mon, 25 May 2026 16:17:57 GMT
content-type: application/json; charset=utf-8
request-context: appId=cid-v1:
x-service-responder: device-management-orchestrator
x-m2m-ri: 123
x-m2m-rvi: 4
x-m2m-ot: 2026-05-25T16:17:57.858Z
x-m2m-rsc: 2000
x-azure-ref: 20260525T161757Z-r1d8c8b4b7f8ncs4hC1FRA2s6w0000000ew000000000ayuk
x-cache: CONFIG_NOCACHE
accept-ranges: bytes
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 0
referrer-policy: no-referrer
x-tardis-traceid: 486cbd34bf187c63cf1c233133343239
vary: Origin
x-kong-upstream-latency: 212
x-kong-proxy-latency: 2
x-kong-request-id: 91e1eb0ae1fb9709414f46607ce4164f
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 504
x-http2-stream-id: 3
{
"m2m:nod": {
"ni": "urn:gsma:imei:999907050041452",
"lbl": [
"Location:64295 Darmstadt, Deutsche Telekom Allee 9, Building D",
"d2c-uplink-property_AssetId:Asset-12345",
"d2c:1.0",
"profile:SCS-UDP"
],
"rn": "myUDP-Device01",
"ty": 14,
"ct": "20260326T111645,756000",
"pi": "myTenant",
"ri": "69c5159dcb8c0f35bdf06da0",
"lt": "20260326T111645,756000"
}
}
Error handling
If an error occurs during provisioning/handling CRUD operations with device, It will be written to error-msg and logs containers. error-msg container is belonged to particular device, while logs container is shared for all devices.
The error message contains the details of the error, such as error code, error message, error details and device identifier.
Example of error message in error-msg container for a particular device
- Request
- Response
GET {{API_URL}}/device-communication/myUDP-Device01/error-msg/la HTTP/2
Accept: application/json
Content-Type: application/json
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
HTTP/1.1 200 OK
date: Mon, 25 May 2026 16:17:57 GMT
content-type: application/json; charset=utf-8
request-context: appId=cid-v1:
x-service-responder: device-management-orchestrator
x-m2m-ri: 123
x-m2m-rvi: 4
x-m2m-ot: 2026-05-25T16:17:57.858Z
x-m2m-rsc: 2000
x-azure-ref: 20260525T161757Z-r1d8c8b4b7f8ncs4hC1FRA2s6w0000000ew000000000ayuk
x-cache: CONFIG_NOCACHE
accept-ranges: bytes
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 0
referrer-policy: no-referrer
x-tardis-traceid: 486cbd34bf187c63cf1c233133343239
vary: Origin
x-kong-upstream-latency: 212
x-kong-proxy-latency: 2
x-kong-request-id: 91e1eb0ae1fb9709414f46607ce4164f
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 504
x-http2-stream-id: 3
{
"m2m:cin": {
"con": {
"nodeResourceName": "myUDP-Device01",
"nodeID": "urn:gsma:imei:999907050041452",
"data": "",
"status": {
"code": 500,
"message": "internal server error",
"detail": "Internal server error: subscription creation failed."
}
},
"cnf": "application/json:0",
"ty": 4,
"cs": 604,
"st": 3,
"cr": "CmyApplication",
"rn": "a2efd14b-d5d8-41e0-9c3c-74e907abfc95",
"ri": "69b17f068006f89d59522af0",
"pi": "69b132f78006f89d59521efa",
"ct": "20260311T144110,154000",
"lt": "20260311T144110,154000"
}
}
Fields:
nodeResourceName— the device ID as registered during provisioning.nodeID— the IMEI-based node identifier (urn:gsma:imei:<imei>).data— empty in case of errors not related to messages.status.code— HTTP-style error codestatus.message— short error description.status.detail— detailed error message for debugging.cnf— content format;"application/json:0"indicates a JSON payload.
Example of error message in logs container
- Request
- Response
GET {{API_URL}}/device-provisioning/logs/la HTTP/2
Accept: application/json
Content-Type: application/json
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
HTTP/1.1 200 OK
date: Mon, 25 May 2026 16:17:57 GMT
content-type: application/json; charset=utf-8
request-context: appId=cid-v1:
x-service-responder: device-management-orchestrator
x-m2m-ri: 123
x-m2m-rvi: 4
x-m2m-ot: 2026-05-25T16:17:57.858Z
x-m2m-rsc: 2000
x-azure-ref: 20260525T161757Z-r1d8c8b4b7f8ncs4hC1FRA2s6w0000000ew000000000ayuk
x-cache: CONFIG_NOCACHE
accept-ranges: bytes
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 0
referrer-policy: no-referrer
x-tardis-traceid: 486cbd34bf187c63cf1c233133343239
vary: Origin
x-kong-upstream-latency: 212
x-kong-proxy-latency: 2
x-kong-request-id: 91e1eb0ae1fb9709414f46607ce4164f
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 504
x-http2-stream-id: 3
{
"m2m:cin": {
"con": {
"identifier": "urn:gsma:imei:999907050041452",
"type": "device processing failed",
"service": "d2c-device-provisioning",
"data": "",
"status": {
"code": 400,
"message": "bad request",
"detail": "device event could not been handled. Check the data of device. profile is missed."
}
},
"cnf": "application/json:0",
"ty": 4,
"cs": 641,
"st": 2,
"cr": "CmyApplication",
"rn": "31af43c7-f111-4e5a-9694-7c66f5745f72",
"ri": "69b17f068006f89d59522af1",
"pi": "69b158c08006f89d595224b4",
"ct": "20260311T144110,172000",
"lt": "20260311T144110,172000"
}
}
Fields:
identifier— the IMEI-based node identifier (urn:gsma:imei:<imei>).type— describes the error category (e.g."device processing failed").service— the service that produced the log entry (d2c-device-provisioning).data— empty in case of errors not related to messagesstatus.code/status.message/status.detail— same semantics as in theerror-msgcontainer.cnf— content format;"application/json:0"indicates a JSON payload.
Errors summary table
| Status Code | Status Message | Description |
|---|---|---|
| 400 | bad request | UDP device could not been provisioned. Check the data of device-provisioning request. imei is missed. |
| 400 | bad request | UDP device could not been provisioned. Check the data of device-provisioning request. imei has invalid format. |
| 400 | bad request | Device could not been provisioned. Check the data of device-provisioning request. nodeResourceName is missed. |
| 400 | bad request | Device could not been provisioned. Device with the same nodeResourceName already exists. |
| 400 | bad request | device event could not been handled. Check the data of device. profile is missed. |
| 400 | bad request | Device could not been provisioned. Check the data of device-provisioning request. profile is missed. |
| 500 | internal server error | Internal server error: subscription creation failed. |
| 500 | internal server error | Internal server error: device-provisioning unable to get device data. |
| 500 | internal server error | Internal server error: device-provisioning unable to create device objects. |
| 500 | internal server error | Internal server error: device-provisioning unable to create device data. |
| 500 | internal server error | Internal server error: device-provisioning unable to remove device subscription. |
| 500 | internal server error | Internal server error: device-provisioning unable to create device subscription. |
| 500 | internal server error | Internal server error: device-provisioning unable to create device data in table. |
| 500 | internal server error | Internal server error: unexpected error occurred. |
| 500 | internal server error | Internal server error: device-provisioning unable to update device data. |
| 500 | internal server error | Internal server error: device-provisioning unable to update device properties. |
| 500 | internal server error | Internal server error: device-provisioning unable to get device data from table. |
| 500 | internal server error | Internal server error: device-provisioning unable to update device data in table. |
| 500 | internal server error | Internal server error: device-provisioning unable to delete device data. |
| 500 | internal server error | Internal server error: device-provisioning unable to process notification data. |
Next step
Start sending data to your UDP device and receive data back from the device.