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:

  1. A LORIOT Account — your credentials for the LORIOT network server.
  2. A LORIOT Application — the LORIOT application that groups your devices.
  3. 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>"
  }
}
FieldDescriptionRequired
cndFlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.accountyes
rnResource name — used as a reference in subsequent network and application resourcesyes
userApiRoot URL of your LORIOT server (from Step 1 of the getting-started guide)yes
tokenLORIOT 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>
Note:
Deleting an account also removes all associated application and network resources from DMO, and cleans up the corresponding resources in LORIOT if they were propagated.

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>"
  }
}
FieldDescriptionRequired
cndFlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.applicationyes
rnResource name — used as a label reference during device provisioningyes
nameHuman-readable name for the applicationyes
propagatefalse = link existing LORIOT application; true = D2C creates a new application in LORIOTyes
capacityThe 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>"
  }
}
FieldDescriptionRequired
cndFlexContainer descriptor — always com.telekom.iot.orchestrator.loriot.networkyes
rnResource name — used as a label reference during gateway provisioningyes
nameHuman-readable name for the networkyes
propagatefalse = link existing LORIOT network; true = D2C creates a new network in LORIOTyes

Next step

Use the API to onboard your devices to Device to Cloud.