Использование REST API IoT Central для управления организациями

REST API IoT Central позволяет разрабатывать клиентские приложения, которые интегрируются с приложениями IoT Central. Rest API можно использовать для управления организациями в приложении IoT Central.

Каждому вызову REST API IoT Central требуется заголовок авторизации. Дополнительные сведения см. в разделе Аутентификация и авторизация вызовов REST API IoT Central.

Справочную документацию по REST API IoT Central см. в справочнике по REST API Azure IoT Central.

Дополнительные сведения о организациях в приложении IoT Central см. в статье "Управление организациями IoT Central".

Совет

С помощью Postman можно попробовать вызовы REST API, описанные в этой статье. Скачайте коллекцию Postman IoT Central и импортируйте ее в Postman. В коллекции необходимо задать переменные, такие как поддомен приложения и маркер администратора.

REST API организаций

С помощью REST API IoT Central вы можете:

  • Добавление организации в приложение
  • Получение организации по идентификатору
  • Обновление организации в приложении
  • Получение списка организаций в приложении
  • Удаление организации в приложении

Создание организаций

REST API позволяет создавать организации в приложении IoT Central. Используйте следующий запрос, чтобы создать организацию в приложении:

PUT https://{your app subdomain}.azureiotcentral.com/api/organizations/{organizationId}?api-version=2022-07-31
  • organizationId — уникальный идентификатор организации

В следующем примере показан текст запроса, который добавляет организацию в приложение IoT Central.

{
  "displayName": "Seattle",
}

Текст запроса содержит некоторые обязательные поля:

  • @displayName: отображаемое имя организации.

Текст запроса содержит некоторые необязательные поля:

  • @parent: идентификатор родительского элемента организации.

Если родитель не указан, организация получает организацию верхнего уровня по умолчанию в качестве родительской.

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
  "id": "seattle",
  "displayName": "Seattle"
}

Вы можете создать организацию с иерархией, например создать организацию продаж с родительской организацией.

В следующем примере показан текст запроса, который добавляет организацию в приложение IoT Central.

{
  "displayName": "Sales",
  "parent":"seattle"
}

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
  "id": "sales",
  "displayName": "Sales",
  "parent":"Seattle"
}

Добавление организации

Используйте следующий запрос для получения сведений об отдельной организации из приложения:

GET https://{your app subdomain}.azureiotcentral.com/api/organizations/{organizationId}?api-version=2022-07-31

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
  "id": "seattle",
  "displayName": "Seattle",
  "parent": "washington"
}

Обновление организации

Используйте следующий запрос, чтобы обновить сведения о организации в приложении:

PATCH https://{your app subdomain}.azureiotcentral.com/api/organizations/{organizationId}?api-version=2022-07-31

В следующем примере показан текст запроса, обновляющий родительский элемент организации:

{
  "parent": "washington"
}

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
  "id": "seattle",
  "displayName": "Seattle Sales",
  "parent": "washington"
}

Список организаций

Используйте следующий запрос, чтобы получить список организаций из приложения:

GET https://{your app subdomain}.azureiotcentral.com/api/organizations?api-version=2022-07-31

Ответ на этот запрос выглядит, как показано в примере ниже.

{
    "value": [
        {
            "id": "washington",
            "displayName": "Washington"
        },
        {
            "id": "redmond",
            "displayName": "Redmond"
        },
        {
            "id": "bellevue",
            "displayName": "Bellevue"
        },
        {
            "id": "spokane",
            "displayName": "Spokane",
            "parent": "washington"
        },
        {
            "id": "seattle",
            "displayName": "Seattle",
            "parent": "washington"
        }
    ]
}

Организации Вашингтон, Редмонд и Белвью автоматически имеют организацию верхнего уровня приложения по умолчанию в качестве родителя.

Удаление организации

Используйте следующий запрос для удаления организации:

DELETE https://{your app subdomain}.azureiotcentral.com/api/organizations/{organizationId}?api-version=2022-07-31

Использование организаций

Используйте организации для управления доступом к ресурсам в приложении.

Управление ролями

REST API позволяет вывести список ролей, определенных в приложении IoT Central. Используйте следующий запрос, чтобы получить список идентификаторов ролей приложения и ролей организации из приложения. Дополнительные сведения см. в статье "Управление организациями IoT Central"

GET https://{your app subdomain}.azureiotcentral.com/api/roles?api-version=2022-07-31

Ответ на этот запрос выглядит так, как показано в следующем примере, включающее идентификаторы роли приложения и организации.

{
    "value": [
        {
            "id": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4",
            "displayName": "Administrator"
        },
        {
            "id": "ae2c9854-393b-4f97-8c42-479d70ce626e",
            "displayName": "Operator"
        },
        {
            "id": "344138e9-8de4-4497-8c54-5237e96d6aaf",
            "displayName": "Builder"
        },
        {
            "id": "c495eb57-eb18-489e-9802-62c474e5645c",
            "displayName": "Org Admin"
        },
        {
            "id": "b4935647-30e4-4ed3-9074-dcac66c2f8ef",
            "displayName": "Org Operator"
        },
        {
            "id": "84cc62c1-dabe-49d3-b16e-8b291232b285",
            "displayName": "Org Viewer"
        }
    ]
}

Создание маркера API, присоединенного к узлу в иерархии организации

Используйте следующий запрос, чтобы создать маркер API, подключенный к узлу в иерархии организации в приложении:

