Come usare l'API REST di IoT Central per gestire i dispositivi
L'API REST di IoT Central consente di sviluppare applicazioni client integrate con le applicazioni IoT Central. È possibile usare l'API REST per gestire i dispositivi nell'applicazione IoT Central.
Ogni chiamata API REST di IoT Central richiede un'intestazione di autorizzazione. Per altre informazioni, vedere Come autenticare e autorizzare le chiamate API REST IoT Central.
Per la documentazione di riferimento per l'API REST di IoT Central, vedere Informazioni di riferimento sull'API REST di Azure IoT Central.
Per informazioni su come gestire i dispositivi usando l'interfaccia utente di IoT Central, vedere Gestire singoli dispositivi nell'applicazione Azure IoT Central.
API REST dei dispositivi
L'API REST di IoT Central consente di:
- Aggiungere un dispositivo all'applicazione
- Aggiornare un dispositivo nell'applicazione
- Ottenere un elenco dei dispositivi nell'applicazione
- Ottenere un dispositivo in base all'ID
- Ottenere credenziali del dispositivo
- Eliminare un dispositivo nell'applicazione
- Filtrare l'elenco dei dispositivi nell'applicazione
Aggiungere un dispositivo
Usare la richiesta seguente per creare un nuovo dispositivo.
PUT https://{your app subdomain}/api/devices/{deviceId}?api-version=2022-07-31
L'esempio seguente mostra un corpo della richiesta che aggiunge un dispositivo per un modello di dispositivo. È possibile ottenere i template
dettagli dalla pagina dei modelli di dispositivo nell'interfaccia utente dell'applicazione IoT Central.
{
"displayName": "CheckoutThermostat",
"template": "dtmi:contoso:Thermostat;1",
"simulated": true,
"enabled": true
}
Il corpo della richiesta include alcuni campi obbligatori:
@displayName
: nome visualizzato del dispositivo.@enabled
: dichiara che questo oggetto è un'interfaccia.@etag
: ETag usato per evitare conflitti negli aggiornamenti del dispositivo.simulated
: il dispositivo è simulato?template
: definizione del modello di dispositivo per il dispositivo.
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "thermostat1",
"etag": "eyJoZWFkZXIiOiJcIjI0MDAwYTdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDIwMDAwMFwiIiwiZGF0YSI6IlwiMzMwMDQ1M2EtMDAwMC0wMzAwLTAwMDAtNjFiODFkMjAwMDAwXCIifQ",
"displayName": "CheckoutThermostat",
"simulated": true,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
}
Ottenere un dispositivo
Usare la richiesta seguente per recuperare i dettagli di un dispositivo dall'applicazione:
GET https://{your app subdomain}/api/devices/{deviceId}?api-version=2022-07-31
Nota
È possibile ottenere deviceId
dall'interfaccia utente dell'applicazione IoT Central passando il puntatore del mouse su un dispositivo.
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "5jcwskdwbm",
"etag": "eyJoZWFkZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "Thermostat - 5jcwskdwbm",
"simulated": false,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
}
La tabella seguente illustra il mapping del valore di stato per un dispositivo nell'interfaccia utente ai valori usati dall'API REST per interagire con i dispositivi:
Stato del dispositivo dell'interfaccia utente | Note | Ottenere l'API REST |
---|---|---|
In attesa dell'approvazione | L'opzione di approvazione automatica è disabilitata nel gruppo di connessioni del dispositivo e il dispositivo non è stato aggiunto tramite l'interfaccia utente. Un utente deve approvare manualmente il dispositivo tramite l'interfaccia utente prima di poterlo usare. |
Provisioned: false Enabled: false |
Registrato | Un dispositivo è stato approvato automaticamente o manualmente. | Provisioned: false Enabled: true |
Sottoposto a provisioning | È stato effettuato il provisioning del dispositivo e può connettersi all'applicazione IoT Central. | Provisioned: true Enabled: true |
Bloccati | Il dispositivo non è autorizzato a connettersi all'applicazione IoT Central. È possibile bloccare un dispositivo che si trova in uno qualsiasi degli altri stati. | Provisioned: Dipende Waiting for approval /Registered /Provisioned status Enabled: false |
Ottenere le credenziali del dispositivo
Usare la richiesta seguente per recuperare le credenziali di un dispositivo dall'applicazione:
GET https://{your app subdomain}/api/devices/{deviceId}/credentials?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"idScope": "0ne003E64EF",
"symmetricKey": {
"primaryKey": "XUQvxGl6+Q1R0NKN5kOTmLOWsSKiuqs5N9unrjYCH4k=",
"secondaryKey": "Qp/MTGHjn5MUTw4NVGhRfG+P+L1zh1gtAhO/KH8kn5c="
}
}
Aggiornare un dispositivo
PATCH https://{your app subdomain}/api/devices/{deviceId}?api-version=2022-07-31
Il corpo della richiesta di esempio seguente modifica il enabled
campo in false
:
{
"enabled": false
}
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "thermostat1",
"etag": "eyJoZWFkZXIiOiJcIjI0MDAwYTdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDIwMDAwMFwiIiwiZGF0YSI6IlwiMzMwMDQ1M2EtMDAwMC0wMzAwLTAwMDAtNjFiODFkMjAwMDAwXCIifQ",
"displayName": "CheckoutThermostat",
"simulated": true,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": false
}
Eliminare un dispositivo
Usare la richiesta seguente per eliminare un dispositivo:
DELETE https://{your app subdomain}/api/devices/{deviceId}?api-version=2022-07-31
Elencare i dispositivi
Usare la richiesta seguente per recuperare un elenco di dispositivi dall'applicazione:
GET https://{your app subdomain}/api/devices?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "5jcwskdwbm",
"etag": "eyJoZWFkZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "Thermostat - 5jcwskdwbm",
"simulated": false,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
},
{
"id": "ccc",
"etag": "eyJoZWFkZXIiOiJcIjI0MDAwYjdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDJjMDAwMFwiIn0",
"displayName": "CheckoutThermostat",
"simulated": true,
"provisioned": true,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
}
]
}
Assegnare un manifesto della distribuzione
Se si aggiunge un dispositivo IoT Edge, è possibile usare l'API per assegnare un manifesto della distribuzione IoT Edge al dispositivo. Per altre informazioni, vedere Assegnare un manifesto di distribuzione a un dispositivo.
Usare filtri ODATA
Nella versione di anteprima dell'API (api-version=2022-10-31-preview
) è possibile usare i filtri ODATA per filtrare e ordinare i risultati restituiti dall'API dei dispositivi di elenco.
maxpagesize
Utilizzare maxpagesize per impostare le dimensioni dei risultati. La dimensione massima dei risultati restituita è 100 e la dimensione predefinita è 25.
Usare la richiesta seguente per recuperare un dispositivo top 10 dall'applicazione:
GET https://{your app subdomain}/api/devices?api-version=2022-10-31-preview&maxpagesize=10
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "5jcwskdwbm",
"etag": "eyJoZWFkZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "Thermostat - 5jcwskdwbm",
"simulated": false,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
},
{
"id": "5jcwskdgdwbm",
"etag": "eyJoZWdhhZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "RS40 Occupancy Sensor - 5jcwskdgdwbm",
"simulated": false,
"provisioned": false,
"template": "urn:modelDefinition:aqlyr1ulfku:tz5rut2pvx",
"enabled": true
},
...
],
"nextLink": "https://{your app subdomain}.azureiotcentral.com/api/devices?api-version=2022-07-31&%24top=1&%24skiptoken=%257B%2522token%2522%253A%2522%252BRID%253A%7EJWYqAOis7THQbBQAAAAAAg%253D%253D%2523RT%253A1%2523TRC%253A1%2523ISV%253A2%2523IEO%253A65551%2523QCF%253A4%2522%252C%2522range%2522%253A%257B%2522min%2522%253A%2522%2522%252C%2522max%2522%253A%252205C1D7F7591D44%2522%257D%257D"
}
La risposta include un valore nextLink che è possibile usare per recuperare la pagina successiva dei risultati.
filter
Usare il filtro per creare espressioni che filtrano l'elenco dei dispositivi. La tabella seguente illustra gli operatori di confronto che è possibile usare:
Operatore di confronto | Simbolo | Esempio |
---|---|---|
Equals | eq | id eq 'device1' and scopes eq 'redmond' |
Diverso da | ne | Enabled ne true |
Minore o uguale a | le | id le '26whl7mure6' |
Minore di | lt | id lt '26whl7mure6' |
Maggiore o uguale a | ge | id ge '26whl7mure6' |
Maggiore di | gt | id gt '26whl7mure6' |
La tabella seguente illustra gli operatori logici che è possibile usare nelle espressioni di filtro:
Operatori logici | Simbolo | Esempio |
---|---|---|
E | and | id eq 'device1' and enabled eq true |
OPPURE | or | id eq 'device1' or simulated eq false |
Attualmente, il filtro funziona con i campi del dispositivo seguenti:
FieldName | Tipo | Descrzione |
---|---|---|
id |
stringa | ID dispositivo |
displayName |
string | Nome visualizzato del dispositivo |
enabled |
boolean | Stato abilitato del dispositivo |
provisioned |
boolean | Stato di provisioning del dispositivo |
simulated |
boolean | Stato simulato del dispositivo |
template |
string | ID modello di dispositivo |
scopes |
string | ID organizzazione |
funzioni supportate dai filtri:
Attualmente, l'unica funzione di filtro supportata per gli elenchi di dispositivi è la contains
funzione :
filter=contains(displayName, 'device1')
Nell'esempio seguente viene illustrato come recuperare tutti i dispositivi in cui il nome visualizzato contiene la stringa thermostat
:
GET https://{your app subdomain}/api/deviceTemplates?api-version=2022-10-31-preview&filter=contains(displayName, 'thermostat')
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "5jcwskdwbm",
"etag": "eyJoZWFkZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "thermostat1",
"simulated": false,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
},
{
"id": "ccc",
"etag": "eyJoZWFkZXIiOiJcIjI0MDAwYjdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDJjMDAwMFwiIn0",
"displayName": "thermostat2",
"simulated": true,
"provisioned": true,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
}
]
}
orderby
Usare orderby per ordinare i risultati. Attualmente orderby consente di ordinare solo in displayName. Per impostazione predefinita, orderby ordina in ordine crescente. Usare desc per ordinare in ordine decrescente, ad esempio:
orderby=displayName
orderby=displayName desc
L'esempio seguente illustra come recuperare tutti i modelli di dispositivo in cui il risultato viene ordinato in displayName
base a :
GET https://{your app subdomain}/api/devices?api-version=2022-10-31-preview&orderby=displayName
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "ccc",
"etag": "eyJoZWFkZXIiOiJcIjI0MDAwYjdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDJjMDAwMFwiIn0",
"displayName": "CheckoutThermostat",
"simulated": true,
"provisioned": true,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
},
{
"id": "5jcwskdwbm",
"etag": "eyJoZWFkZXIiOiJcIjI0MDBlMDdjLTAwMDAtMDMwMC0wMDAwLTYxYjgxYmVlMDAwMFwiIn0",
"displayName": "Thermostat - 5jcwskdwbm",
"simulated": false,
"provisioned": false,
"template": "dtmi:contoso:Thermostat;1",
"enabled": true
}
]
}
È anche possibile combinare due o più filtri.
Nell'esempio seguente viene illustrato come recuperare i primi tre dispositivi in cui il nome visualizzato contiene la stringa Thermostat
.
GET https://{your app subdomain}/api/deviceTemplates?api-version=2022-10-31-preview&filter=contains(displayName, 'Thermostat')&maxpagesize=3
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "1fpwlahp0zp",
"displayName": "Thermostat - 1fpwlahp0zp",
"simulated": false,
"provisioned": false,
"etag": "eyJwZ0luc3RhbmNlIjoiYTRjZGQyMjQtZjIxMi00MTI4LTkyMTMtZjcwMTBlZDhkOWQ0In0=",
"template": "dtmi:contoso:mythermostattemplate;1",
"enabled": true
},
{
"id": "1yg0zvpz9un",
"displayName": "Thermostat - 1yg0zvpz9un",
"simulated": false,
"provisioned": false,
"etag": "eyJwZ0luc3RhbmNlIjoiZGQ1YTY4MDUtYzQxNS00ZTMxLTgxM2ItNTRiYjdiYWQ1MWQ2In0=",
"template": "dtmi:contoso:mythermostattemplate;1",
"enabled": true
},
{
"id": "20cp9l96znn",
"displayName": "Thermostat - 20cp9l96znn",
"simulated": false,
"provisioned": false,
"etag": "eyJwZ0luc3RhbmNlIjoiNGUzNWM4OTItNDBmZi00OTcyLWExYjUtM2I4ZjU5NGZkODBmIn0=",
"template": "dtmi:contoso:mythermostattemplate;1",
"enabled": true
}
],
"nextLink": "https://{your app subdomain}.azureiotcentral.com/api/devices?api-version=2022-10-31-preview&filter=contains%28displayName%2C+%27Thermostat%27%29&maxpagesize=3&$skiptoken=aHR0cHM6Ly9pb3RjLXByb2QtbG4taW5ma3YteWRtLnZhdWx0LmF6dXJlLm5ldC9zZWNyZXRzL2FwaS1lbmMta2V5LzY0MzZkOTY2ZWRjMjRmMDQ5YWM1NmYzMzFhYzIyZjZi%3AgWMDkfdpzBF0eYiYCGRdGQ%3D%3D%3ATVTgi5YVv%2FBfCd7Oos6ayrCIy9CaSUVu2ULktGQoHZDlaN7uPUa1OIuW0MCqT3spVXlSRQ9wgNFXsvb6mXMT3WWapcDB4QPynkI%2FE1Z8k7s3OWiBW3EQpdtit3JTCbj8qRNFkA%3D%3D%3Aq63Js0HL7OCq%2BkTQ19veqA%3D%3D"
}
Gruppi di dispositivi
È possibile creare gruppi di dispositivi in un'applicazione IoT Central per monitorare i dati aggregati, usarli con i processi e gestire l'accesso. I gruppi di dispositivi sono definiti da un filtro che seleziona i dispositivi da aggiungere al gruppo. È possibile creare gruppi di dispositivi nel portale di IoT Central o usando l'API.
Aggiungere un gruppo di dispositivi
Usare la richiesta seguente per creare un nuovo gruppo di dispositivi.
PUT https://{your app subdomain}/api/deviceGroups/{deviceGroupId}?api-version=2022-07-31
Quando si crea un gruppo di dispositivi, si definisce un filter
oggetto che seleziona i dispositivi da aggiungere al gruppo. Un filter
oggetto identifica un modello di dispositivo e tutte le proprietà da associare. Nell'esempio seguente viene creato un gruppo di dispositivi contenente tutti i dispositivi associati al modello "dtmi:modelDefinition:dtdlv2" in cui la provisioned
proprietà è true
.
{
"displayName": "Device group 1",
"description": "Custom device group.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
"organizations": [
"seattle"
]
}
Il corpo della richiesta include alcuni campi obbligatori:
@displayName
: nome visualizzato del gruppo di dispositivi.@filter
: query che definisce quali dispositivi devono trovarsi in questo gruppo.@etag
: ETag usato per evitare conflitti negli aggiornamenti del dispositivo.description
: breve riepilogo del gruppo di dispositivi.
Il campo organizations viene usato solo quando un'applicazione ha una gerarchia dell'organizzazione definita. Per altre informazioni sulle organizzazioni, vedere Gestire le organizzazioni IoT Central.
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "group1",
"displayName": "Device group 1",
"description": "Custom device group.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
"organizations": [
"seattle"
]
}
Ottenere un gruppo di dispositivi
Usare la richiesta seguente per recuperare i dettagli di un gruppo di dispositivi dall'applicazione:
GET https://{your app subdomain}/api/deviceGroups/{deviceGroupId}?api-version=2022-07-31
- deviceGroupId: ID univoco per il gruppo di dispositivi.
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "475cad48-b7ff-4a09-b51e-1a9021385453",
"displayName": "DeviceGroupEntry1",
"description": "This is a default device group containing all the devices for this particular Device Template.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
"organizations": [
"seattle"
]
}
Aggiornare un gruppo di dispositivi
PATCH https://{your app subdomain}/api/deviceGroups/{deviceGroupId}?api-version=2022-07-31
Il corpo della richiesta di esempio è simile all'esempio seguente che aggiorna l'oggetto displayName
del gruppo di dispositivi:
{
"displayName": "New group name"
}
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "group1",
"displayName": "New group name",
"description": "Custom device group.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
"organizations": [
"seattle"
]
}
Eliminare un gruppo di dispositivi
Usare la richiesta seguente per eliminare un gruppo di dispositivi:
DELETE https://{your app subdomain}/api/deviceGroups/{deviceGroupId}?api-version=2022-07-31
Elencare i gruppi di dispositivi
Usare la richiesta seguente per recuperare un elenco di gruppi di dispositivi dall'applicazione:
GET https://{your app subdomain}/api/deviceGroups?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "475cad48-b7ff-4a09-b51e-1a9021385453",
"displayName": "DeviceGroupEntry1",
"description": "This is a default device group containing all the devices for this particular Device Template.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
"organizations": [
"seattle"
]
},
{
"id": "c2d5ae1d-2cb7-4f58-bf44-5e816aba0a0e",
"displayName": "DeviceGroupEntry2",
"description": "This is a default device group containing all the devices for this particular Device Template.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:model1\"",
"organizations": [
"redmond"
]
},
{
"id": "241ad72b-32aa-4216-aabe-91b240582c8d",
"displayName": "DeviceGroupEntry3",
"description": "This is a default device group containing all the devices for this particular Device Template.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:model2\" AND $simulated = true"
},
{
"id": "group4",
"displayName": "DeviceGroupEntry4",
"description": "This is a default device group containing all the devices for this particular Device Template.",
"filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:model3\""
}
]
}
Gruppi di registrazioni
I gruppi di registrazione vengono usati per gestire le opzioni di autenticazione del dispositivo nell'applicazione IoT Central. Per altre informazioni, vedere Concetti relativi all'autenticazione dei dispositivi in IoT Central.
Per informazioni su come creare e gestire i gruppi di registrazione nell'interfaccia utente, vedere Come connettere i dispositivi con certificati X.509 all'applicazione IoT Central.
Creare un gruppo di registrazioni
Quando si crea un gruppo di registrazione per i dispositivi che usano certificati X.509, è prima necessario caricare il certificato radice o intermedio nell'applicazione IoT Central.
Generare certificati radice e dispositivo
In questa sezione vengono generati i certificati X.509 necessari per connettere un dispositivo a IoT Central.
Avviso
Questo modo di generare certificati X.509 è solo per i test. Per un ambiente di produzione è consigliabile usare il meccanismo ufficiale e sicuro per la generazione di certificati.
Passare allo script del generatore di certificati in Microsoft Azure IoT SDK per Node.js scaricato. Installare i pacchetti necessari:
cd azure-iot-sdk-node/provisioning/tools npm install
Creare un certificato radice e quindi derivare un certificato del dispositivo eseguendo lo script:
node create_test_cert.js root mytestrootcert node create_test_cert.js device sample-device-01 mytestrootcert
Suggerimento
Un ID dispositivo può contenere lettere, numeri e il carattere
-
.
Questi comandi producono la radice seguente e i certificati del dispositivo:
filename | sommario |
---|---|
mytestrootcert_cert.pem | Parte pubblica del certificato X.509 radice |
mytestrootcert_key.pem | Chiave privata per il certificato X.509 radice |
mytestrootcert_fullchain.pem | L'intero portachiavi per il certificato X.509 radice. |
mytestrootcert.pfx | File PFX per il certificato X.509 radice. |
sampleDevice01_cert.pem | Parte pubblica del certificato X.509 del dispositivo |
sampleDevice01_key.pem | Chiave privata per il certificato X.509 del dispositivo |
sampleDevice01_fullchain.pem | L'intero portachiavi per il certificato X.509 del dispositivo. |
sampleDevice01.pfx | File PFX per il certificato X.509 del dispositivo. |
Prendere nota del percorso di questi file. Sarà necessario in un secondo momento.
Generare la versione con codifica Base 64 del certificato radice
Nella cartella del computer locale che contiene i certificati generati creare un file denominato convert.js e aggiungere il contenuto JavaScript seguente:
const fs = require('fs')
const fileContents = fs.readFileSync(process.argv[2]).toString('base64');
console.log(fileContents);
Eseguire il comando seguente per generare una versione con codifica base 64 del certificato:
node convert.js mytestrootcert_cert.pem
Prendere nota della versione con codifica Base 64 del certificato. Sarà necessario in un secondo momento.
Aggiungere un gruppo di registrazione X.509
Usare la richiesta seguente per creare un nuovo gruppo di registrazione con myx509eg
come ID:
PUT https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg?api-version=2022-07-31
L'esempio seguente mostra un corpo della richiesta che aggiunge un nuovo gruppo di registrazione X.509:
{
"displayName": "My group",
"enabled": true,
"type": "iot",
"attestation": {
"type": "x509"
}
}
Il corpo della richiesta include alcuni campi obbligatori:
@displayName
: nome visualizzato del gruppo di registrazione.@enabled
: indica se i dispositivi che usano il gruppo possono connettersi a IoT Central.@type
: tipo di dispositivi che si connettono tramite il gruppo,iot
oiotEdge
.attestation
: meccanismo di attestazione per il gruppo di registrazione,symmetricKey
ox509
.
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "myEnrollmentGroupId",
"displayName": "My group",
"enabled": true,
"type": "iot",
"attestation": {
"type": "x509",
"x509": {
"signingCertificates": {}
}
},
"etag": "IjdiMDcxZWQ5LTAwMDAtMDcwMC0wMDAwLTYzMWI3MWQ4MDAwMCI="
}
Aggiungere un certificato X.509 a un gruppo di registrazione
Usare la richiesta seguente per impostare il certificato X.509 primario del gruppo di registrazione myx509eg:
PUT https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg/certificates/primary?api-version=2022-07-31
Usare questa richiesta per aggiungere un certificato X.509 primario o secondario al gruppo di registrazione.
L'esempio seguente mostra un corpo della richiesta che aggiunge un certificato X.509 a un gruppo di registrazioni:
{
"verified": false,
"certificate": "<base64-certificate>"
}
- certificate: versione base 64 del certificato annotato in precedenza.
- verificato:
true
se si attesta che il certificato è valido,false
se è necessario dimostrare la validità del certificato.
La risposta a questa richiesta è simile all'esempio seguente:
{
"verified": false,
"info": {
"sha1Thumbprint": "644543467786B60C14DFE6B7C968A1990CF63EAC"
},
"etag": "IjE3MDAwODNhLTAwMDAtMDcwMC0wMDAwLTYyNjFmNzk0MDAwMCI="
}
Generare il codice di verifica per un certificato X.509
Usare la richiesta seguente per generare un codice di verifica per il certificato X.509 primario o secondario di un gruppo di registrazione.
Se si imposta su verified
false
nella richiesta precedente, usare la richiesta seguente per generare un codice di verifica per il certificato X.509 primario nel myx509eg
gruppo di registrazioni:
POST https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg/certificates/primary/generateVerificationCode?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"verificationCode": "<certificate-verification-code>"
}
Prendere nota del codice di verifica, necessario nel passaggio successivo.
Generare il certificato di verifica
Usare il comando seguente per generare un certificato di verifica dal codice di verifica nel passaggio precedente:
node create_test_cert.js verification --ca mytestrootcert_cert.pem --key mytestrootcert_key.pem --nonce {verification-code}
Eseguire il comando seguente per generare una versione con codifica Base 64 del certificato:
node convert.js verification_cert.pem
Prendere nota della versione con codifica Base 64 del certificato. Sarà necessario in un secondo momento.
Verificare il certificato X.509 di un gruppo di registrazione
Usare la richiesta seguente per verificare il certificato X.509 primario del myx509eg
gruppo di registrazione fornendo il certificato con il codice di verifica firmato:
POST PUT https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg/certificates/primary/verify?api-version=2022-07-31
L'esempio seguente mostra un corpo della richiesta che verifica un certificato X.509:
{
"certificate": "base64-verification-certificate"
}
Ottenere il certificato X.509 di un gruppo di registrazione
Usare la richiesta seguente per recuperare i dettagli del certificato X.509 di un gruppo di registrazione dall'applicazione:
GET https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg/certificates/primary?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"verified": true,
"info": {
"sha1Thumbprint": "644543467786B60C14DFE6B7C968A1990CF63EAC"
},
"etag": "IjE3MDAwODNhLTAwMDAtMDcwMC0wMDAwLTYyNjFmNzk0MDAwMCI="
}
Eliminare un certificato X.509 da un gruppo di registrazione
Usare la richiesta seguente per eliminare il certificato X.509 primario da un gruppo di registrazioni con ID myx509eg
:
DELETE https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg/certificates/primary?api-version=2022-07-31
Ottenere un gruppo di registrazione
Usare la richiesta seguente per recuperare i dettagli di un gruppo di registrazione con mysymmetric
come ID:
GET https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/mysymmetric?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "mysymmetric",
"displayName": "My group",
"enabled": true,
"type": "iot",
"attestation": {
"type": "symmetricKey",
"symmetricKey": {
"primaryKey": "<primary-symmetric-key>",
"secondaryKey": "<secondary-symmetric-key>"
}
},
"etag": "IjA4MDUwMTJiLTAwMDAtMDcwMC0wMDAwLTYyODJhOWVjMDAwMCI="
}
Aggiornare un gruppo di registrazione
Usare la richiesta seguente per aggiornare un gruppo di registrazione.
PATCH https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg?api-version=2022-07-31
L'esempio seguente mostra un corpo della richiesta che aggiorna il nome visualizzato di un gruppo di registrazione:
{
"displayName": "My new group name",
}
La risposta a questa richiesta è simile all'esempio seguente:
{
"id": "myEnrollmentGroupId",
"displayName": "My new group name",
"enabled": true,
"type": "iot",
"attestation": {
"type": "symmetricKey",
"symmetricKey": {
"primaryKey": "<primary-symmetric-key>",
"secondaryKey": "<secondary-symmetric-key>"
}
},
"etag": "IjA4MDUwMTJiLTAwMDAtMDcwMC0wMDAwLTYyODJhOWVjMDAwMCI="
}
Eliminare un gruppo di registrazione
Usare la richiesta seguente per eliminare un gruppo di registrazione con ID myx509eg
:
DELETE https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups/myx509eg?api-version=2022-07-31
Elencare i gruppi di registrazione
Usare la richiesta seguente per recuperare un elenco di gruppi di registrazione dall'applicazione:
GET https://{your app subdomain}.azureiotcentral.com/api/enrollmentGroups?api-version=2022-07-31
La risposta a questa richiesta è simile all'esempio seguente:
{
"value": [
{
"id": "myEnrollmentGroupId",
"displayName": "My group",
"enabled": true,
"type": "iot",
"attestation": {
"type": "symmetricKey",
"symmetricKey": {
"primaryKey": "primaryKey",
"secondaryKey": "secondarykey"
}
},
"etag": "IjZkMDc1YTgzLTAwMDAtMDcwMC0wMDAwLTYzMTc5ZjA4MDAwMCI="
},
{
"id": "enrollmentGroupId2",
"displayName": "My group",
"enabled": true,
"type": "iot",
"attestation": {
"type": "x509",
"x509": {
"signingCertificates": {}
}
},
"etag": "IjZkMDdjNjkyLTAwMDAtMDcwMC0wMDAwLTYzMTdhMDY1MDAwMCI="
}
]
}