You can provide secret data for specific Microvisor-empowered IoT devices using the Secret subresource. Secrets are intended as a way to upload data such as PKI keys and other confidential items to the Twilio cloud so they need not be baked into application code. Instead, the application code running on the device retrieves the Secret when it needs the information.
Unlike Device Configs, Device Secrets' values cannot be accessed via the API once they have been created. The retrieval actions listed below will return Secrets' metadata, not their values.
Each Secret is a key:value pair which your application code can access using Microvisor System Calls.
Keys are text identifiers of up to 100 characters in length. They must be unique for a given device. For example, devices A and B can both have Secret with the key wifi_password
, but each device can have only one Secret with that key.
Values must also be supplied as text, of up to 4096 characters in length. If you wish to make binary data available to your devices, you will need to encode it as text before creating the Secret. For example, you might used base64 encoding. Your application must decode the value back to binary after acquiring it from the Twilio cloud.
Secret subresources are accessed at these endpoints:
1https://microvisor.twilio.com/v1/Devices/{sid}/Secrets2https://microvisor.twilio.com/v1/Devices/{UniqueName}/Secrets
Device Secrets are accessible only by the specified device. For Secrets that are made available to all devices associated with a given account, please see Account-level Secrets.
Secrets can't yet be updated. If you need to change a Secret's value, delete it, and then create a new Secret with the same key.
A 34-character string that uniquely identifies the parent Device.
^UV[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The absolute URL of the Secret.
POST https://microvisor.twilio.com/v1/Devices/{DeviceSid}/Secrets
A 34-character string that uniquely identifies the Device.
application/x-www-form-urlencoded
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createDeviceSecret() {11const deviceSecret = await client.microvisor.v112.devices("UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")13.deviceSecrets.create({14key: "Key",15value: "Value",16});1718console.log(deviceSecret.deviceSid);19}2021createDeviceSecret();
1{2"device_sid": "UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",3"key": "Key",4"date_rotated": "2021-01-01T12:34:56Z",5"url": "https://microvisor.twilio.com/v1/Devices/UVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Secrets/first"6}
GET https://microvisor.twilio.com/v1/Devices/{DeviceSid}/Secrets/{Key}
The secret key; up to 100 characters.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function fetchDeviceSecret() {11const deviceSecret = await client.microvisor.v112.devices("UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")13.deviceSecrets("key_name")14.fetch();1516console.log(deviceSecret.deviceSid);17}1819fetchDeviceSecret();
1{2"device_sid": "UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",3"key": "key_name",4"date_rotated": "2021-01-01T12:34:57Z",5"url": "https://microvisor.twilio.com/v1/Devices/UVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Secrets/first"6}
GET https://microvisor.twilio.com/v1/Devices/{DeviceSid}/Secrets
A 34-character string that uniquely identifies the Device.
How many resources to return in each list page. The default is 50, and the maximum is 1000.
1
Maximum: 1000
The page token. This is provided by the API.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function listDeviceSecret() {11const deviceSecrets = await client.microvisor.v112.devices("UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")13.deviceSecrets.list({ limit: 20 });1415deviceSecrets.forEach((d) => console.log(d.deviceSid));16}1718listDeviceSecret();
1{2"secrets": [],3"meta": {4"page": 0,5"page_size": 50,6"first_page_url": "https://microvisor.twilio.com/v1/Devices/UVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Secrets?PageSize=50&Page=0",7"previous_page_url": null,8"url": "https://microvisor.twilio.com/v1/Devices/UVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Secrets?PageSize=50&Page=0",9"next_page_url": null,10"key": "secrets"11}12}
DELETE https://microvisor.twilio.com/v1/Devices/{DeviceSid}/Secrets/{Key}
The secret key; up to 100 characters.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function deleteDeviceSecret() {11await client.microvisor.v112.devices("UVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")13.deviceSecrets("key_name")14.remove();15}1617deleteDeviceSecret();