This section provides instructions for scheduling downlinks using HTTP Webhooks.
You can schedule downlink messages using webhooks. This requires an API key with traffic writing rights, which can be created using the Console.
Create an API Key
In your application, select API Keys on the left menu and click the + Add API Key button. Fill in the Name and the Rights of your API key.
Click on the Create API Key button in order to create the API key. This will open the API key information screen.
Note:
Make sure to save your API key at this point, since it will no longer be retrievable after you leave the page.You can now pass the API key as bearer token on the Authorization header.
Scheduling Downlinks
The downlink queue operation paths are:
- For push:
/api/v3/as/applications/{application_id}/webhooks/{webhook_id}/devices/{device_id}/down/push - For replace:
/api/v3/as/applications/{application_id}/webhooks/{webhook_id}/devices/{device_id}/down/replace
For example, to push a downlink to the end device dev1 of the application app1 using the webhook wh1:
curl --location \
--header 'Authorization: Bearer NNSXS.XXXXXXXXX' \
--header 'Content-Type: application/json' \
--header 'User-Agent: my-integration/my-integration-version' \
--request POST \
--data '{"downlinks":[{
"frm_payload":"vu8=",
"f_port":15,
"priority":"NORMAL"
}]
}' \
'https://thethings.example.com/api/v3/as/applications/app1/webhooks/wh1/devices/dev1/down/push'
To schedule a human readable downlink to the same device using a downlink Payload Formatter:
curl --location \
--header 'Authorization: Bearer NNSXS.XXXXXXXXX' \
--header 'Content-Type: application/json' \
--header 'User-Agent: my-integration/my-integration-version' \
--request POST \
--data '{"downlinks":[{
"decoded_payload": {
"bytes": [1, 2, 3]
}
}]
}' \
'https://thethings.example.com/api/v3/as/applications/app1/webhooks/wh1/devices/dev1/down/push'
Note:
Downlinks scheduled using thedecoded_payload Payload Formatter field are encrypted in the Application Server, and the content will not be comprehensible in the Network Server’s frm_payload field when viewing events.
You can also save the API key in the webhook configuration page using the the Downlink API Key field. The Application Server will provide it to your endpoint using the X-Downlink-Apikey header and the push and replace operations paths using the X-Downlink-Push and X-Downlink-Replace headers.
The Things Stack keeps a queue of downlink messages per device. This queue can be replaced with a list of downlink messages. The queue can also be cleared by replacing it with an empty array.
To clear the queue of downlink messages for an end device dev1 of the application app1 using the webhook wh1:
curl --location \
--header 'Authorization: Bearer NNSXS.XXXXXXXXX' \
--header 'Content-Type: application/json' \
--header 'User-Agent: my-integration/my-integration-version' \
--request POST \
--data '{"downlinks":[]}' \
'https://thethings.example.com/api/v3/as/applications/app1/webhooks/wh1/devices/dev1/down/replace'