PUT https://{your app subdomain}.azureiotcentral.com/api/apiTokens/{tokenId}?api-version=2022-07-31
  • tokenId — уникальный идентификатор маркера

В следующем примере показан текст запроса, создающий маркер API для организации сиэтла в приложении IoT Central.

{
    "roles": [
        {
            "role": "84cc62c1-dabe-49d3-b16e-8b291232b285",
            "organization": "seattle"
        }
    ]
}

Текст запроса содержит некоторые обязательные поля:

Имя Описание
роль Идентификатор одной из ролей организации
организация Идентификатор организации

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
    "id": "token1",
    "roles": [
        {
            "role": "84cc62c1-dabe-49d3-b16e-8b291232b285",
            "organization": "seattle"
        }
    ],
    "expiry": "2023-07-07T17:05:08.407Z",
    "token": "SharedAccessSignature sr=8a0617**********************4c0d71c&sig=3RyX69G4%2FBZZnG0LXOjQv*************e8s%3D&skn=token1&se=1688749508407"
}

Связывание пользователя с узлом в иерархии организации

Используйте следующий запрос, чтобы создать и связать пользователя с узлом в иерархии организации в приложении. Идентификатор и адрес электронной почты должны быть уникальными в приложении:

PUT https://{your app subdomain}.azureiotcentral.com/api/users/user-001?api-version=2022-07-31

В следующем тексте role запроса идентификатор одной из ролей организации и organization является идентификатором организации.

{
  "id": "user-001",
  "type": "email",
    "roles": [
        {
            "role": "84cc62c1-dabe-49d3-b16e-8b291232b285",
            "organization": "seattle"
        }
    ],
    "email": "user5@contoso.com"

}

Ответ на этот запрос выглядит, как показано в примере ниже. Значение роли указывает, с какой ролью связан пользователь:

{
    "id": "user-001",
    "type": "email",
    "roles": [
        {
            "role": "84cc62c1-dabe-49d3-b16e-8b291232b285",
            "organization": "seattle"
        }
    ],
    "email": "user5@contoso.com"
}

Добавление и связывание устройства с организацией

Используйте следующий запрос для связывания нового устройства с организацией

PUT https://{your app subdomain}.azureiotcentral.com/api/devices/{deviceId}?api-version=2022-07-31

В следующем примере показан текст запроса, добавляющий устройство для шаблона устройства. Сведения можно получить template на странице шаблонов устройств в пользовательском интерфейсе приложения IoT Central.

{
    "displayName": "CheckoutThermostat",
    "template": "dtmi:contoso:Thermostat;1",
    "simulated": true,
    "enabled": true,
    "organizations": [
        "seattle"
    ]
}

Текст запроса содержит некоторые обязательные поля:

  • @displayName: отображаемое имя устройства.
  • @enabled: объявляет, что этот объект является интерфейсом.
  • @etag: ETag, используемый для предотвращения конфликтов в обновлениях устройства.
  • simulated: имитируется ли устройство?
  • template : определение шаблона устройства для устройства.
  • organizations : список идентификаторов организации, в которые входит устройство. В настоящее время можно связать устройство только с одной организацией.

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
    "id": "thermostat1",
    "etag": "eyJoZWFkZXIiOiJcIjI0MDAwYTdkLTAwMDAtMDMwMC0wMDAwLTYxYjgxZDIwMDAwMFwiIiwiZGF0YSI6IlwiMzMwMDQ1M2EtMDAwMC0wMzAwLTAwMDAtNjFiODFkMjAwMDAwXCIifQ",
    "displayName": "CheckoutThermostat",
    "simulated": true,
    "provisioned": false,
    "template": "dtmi:contoso:Thermostat;1",
    "enabled": true,
   "organizations": [
    "seattle"
  ]

}

Добавление и связывание группы устройств с организацией

Используйте следующий запрос, чтобы создать и связать новую группу устройств с организацией.

PUT https://{your app subdomain}.azureiotcentral.com/api/deviceGroups/{deviceGroupId}?api-version=2022-07-31

При создании группы устройств определяется filter , который выбирает устройства для добавления в группу. Идентифицирует filter шаблон устройства и соответствующие свойства. В следующем примере создается группа устройств, содержащая все устройства, связанные с шаблоном dtmi:modelDefinition:dtdlv2 , где provisioned свойство имеет значение true.

{
  "displayName": "Device group 1",
  "description": "Custom device group.",
  "filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
  "organizations": [
    "seattle"
  ]
}

Текст запроса содержит некоторые обязательные поля:

  • @displayName: отображаемое имя группы устройств.
  • @filter: запрос, определяющий, какие устройства должны находиться в этой группе.
  • description: краткая сводка по группе устройств.
  • organizations : список идентификаторов организации, в которые входит устройство. В настоящее время можно связать устройство только с одной организацией.

Ответ на этот запрос выглядит так, как показано в следующем примере.

{
  "id": "group1",
  "displayName": "Device group 1",
  "description": "Custom device group.",
  "filter": "SELECT * FROM devices WHERE $template = \"dtmi:modelDefinition:dtdlv2\" AND $provisioned = true",
  "organizations": [
    "seattle"
  ]
}

Следующие шаги

Теперь, когда вы узнали, как управлять организациями с помощью REST API, предлагаемым шагом является использование REST API IoT Central для управления экспортом данных.