[{"data":1,"prerenderedAt":1042},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fiot\u002Fconnect-a-device":361,"\u002Fguides\u002Fiot\u002Fconnect-a-device-surround":1037},[4,264,315,342],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":263},"Docs","i-lucide-book-open","\u002Fdocs","1.docs",[10,30,57,96,119,194,201,227],{"title":11,"path":12,"stem":13,"children":14,"icon":29},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[15,17,21,25],{"title":11,"path":12,"stem":13,"icon":16},"i-lucide-house",{"title":18,"path":19,"stem":20},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","1.docs\u002F1.getting-started\u002F2.platform-overview",{"title":22,"path":23,"stem":24},"Create an Organisation","\u002Fdocs\u002Fgetting-started\u002Fcreate-an-organisation","1.docs\u002F1.getting-started\u002F3.create-an-organisation",{"title":26,"path":27,"stem":28},"Quickstarts","\u002Fdocs\u002Fgetting-started\u002Fquickstarts","1.docs\u002F1.getting-started\u002F4.quickstarts","i-lucide-rocket",{"title":31,"path":32,"stem":33,"children":34,"icon":56},"Admin Center","\u002Fdocs\u002Finfuse-cloud","1.docs\u002F2.infuse-cloud\u002F1.index",[35,36,40,44,48,52],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Create or Switch Organisations","\u002Fdocs\u002Finfuse-cloud\u002Fcreate-or-switch-organisations","1.docs\u002F2.infuse-cloud\u002F2.create-or-switch-organisations",{"title":41,"path":42,"stem":43},"Organisation Profile","\u002Fdocs\u002Finfuse-cloud\u002Forganisation-profile","1.docs\u002F2.infuse-cloud\u002F3.organisation-profile",{"title":45,"path":46,"stem":47},"Members and Invitations","\u002Fdocs\u002Finfuse-cloud\u002Fmembers-and-invitations","1.docs\u002F2.infuse-cloud\u002F4.members-and-invitations",{"title":49,"path":50,"stem":51},"Member Roles","\u002Fdocs\u002Finfuse-cloud\u002Fmember-roles","1.docs\u002F2.infuse-cloud\u002F5.member-roles",{"title":53,"path":54,"stem":55},"API Access","\u002Fdocs\u002Finfuse-cloud\u002Fapi-access","1.docs\u002F2.infuse-cloud\u002F6.api-access","i-lucide-building-2",{"title":58,"path":59,"stem":60,"children":61,"icon":95},"Infuse IoT","\u002Fdocs\u002Finfuse-iot","1.docs\u002F3.infuse-iot\u002F1.index",[62,63,67,71,75,79,83,87,91],{"title":58,"path":59,"stem":60},{"title":64,"path":65,"stem":66},"Devices","\u002Fdocs\u002Finfuse-iot\u002Fdevices","1.docs\u002F3.infuse-iot\u002F2.devices",{"title":68,"path":69,"stem":70},"Provisioning","\u002Fdocs\u002Finfuse-iot\u002Fprovisioning","1.docs\u002F3.infuse-iot\u002F3.provisioning",{"title":72,"path":73,"stem":74},"Telemetry","\u002Fdocs\u002Finfuse-iot\u002Ftelemetry","1.docs\u002F3.infuse-iot\u002F4.telemetry",{"title":76,"path":77,"stem":78},"Commands","\u002Fdocs\u002Finfuse-iot\u002Fcommands","1.docs\u002F3.infuse-iot\u002F5.commands",{"title":80,"path":81,"stem":82},"Firmware","\u002Fdocs\u002Finfuse-iot\u002Ffirmware","1.docs\u002F3.infuse-iot\u002F6.firmware",{"title":84,"path":85,"stem":86},"Definitions","\u002Fdocs\u002Finfuse-iot\u002Fdefinitions","1.docs\u002F3.infuse-iot\u002F7.definitions",{"title":88,"path":89,"stem":90},"Connectivity","\u002Fdocs\u002Finfuse-iot\u002Fconnectivity","1.docs\u002F3.infuse-iot\u002F8.connectivity",{"title":92,"path":93,"stem":94},"SDK Reference","\u002Fdocs\u002Finfuse-iot\u002Fsdk-reference","1.docs\u002F3.infuse-iot\u002F9.sdk-reference","i-lucide-radio-tower",{"title":97,"path":98,"stem":99,"children":100,"icon":118},"Infuse DB","\u002Fdocs\u002Finfuse-db","1.docs\u002F4.infuse-db\u002F1.index",[101,102,106,110,114],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"Datasets","\u002Fdocs\u002Finfuse-db\u002Fdatasets","1.docs\u002F4.infuse-db\u002F2.datasets",{"title":107,"path":108,"stem":109},"Ingestion","\u002Fdocs\u002Finfuse-db\u002Fingestion","1.docs\u002F4.infuse-db\u002F3.ingestion",{"title":111,"path":112,"stem":113},"Querying","\u002Fdocs\u002Finfuse-db\u002Fquerying","1.docs\u002F4.infuse-db\u002F4.querying",{"title":115,"path":116,"stem":117},"Retention","\u002Fdocs\u002Finfuse-db\u002Fretention","1.docs\u002F4.infuse-db\u002F5.retention","i-lucide-database",{"title":120,"path":121,"stem":122,"children":123,"icon":193},"Marketplace","\u002Fdocs\u002Fmarketplace","1.docs\u002F5.marketplace\u002F1.index",[124,125,129,133,161],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Marketplace Instances","\u002Fdocs\u002Fmarketplace\u002Finstances","1.docs\u002F5.marketplace\u002F2.instances",{"title":130,"path":131,"stem":132},"Marketplace Roles","\u002Fdocs\u002Fmarketplace\u002Froles","1.docs\u002F5.marketplace\u002F3.roles",{"title":134,"path":135,"stem":136,"children":137,"icon":160},"Developers","\u002Fdocs\u002Fmarketplace\u002Fdevelopers","1.docs\u002F5.marketplace\u002Fdevelopers\u002F1.index",[138,140,144,148,152,156],{"title":139,"path":135,"stem":136},"Marketplace Developers",{"title":141,"path":142,"stem":143},"Create a Product","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fcreate-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F2.create-product",{"title":145,"path":146,"stem":147},"Upload Assets","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fupload-assets","1.docs\u002F5.marketplace\u002Fdevelopers\u002F3.upload-assets",{"title":149,"path":150,"stem":151},"Releases and Versions","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Freleases-and-versions","1.docs\u002F5.marketplace\u002Fdevelopers\u002F4.releases-and-versions",{"title":153,"path":154,"stem":155},"Pricing","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpricing","1.docs\u002F5.marketplace\u002Fdevelopers\u002F5.pricing",{"title":157,"path":158,"stem":159},"Publish a Product","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpublish-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F6.publish-product","i-lucide-code-2",{"title":162,"path":163,"stem":164,"children":165,"icon":192},"Providers","\u002Fdocs\u002Fmarketplace\u002Fproviders","1.docs\u002F5.marketplace\u002Fproviders\u002F1.index",[166,168,172,176,180,184,188],{"title":167,"path":163,"stem":164},"Marketplace Providers",{"title":169,"path":170,"stem":171},"Discover Products","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fdiscover-products","1.docs\u002F5.marketplace\u002Fproviders\u002F2.discover-products",{"title":173,"path":174,"stem":175},"Create and Manage Listings","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcreate-listings","1.docs\u002F5.marketplace\u002Fproviders\u002F3.create-listings",{"title":177,"path":178,"stem":179},"Build a Storefront","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront","1.docs\u002F5.marketplace\u002Fproviders\u002F4.build-a-storefront",{"title":181,"path":182,"stem":183},"Checkout Flow","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcheckout-flow","1.docs\u002F5.marketplace\u002Fproviders\u002F5.checkout-flow",{"title":185,"path":186,"stem":187},"Purchases","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fpurchases","1.docs\u002F5.marketplace\u002Fproviders\u002F6.purchases",{"title":189,"path":190,"stem":191},"Install Purchased Products","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Finstall-purchased-products","1.docs\u002F5.marketplace\u002Fproviders\u002F7.install-purchased-products","i-lucide-handshake","i-lucide-store",{"title":195,"path":196,"stem":197,"children":198,"icon":200},"Infuse Analytics","\u002Fdocs\u002Finfuse-analytics","1.docs\u002F6.infuse-analytics\u002F1.index",[199],{"title":195,"path":196,"stem":197},"i-lucide-chart-no-axes-combined",{"title":202,"path":203,"stem":204,"children":205,"icon":226},"Concepts","\u002Fdocs\u002Fconcepts","1.docs\u002F7.concepts\u002F1.index",[206,207,211,215,218,222],{"title":202,"path":203,"stem":204},{"title":208,"path":209,"stem":210},"Organisations","\u002Fdocs\u002Fconcepts\u002Forganisations","1.docs\u002F7.concepts\u002F2.organisations",{"title":212,"path":213,"stem":214},"Products","\u002Fdocs\u002Fconcepts\u002Fproducts","1.docs\u002F7.concepts\u002F3.products",{"title":64,"path":216,"stem":217},"\u002Fdocs\u002Fconcepts\u002Fdevices","1.docs\u002F7.concepts\u002F5.devices",{"title":219,"path":220,"stem":221},"Entitlements","\u002Fdocs\u002Fconcepts\u002Fentitlements","1.docs\u002F7.concepts\u002F6.entitlements",{"title":223,"path":224,"stem":225},"Marketplace Model","\u002Fdocs\u002Fconcepts\u002Fmarketplace-model","1.docs\u002F7.concepts\u002F7.marketplace-model","i-lucide-map",{"title":228,"path":229,"stem":230,"children":231,"icon":262},"IAM & Access","\u002Fdocs\u002Fiam-and-access","1.docs\u002F8.iam-and-access\u002F1.index",[232,234,238,242,246,250,254,258],{"title":233,"path":229,"stem":230},"IAM and Access",{"title":235,"path":236,"stem":237},"Users, Groups, and Roles","\u002Fdocs\u002Fiam-and-access\u002Fusers-groups-and-roles","1.docs\u002F8.iam-and-access\u002F2.users-groups-and-roles",{"title":239,"path":240,"stem":241},"Permissions","\u002Fdocs\u002Fiam-and-access\u002Fpermissions","1.docs\u002F8.iam-and-access\u002F3.permissions",{"title":243,"path":244,"stem":245},"Service Accounts","\u002Fdocs\u002Fiam-and-access\u002Fservice-accounts","1.docs\u002F8.iam-and-access\u002F4.service-accounts",{"title":247,"path":248,"stem":249},"API Tokens","\u002Fdocs\u002Fiam-and-access\u002Fapi-tokens","1.docs\u002F8.iam-and-access\u002F5.api-tokens",{"title":251,"path":252,"stem":253},"Token Exchange","\u002Fdocs\u002Fiam-and-access\u002Ftoken-exchange","1.docs\u002F8.iam-and-access\u002F6.token-exchange",{"title":255,"path":256,"stem":257},"Rotate and Revoke Credentials","\u002Fdocs\u002Fiam-and-access\u002Frotate-and-revoke-credentials","1.docs\u002F8.iam-and-access\u002F7.rotate-and-revoke-credentials",{"title":259,"path":260,"stem":261},"Troubleshooting Auth","\u002Fdocs\u002Fiam-and-access\u002Ftroubleshooting-auth","1.docs\u002F8.iam-and-access\u002F8.troubleshooting-auth","i-lucide-shield-check",false,{"title":265,"path":266,"stem":267,"children":268,"icon":314},"Guides","\u002Fguides","2.guides\u002F1.index",[269,270,282,293,304],{"title":265,"path":266,"stem":267},{"title":271,"path":272,"stem":273,"children":274,"icon":281},"Access","\u002Fguides\u002Faccess","2.guides\u002Faccess\u002F1.index",[275,277],{"title":276,"path":272,"stem":273},"Access Guides",{"title":278,"path":279,"stem":280},"Create an API Token","\u002Fguides\u002Faccess\u002Fcreate-an-api-token","2.guides\u002Faccess\u002F2.create-an-api-token","i-lucide-key-round",{"title":283,"path":284,"stem":285,"children":286,"icon":118},"Data","\u002Fguides\u002Fdata","2.guides\u002Fdata\u002F1.index",[287,289],{"title":288,"path":284,"stem":285},"Data Guides",{"title":290,"path":291,"stem":292},"Stream IoT Data to Infuse DB","\u002Fguides\u002Fdata\u002Fstream-iot-data-to-infuse-db","2.guides\u002Fdata\u002F2.stream-iot-data-to-infuse-db",{"title":294,"path":295,"stem":296,"children":297,"icon":95},"IoT","\u002Fguides\u002Fiot","2.guides\u002Fiot\u002F1.index",[298,300],{"title":299,"path":295,"stem":296},"IoT Guides",{"title":301,"path":302,"stem":303},"Connect an IoT Device","\u002Fguides\u002Fiot\u002Fconnect-a-device","2.guides\u002Fiot\u002F2.connect-a-device",{"title":120,"path":305,"stem":306,"children":307,"icon":193},"\u002Fguides\u002Fmarketplace","2.guides\u002Fmarketplace\u002F1.index",[308,310],{"title":309,"path":305,"stem":306},"Marketplace Guides",{"title":311,"path":312,"stem":313},"Build a Marketplace Storefront","\u002Fguides\u002Fmarketplace\u002Fbuild-a-storefront","2.guides\u002Fmarketplace\u002F2.build-a-storefront","i-lucide-route",{"title":316,"path":317,"stem":318,"children":319,"icon":341},"API Reference","\u002Fapi-reference","3.api-reference\u002F1.index",[320,321,325,329,333,337],{"title":316,"path":317,"stem":318},{"title":322,"path":323,"stem":324},"Admin API","\u002Fapi-reference\u002Fcloud","3.api-reference\u002F2.cloud",{"title":326,"path":327,"stem":328},"Marketplace API","\u002Fapi-reference\u002Fmarketplace","3.api-reference\u002F3.marketplace",{"title":330,"path":331,"stem":332},"IAM API","\u002Fapi-reference\u002Fiam","3.api-reference\u002F4.iam",{"title":334,"path":335,"stem":336},"Infuse IoT API","\u002Fapi-reference\u002Fiot","3.api-reference\u002F5.iot",{"title":338,"path":339,"stem":340},"Infuse DB API","\u002Fapi-reference\u002Fdb","3.api-reference\u002F6.db","i-lucide-braces",{"title":343,"path":344,"stem":345,"children":346,"icon":360},"Resources","\u002Fresources","4.resources\u002F1.index",[347,348,352,356],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351},"SDKs","\u002Fresources\u002Fsdks","4.resources\u002F2.sdks",{"title":353,"path":354,"stem":355},"OpenAPI Specs","\u002Fresources\u002Fopenapi-specs","4.resources\u002F3.openapi-specs",{"title":357,"path":358,"stem":359},"Examples","\u002Fresources\u002Fexamples","4.resources\u002F4.examples","i-lucide-folder-open",{"id":362,"title":301,"body":363,"description":1031,"extension":1032,"links":1033,"meta":1034,"navigation":437,"path":302,"seo":1035,"stem":303,"__hash__":1036},"docs\u002F2.guides\u002Fiot\u002F2.connect-a-device.md",{"type":364,"value":365,"toc":1020},"minimark",[366,370,377,382,385,409,412,457,460,464,467,481,484,537,544,548,551,565,626,629,633,636,701,707,711,714,728,731,766,769,809,812,816,819,858,865,869,872,886,889,903,907,910,968,971,985,989,1016],[367,368,369],"p",{},"Use this guide to connect a device when your integration is managed through the Infuse IoT API rather than a dashboard UI.",[367,371,372,373,376],{},"Before you start, keep your Infuse IoT admin credential on a trusted backend. Current Infuse IoT API flows use the legacy organisation-level token noted in ",[374,375,247],"a",{"href":248},".",[378,379,381],"h2",{"id":380},"_1-identify-the-organisation","1. Identify The Organisation",[367,383,384],{},"Find the organisation that should own the device.",[386,387,392],"pre",{"className":388,"code":389,"language":390,"meta":391,"style":391},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GET \u002Forganisation\u002Fname\u002F{name}\nAuthorization: Bearer {infuse_iot_admin_token}\n","http","",[393,394,395,403],"code",{"__ignoreMap":391},[396,397,400],"span",{"class":398,"line":399},"line",1,[396,401,402],{},"GET \u002Forganisation\u002Fname\u002F{name}\n",[396,404,406],{"class":398,"line":405},2,[396,407,408],{},"Authorization: Bearer {infuse_iot_admin_token}\n",[367,410,411],{},"If the organisation does not exist in the IoT environment yet, create it:",[386,413,415],{"className":388,"code":414,"language":390,"meta":391,"style":391},"POST \u002Forganisation\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"name\": \"Example Provider\"\n}\n",[393,416,417,422,426,432,439,445,451],{"__ignoreMap":391},[396,418,419],{"class":398,"line":399},[396,420,421],{},"POST \u002Forganisation\n",[396,423,424],{"class":398,"line":405},[396,425,408],{},[396,427,429],{"class":398,"line":428},3,[396,430,431],{},"Content-Type: application\u002Fjson\n",[396,433,435],{"class":398,"line":434},4,[396,436,438],{"emptyLinePlaceholder":437},true,"\n",[396,440,442],{"class":398,"line":441},5,[396,443,444],{},"{\n",[396,446,448],{"class":398,"line":447},6,[396,449,450],{},"  \"name\": \"Example Provider\"\n",[396,452,454],{"class":398,"line":453},7,[396,455,456],{},"}\n",[367,458,459],{},"Store the returned organisation ID. You will use it when creating boards, devices, and MQTT tokens.",[378,461,463],{"id":462},"_2-create-or-select-a-board","2. Create Or Select A Board",[367,465,466],{},"Boards represent hardware or product profiles.",[386,468,470],{"className":388,"code":469,"language":390,"meta":391,"style":391},"GET \u002Fboard?organisationId={organisationId}\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,471,472,477],{"__ignoreMap":391},[396,473,474],{"class":398,"line":399},[396,475,476],{},"GET \u002Fboard?organisationId={organisationId}\n",[396,478,479],{"class":398,"line":405},[396,480,408],{},[367,482,483],{},"Create a board if the target hardware profile is not registered:",[386,485,487],{"className":388,"code":486,"language":390,"meta":391,"style":391},"POST \u002Fboard\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"organisationId\": \"{organisationId}\",\n  \"name\": \"Example Sensor Board\",\n  \"description\": \"Low-power field sensor board\",\n  \"soc\": \"nRF9151\"\n}\n",[393,488,489,494,498,502,506,510,515,520,526,532],{"__ignoreMap":391},[396,490,491],{"class":398,"line":399},[396,492,493],{},"POST \u002Fboard\n",[396,495,496],{"class":398,"line":405},[396,497,408],{},[396,499,500],{"class":398,"line":428},[396,501,431],{},[396,503,504],{"class":398,"line":434},[396,505,438],{"emptyLinePlaceholder":437},[396,507,508],{"class":398,"line":441},[396,509,444],{},[396,511,512],{"class":398,"line":447},[396,513,514],{},"  \"organisationId\": \"{organisationId}\",\n",[396,516,517],{"class":398,"line":453},[396,518,519],{},"  \"name\": \"Example Sensor Board\",\n",[396,521,523],{"class":398,"line":522},8,[396,524,525],{},"  \"description\": \"Low-power field sensor board\",\n",[396,527,529],{"class":398,"line":528},9,[396,530,531],{},"  \"soc\": \"nRF9151\"\n",[396,533,535],{"class":398,"line":534},10,[396,536,456],{},[367,538,539,540,543],{},"Store the returned ",[393,541,542],{},"boardId",". Use board metadata fields if your integration needs consistent serial, site, customer, or hardware-variant values.",[378,545,547],{"id":546},"_3-create-or-select-a-network","3. Create Or Select A Network",[367,549,550],{},"If your deployment model uses networks, resolve or create the network before registering devices.",[386,552,554],{"className":388,"code":553,"language":390,"meta":391,"style":391},"GET \u002Fnetwork?organisationId={organisationId}&includePublic=false\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,555,556,561],{"__ignoreMap":391},[396,557,558],{"class":398,"line":399},[396,559,560],{},"GET \u002Fnetwork?organisationId={organisationId}&includePublic=false\n",[396,562,563],{"class":398,"line":405},[396,564,408],{},[386,566,568],{"className":388,"code":567,"language":390,"meta":391,"style":391},"POST \u002Fnetwork\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"organisationId\": \"{organisationId}\",\n  \"name\": \"Field Network\",\n  \"description\": \"Primary field deployment network\",\n  \"key\": \"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=\",\n  \"public\": false,\n  \"networkId\": 1001\n}\n",[393,569,570,575,579,583,587,591,595,600,605,610,615,621],{"__ignoreMap":391},[396,571,572],{"class":398,"line":399},[396,573,574],{},"POST \u002Fnetwork\n",[396,576,577],{"class":398,"line":405},[396,578,408],{},[396,580,581],{"class":398,"line":428},[396,582,431],{},[396,584,585],{"class":398,"line":434},[396,586,438],{"emptyLinePlaceholder":437},[396,588,589],{"class":398,"line":441},[396,590,444],{},[396,592,593],{"class":398,"line":447},[396,594,514],{},[396,596,597],{"class":398,"line":453},[396,598,599],{},"  \"name\": \"Field Network\",\n",[396,601,602],{"class":398,"line":522},[396,603,604],{},"  \"description\": \"Primary field deployment network\",\n",[396,606,607],{"class":398,"line":528},[396,608,609],{},"  \"key\": \"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=\",\n",[396,611,612],{"class":398,"line":534},[396,613,614],{},"  \"public\": false,\n",[396,616,618],{"class":398,"line":617},11,[396,619,620],{},"  \"networkId\": 1001\n",[396,622,624],{"class":398,"line":623},12,[396,625,456],{},[367,627,628],{},"If your integration does not separate devices by network, keep this step as an internal no-op and continue with the organisation and board identifiers.",[378,630,632],{"id":631},"_4-create-the-device","4. Create The Device",[367,634,635],{},"Create the device with the MCU identifier, board, organisation, and any metadata your backend needs for reconciliation.",[386,637,639],{"className":388,"code":638,"language":390,"meta":391,"style":391},"POST \u002Fdevice\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"mcuId\": \"0011223344556677\",\n  \"boardId\": \"{boardId}\",\n  \"organisationId\": \"{organisationId}\",\n  \"metadata\": {\n    \"serialNumber\": \"SN-10001\",\n    \"deploymentSite\": \"Brisbane\"\n  }\n}\n",[393,640,641,646,650,654,658,662,667,672,676,681,686,691,696],{"__ignoreMap":391},[396,642,643],{"class":398,"line":399},[396,644,645],{},"POST \u002Fdevice\n",[396,647,648],{"class":398,"line":405},[396,649,408],{},[396,651,652],{"class":398,"line":428},[396,653,431],{},[396,655,656],{"class":398,"line":434},[396,657,438],{"emptyLinePlaceholder":437},[396,659,660],{"class":398,"line":441},[396,661,444],{},[396,663,664],{"class":398,"line":447},[396,665,666],{},"  \"mcuId\": \"0011223344556677\",\n",[396,668,669],{"class":398,"line":453},[396,670,671],{},"  \"boardId\": \"{boardId}\",\n",[396,673,674],{"class":398,"line":522},[396,675,514],{},[396,677,678],{"class":398,"line":528},[396,679,680],{},"  \"metadata\": {\n",[396,682,683],{"class":398,"line":534},[396,684,685],{},"    \"serialNumber\": \"SN-10001\",\n",[396,687,688],{"class":398,"line":617},[396,689,690],{},"    \"deploymentSite\": \"Brisbane\"\n",[396,692,693],{"class":398,"line":623},[396,694,695],{},"  }\n",[396,697,699],{"class":398,"line":698},13,[396,700,456],{},[367,702,539,703,706],{},[393,704,705],{},"deviceId",". This is the identifier downstream systems should use for device-specific workflows such as Marketplace checkout, RPC commands, and data ingestion.",[378,708,710],{"id":709},"_5-provision-keys","5. Provision Keys",[367,712,713],{},"Fetch the current cloud public key:",[386,715,717],{"className":388,"code":716,"language":390,"meta":391,"style":391},"GET \u002Fkey\u002FpublicKey\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,718,719,724],{"__ignoreMap":391},[396,720,721],{"class":398,"line":399},[396,722,723],{},"GET \u002Fkey\u002FpublicKey\n",[396,725,726],{"class":398,"line":405},[396,727,408],{},[367,729,730],{},"Use the device public key to generate shared secret material:",[386,732,734],{"className":388,"code":733,"language":390,"meta":391,"style":391},"POST \u002Fkey\u002FsharedSecret\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"key\": \"{device_public_key_base64}\"\n}\n",[393,735,736,741,745,749,753,757,762],{"__ignoreMap":391},[396,737,738],{"class":398,"line":399},[396,739,740],{},"POST \u002Fkey\u002FsharedSecret\n",[396,742,743],{"class":398,"line":405},[396,744,408],{},[396,746,747],{"class":398,"line":428},[396,748,431],{},[396,750,751],{"class":398,"line":434},[396,752,438],{"emptyLinePlaceholder":437},[396,754,755],{"class":398,"line":441},[396,756,444],{},[396,758,759],{"class":398,"line":447},[396,760,761],{},"  \"key\": \"{device_public_key_base64}\"\n",[396,763,764],{"class":398,"line":453},[396,765,456],{},[367,767,768],{},"Derive device encryption key material as required by your provisioning flow:",[386,770,772],{"className":388,"code":771,"language":390,"meta":391,"style":391},"POST \u002Fkey\u002Fderived\u002Fdevice\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"deviceId\": \"{deviceId}\",\n  \"interface\": \"udp\"\n}\n",[393,773,774,779,783,787,791,795,800,805],{"__ignoreMap":391},[396,775,776],{"class":398,"line":399},[396,777,778],{},"POST \u002Fkey\u002Fderived\u002Fdevice\n",[396,780,781],{"class":398,"line":405},[396,782,408],{},[396,784,785],{"class":398,"line":428},[396,786,431],{},[396,788,789],{"class":398,"line":434},[396,790,438],{"emptyLinePlaceholder":437},[396,792,793],{"class":398,"line":441},[396,794,444],{},[396,796,797],{"class":398,"line":447},[396,798,799],{},"  \"deviceId\": \"{deviceId}\",\n",[396,801,802],{"class":398,"line":453},[396,803,804],{},"  \"interface\": \"udp\"\n",[396,806,807],{"class":398,"line":522},[396,808,456],{},[367,810,811],{},"Keep provisioning secrets in your trusted backend, manufacturing system, or device secure storage. Rotate device-specific credentials when devices are replaced, reassigned, or exposed.",[378,813,815],{"id":814},"_6-generate-an-mqtt-token","6. Generate An MQTT Token",[367,817,818],{},"Issue a short-lived MQTT token for the organisation when your device, gateway, or broker integration needs MQTT connectivity.",[386,820,822],{"className":388,"code":821,"language":390,"meta":391,"style":391},"POST \u002Fmqtt\u002Ftoken\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"organisationId\": \"{organisationId}\",\n  \"ttlSeconds\": 3600\n}\n",[393,823,824,829,833,837,841,845,849,854],{"__ignoreMap":391},[396,825,826],{"class":398,"line":399},[396,827,828],{},"POST \u002Fmqtt\u002Ftoken\n",[396,830,831],{"class":398,"line":405},[396,832,408],{},[396,834,835],{"class":398,"line":428},[396,836,431],{},[396,838,839],{"class":398,"line":434},[396,840,438],{"emptyLinePlaceholder":437},[396,842,843],{"class":398,"line":441},[396,844,444],{},[396,846,847],{"class":398,"line":447},[396,848,514],{},[396,850,851],{"class":398,"line":453},[396,852,853],{},"  \"ttlSeconds\": 3600\n",[396,855,856],{"class":398,"line":522},[396,857,456],{},[367,859,860,861,864],{},"Use the returned ",[393,862,863],{},"expiresAt"," value to refresh the token before it expires.",[378,866,868],{"id":867},"_7-confirm-communication","7. Confirm Communication",[367,870,871],{},"After the device or gateway starts communicating, confirm Infuse IoT can see its operational state.",[386,873,875],{"className":388,"code":874,"language":390,"meta":391,"style":391},"GET \u002Fdevice\u002FdeviceId\u002F{deviceId}\u002Fstate\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,876,877,882],{"__ignoreMap":391},[396,878,879],{"class":398,"line":399},[396,880,881],{},"GET \u002Fdevice\u002FdeviceId\u002F{deviceId}\u002Fstate\n",[396,883,884],{"class":398,"line":405},[396,885,408],{},[367,887,888],{},"Check the last route when you need to confirm downlink reachability:",[386,890,892],{"className":388,"code":891,"language":390,"meta":391,"style":391},"GET \u002Fdevice\u002FdeviceId\u002F{deviceId}\u002FlastRoute\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,893,894,899],{"__ignoreMap":391},[396,895,896],{"class":398,"line":399},[396,897,898],{},"GET \u002Fdevice\u002FdeviceId\u002F{deviceId}\u002FlastRoute\n",[396,900,901],{"class":398,"line":405},[396,902,408],{},[378,904,906],{"id":905},"_8-send-a-test-rpc","8. Send A Test RPC",[367,908,909],{},"Send a small RPC supported by the device firmware.",[386,911,913],{"className":388,"code":912,"language":390,"meta":391,"style":391},"POST \u002Frpc\nAuthorization: Bearer {infuse_iot_admin_token}\nContent-Type: application\u002Fjson\n\n{\n  \"deviceId\": \"{deviceId}\",\n  \"sendWaitTimeoutMs\": 60000,\n  \"rpc\": {\n    \"commandName\": \"ping\",\n    \"params\": {}\n  }\n}\n",[393,914,915,920,924,928,932,936,940,945,950,955,960,964],{"__ignoreMap":391},[396,916,917],{"class":398,"line":399},[396,918,919],{},"POST \u002Frpc\n",[396,921,922],{"class":398,"line":405},[396,923,408],{},[396,925,926],{"class":398,"line":428},[396,927,431],{},[396,929,930],{"class":398,"line":434},[396,931,438],{"emptyLinePlaceholder":437},[396,933,934],{"class":398,"line":441},[396,935,444],{},[396,937,938],{"class":398,"line":447},[396,939,799],{},[396,941,942],{"class":398,"line":453},[396,943,944],{},"  \"sendWaitTimeoutMs\": 60000,\n",[396,946,947],{"class":398,"line":522},[396,948,949],{},"  \"rpc\": {\n",[396,951,952],{"class":398,"line":528},[396,953,954],{},"    \"commandName\": \"ping\",\n",[396,956,957],{"class":398,"line":534},[396,958,959],{},"    \"params\": {}\n",[396,961,962],{"class":398,"line":617},[396,963,695],{},[396,965,966],{"class":398,"line":623},[396,967,456],{},[367,969,970],{},"Store the returned RPC message ID and read it until the command reaches a terminal state:",[386,972,974],{"className":388,"code":973,"language":390,"meta":391,"style":391},"GET \u002Frpc\u002F{id}\nAuthorization: Bearer {infuse_iot_admin_token}\n",[393,975,976,981],{"__ignoreMap":391},[396,977,978],{"class":398,"line":399},[396,979,980],{},"GET \u002Frpc\u002F{id}\n",[396,982,983],{"class":398,"line":405},[396,984,408],{},[378,986,988],{"id":987},"next-steps","Next Steps",[990,991,992,999,1005,1011],"ul",{},[993,994,995,996,998],"li",{},"Use ",[374,997,64],{"href":65}," to understand identifiers and lookup paths.",[993,1000,995,1001,1004],{},[374,1002,1003],{"href":73},"Telemetry and State"," to track state, routes, logger progress, and KV entries.",[993,1006,995,1007,1010],{},[374,1008,1009],{"href":77},"Commands and RPC"," for production command flows.",[993,1012,995,1013,1015],{},[374,1014,84],{"href":85}," to align backend payloads with firmware schemas.",[1017,1018,1019],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":391,"searchDepth":399,"depth":405,"links":1021},[1022,1023,1024,1025,1026,1027,1028,1029,1030],{"id":380,"depth":405,"text":381},{"id":462,"depth":405,"text":463},{"id":546,"depth":405,"text":547},{"id":631,"depth":405,"text":632},{"id":709,"depth":405,"text":710},{"id":814,"depth":405,"text":815},{"id":867,"depth":405,"text":868},{"id":905,"depth":405,"text":906},{"id":987,"depth":405,"text":988},"Register, provision, and verify a device through the Infuse IoT API.","md",null,{},{"title":301,"description":1031},"AsWOyv_y6Ar1_TFrqnXkeBJ6oY7LYPmD3naYNlcKCwQ",[1038,1040],{"title":299,"path":295,"stem":296,"description":1039,"children":-1},"Task-focused guides for registering, provisioning, connecting, and verifying Infuse IoT devices.",{"title":309,"path":305,"stem":306,"description":1041,"children":-1},"Task-focused guides for Marketplace storefront and provider workflows.",1779344631118]