APIs Device to Cloud Lorawan Devices Configure Adapter
On this page you’ll find the DMO configuration that connects your LoRaWAN resources to the Device to Cloud infrastructure.
Before you can provision LoRaWAN devices and gateways, you must configure three resources in DMO:
- A LORIOT Account — your credentials for the LORIOT network server.
- A LORIOT Application — the LORIOT application that groups your devices.
- A LORIOT Network — the LORIOT network that groups your gateways.
These resources are modeled as FlexContainers (ty=28) inside the d2c-protocol-adapter-loriot Application Entity.
Configure LORIOT Account
If you don’t have a LORIOT Account or you don’t want to operate your own network server, please contact D2C support. D2C provides a tenant with a preconfigured account.
The LORIOT Account FlexContainer stores the credentials that D2C uses to communicate with the LORIOT network server.
Create account
- Request
- Response
POST {{API_URL}}/d2c-protocol-adapter-loriot
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:lorAt": {
"cnd": "com.telekom.iot.orchestrator.loriot.account",
"rn": "myLoriotAccount",
"userApi": "https://eu1.loriot.io",
"token": "<your-loriot-api-token>"
}
}
HTTP/2 201 Created
date: Thu, 21 May 2026 11:02:41 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-21T11:02:41.732Z
x-m2m-rsc: 2001
x-azure-ref: 20260521T110241Z-157794674c5kgnhqhC1FRAxfcn0000001k6g00000000cw2f
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: 27c00b4925fb7698e21223353438
vary: Origin
x-kong-upstream-latency: 492
x-kong-proxy-latency: 36
x-kong-request-id: 49139d7307c45e4e0ba54b6416f0874c
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorAt": {
"cnd": "com.telekom.iot.orchestrator.loriot.account",
"rn": "myLoriotAccount",
"userApi": "https://eu1.loriot.io",
"ri": "<resourceID>",
"ct": "<creationTime>"
}
}
| Field | Description | Required |
|---|---|---|
cnd | FlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.account | yes |
rn | Resource name — used as a reference in subsequent network and application resources | yes |
userApi | Root URL of your LORIOT server (from Step 1 of the getting-started guide) | yes |
token | LORIOT API key (create one in LORIOT UI under Account → API Keys) | yes |
Get account
- Request
- Response
GET {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
HTTP/2 200 OK
date: Thu, 21 May 2026 11:16:34 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-21T11:16:34.909Z
x-m2m-rsc: 2000
x-azure-ref: 20260521T111634Z-r1d8c8b4b7fgc6zthC1FRA96a400000003vg000000015vuw
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: 27c00b4925fb7698e2122331313130
vary: Origin
x-kong-upstream-latency: 672
x-kong-proxy-latency: 23
x-kong-request-id: 6bc7c31d7b70f33031ac64081b002500
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorAt": {
"cnd": "com.telekom.iot.orchestrator.loriot.account",
"rn": "myLoriotAccount",
"manBy": "d2c",
"useAi": "https://someurl.com",
"ty": 28,
"cr": "CmyApplication",
"st": 0,
"ri": "6a0ee651cdab4f934adc0b10",
"pi": "69fb6edadbfa0144d3ac6f1f",
"ct": "20260521T110241,531000",
"lt": "20260521T110241,531000",
"token": "someToken668796214hjjljteieieonndlkfnhgsouyttv589745212654521255544789oopjuhgf"
}
}
Delete account
- Request
- Response
DELETE {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
HTTP/2 200 OK
date: Thu, 21 May 2026 11:28:51 GMT
content-type: text/plain; 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-21T11:28:51.628Z
x-m2m-rsc: 2002
x-azure-ref: 20260521T112850Z-157794674c588bv2hC1FRAqubc0000000s2g000000004kf9
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: f9f85430d41fb37d63282332353633
vary: Origin
x-kong-upstream-latency: 954
x-kong-proxy-latency: 5
x-kong-request-id: b8f6a24454e760785ccf5e7ac9b67429
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 0
x-http2-stream-id: 3
<Response body is empty>
Configure LORIOT Application
The LORIOT Application FlexContainer links a LORIOT application to D2C. Applications group LoRaWAN devices.
You can either link an existing LORIOT application (not propagated) or let D2C create a new one in LORIOT (propagated).
Option A — Link existing application (not propagated)
Use this option when the application already exists in LORIOT. It’s mandatory to provide the Application Hex ID from the LORIOT UI.
- Request
- Response
POST {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:lorAn": {
"cnd": "com.telekom.iot.orchestrator.loriot.application",
"rn": "myLoriotApplication",
"hexId": "ABCD1234",
"name": "My Application",
"propagate": false
}
}
HTTP/2 201 Created
date: Thu, 21 May 2026 11:02:41 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-21T11:02:41.732Z
x-m2m-rsc: 2001
x-azure-ref: 20260521T110241Z-157794674c5kgnhqhC1FRAxfcn0000001k6g00000000cw2f
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: 27c00b4925fb7698e21223353438
vary: Origin
x-kong-upstream-latency: 492
x-kong-proxy-latency: 36
x-kong-request-id: 49139d7307c45e4e0ba54b6416f0874c
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorAn": {
"cnd": "com.telekom.iot.orchestrator.loriot.application",
"rn": "myLoriotApplication",
"hexId": "ABCD1234",
"name": "My Application",
"propagate": false,
"ri": "<resourceID>",
"ct": "<creationTime>"
}
}
Option B — Let D2C create the application (propagated)
Use this option when you want D2C to create a new application in LORIOT automatically. Omit the hexId field and set propagate: true. Contact D2C support to enable propagated mode.
- Request
- Response
POST {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:lorAn": {
"cnd": "com.telekom.iot.orchestrator.loriot.application",
"rn": "myLoriotApplication",
"name": "My Application",
"propagate": true,
"capacity": 20
}
}
HTTP/2 201 Created
date: Thu, 21 May 2026 11:02:41 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-21T11:02:41.732Z
x-m2m-rsc: 2001
x-azure-ref: 20260521T110241Z-157794674c5kgnhqhC1FRAxfcn0000001k6g00000000cw2f
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: 27c00b4925fb7698e21223353438
vary: Origin
x-kong-upstream-latency: 492
x-kong-proxy-latency: 36
x-kong-request-id: 49139d7307c45e4e0ba54b6416f0874c
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorAn": {
"cnd": "com.telekom.iot.orchestrator.loriot.application",
"rn": "myLoriotApplication",
"name": "My Application",
"propagate": true,
"ri": "<resourceID>",
"ct": "<creationTime>"
}
}
| Field | Description | Required |
|---|---|---|
cnd | FlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.application | yes |
rn | Resource name — used as a label reference during device provisioning | yes |
name | Human-readable name for the application | yes |
propagate | false = link existing LORIOT application; true = D2C creates a new application in LORIOT | yes |
capacity | The configured application capacity provided in the request is now propagated to Loriot when a new application is created. | yes |
Configure LORIOT Network
The LORIOT Network FlexContainer links a LORIOT network to D2C. Networks group LoRaWAN gateways.
You can either link an existing LORIOT network (not propagated) or let D2C create a new one (propagated).
Option A — Link existing network (not propagated)
- Request
- Response
POST {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:lorNk": {
"cnd": "com.telekom.iot.orchestrator.loriot.network",
"rn": "myLoriotNetwork",
"hexId": "BE7A0001",
"name": "My Network",
"propagate": false
}
}
HTTP/2 201 Created
date: Thu, 21 May 2026 11:02:41 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-21T11:02:41.732Z
x-m2m-rsc: 2001
x-azure-ref: 20260521T110241Z-157794674c5kgnhqhC1FRAxfcn0000001k6g00000000cw2f
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: 27c00b4925fb7698e21223353438
vary: Origin
x-kong-upstream-latency: 492
x-kong-proxy-latency: 36
x-kong-request-id: 49139d7307c45e4e0ba54b6416f0874c
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorNk": {
"cnd": "com.telekom.iot.orchestrator.loriot.network",
"rn": "myLoriotNetwork",
"hexId": "BE7A0001",
"name": "My Network",
"propagate": false,
"ri": "<resourceID>",
"ct": "<creationTime>"
}
}
Option B — Let D2C create the network (propagated)
- Request
- Response
POST {{API_URL}}/d2c-protocol-adapter-loriot/myLoriotAccount
Accept: application/json
Content-Type: application/json;ty=28
X-M2M-Origin: CmyApplication
X-M2M-RI: 123
Authorization: Bearer {{ACCESS_TOKEN}}
{
"dtiot:lorNk": {
"cnd": "com.telekom.iot.orchestrator.loriot.network",
"rn": "myLoriotNetwork",
"name": "My Network",
"propagate": true
}
}
HTTP/2 201 Created
date: Thu, 21 May 2026 11:02:41 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-21T11:02:41.732Z
x-m2m-rsc: 2001
x-azure-ref: 20260521T110241Z-157794674c5kgnhqhC1FRAxfcn0000001k6g00000000cw2f
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: 27c00b4925fb7698e21223353438
vary: Origin
x-kong-upstream-latency: 492
x-kong-proxy-latency: 36
x-kong-request-id: 49139d7307c45e4e0ba54b6416f0874c
strict-transport-security: max-age=31536000; includeSubDomains
content-length: 430
x-http2-stream-id: 3
{
"dtiot:lorNk": {
"cnd": "com.telekom.iot.orchestrator.loriot.network",
"rn": "myLoriotNetwork",
"name": "My Network",
"propagate": true
"ri": "<resourceID>",
"ct": "<creationTime>"
}
}
| Field | Description | Required |
|---|---|---|
cnd | FlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.network | yes |
rn | Resource name — used as a label reference during gateway provisioning | yes |
name | Human-readable name for the network | yes |
propagate | false = link existing LORIOT network; true = D2C creates a new network in LORIOT | yes |
Next step
Use the API to onboard your devices to Device to Cloud.