swagger: "2.0"
schemes:
  - https
host: azure.local
basePath: /api/preview
info:
  description: Azure IoT Central is a service that makes it easy to connect, monitor, and manage your IoT devices at scale.
  title: Azure IoT Central
  version: preview
  x-apisguru-categories:
    - cloud
  x-logo:
    url: https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png
  x-origin:
    - format: swagger
      url: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/iotcentral/data-plane/Microsoft.IoTCentral/preview/2019-10-28-preview/iotcentral.json
      version: "2.0"
  x-preferred: false
  x-providerName: azure.com
  x-serviceName: iotcentral
  x-tags:
    - Azure
    - Microsoft
consumes:
  - application/json
produces:
  - application/json
securityDefinitions:
  azure_auth:
    authorizationUrl: https://login.microsoftonline.com/common/oauth2/authorize
    description: Azure Active Directory OAuth2 Flow
    flow: implicit
    scopes:
      user_impersonation: impersonate your user account
    type: oauth2
parameters:
  CentralDnsSuffixInPath:
    default: azureiotcentral.com
    description: The DNS suffix used as the base for all Azure IoT Central service requests.
    in: path
    name: centralDnsSuffixInPath
    required: true
    type: string
    x-ms-parameter-location: client
    x-ms-skip-url-encoding: true
  ComponentName:
    description: Name of the device component.
    in: path
    name: component_name
    required: true
    type: string
    x-ms-parameter-location: method
  DeviceId:
    description: Unique ID of the device.
    in: path
    name: device_id
    required: true
    type: string
    x-ms-parameter-location: method
  DeviceTemplateId:
    description: Unique ID of the device template.
    in: path
    name: device_template_id
    required: true
    type: string
    x-ms-parameter-location: method
  Subdomain:
    description: Application subdomain.
    in: path
    name: subdomain
    required: true
    type: string
    x-ms-parameter-location: client
paths:
  /apiTokens:
    get:
      operationId: ApiTokens_List
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ApiTokenCollection"
      summary: Get the list of API tokens in an application.
      x-ms-examples:
        List API tokens:
          description: Get a list of API tokens in your application.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - expiry: 2020-10-18T18:30:40.227Z
                    id: testtoken
                    roles:
                      - ca310b8d-2f4a-44e0-a36e-957c202cd8d4
          title: List API tokens in your application
      x-ms-pageable:
        nextLinkName: null
  "/apiTokens/{token_id}":
    delete:
      operationId: ApiTokens_Remove
      parameters:
        - description: Unique ID for the API token.
          in: path
          name: token_id
          required: true
          type: string
      responses:
        "204":
          description: Success
      summary: Delete an API token.
      x-ms-examples:
        Delete API token:
          description: Delete an API token using its name.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
            token_id: testtoken
          responses:
            "204": {}
          title: Delete API token
    get:
      operationId: ApiTokens_Get
      parameters:
        - description: Unique ID for the API token.
          in: path
          name: token_id
          required: true
          type: string
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ApiToken"
      summary: Get an API token by ID.
      x-ms-examples:
        Get API token by ID:
          description: Get a list of API tokens in your application.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
            token_id: testtoken
          responses:
            "200":
              body:
                expiry: 2020-10-18T18:30:40.227Z
                id: testtoken
                roles:
                  - ca310b8d-2f4a-44e0-a36e-957c202cd8d4
          title: Get API tokens in your application
    put:
      operationId: ApiTokens_Set
      parameters:
        - description: Unique ID for the API token.
          in: path
          name: token_id
          required: true
          type: string
        - description: API token body.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ApiToken"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ApiToken"
      summary: Create a new API token in the application.
      x-ms-examples:
        Create API token:
          description: Get a list of API tokens in your application.
          parameters:
            body:
              roles:
                - c7be2c6b-797e-4551-bb24-33709f6b2e20
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
            token_id: testtoken
          responses:
            "200":
              body:
                expiry: 2020-10-18T18:30:40.227Z
                id: testtoken
                roles:
                  - ca310b8d-2f4a-44e0-a36e-957c202cd8d4
                token: SharedAccessSignature sr=...
          title: Get API tokens in your application
  /continuousDataExports:
    get:
      operationId: ContinuousDataExports_List
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ContinuousDataExportCollection"
      summary: Get the list of continuous data exports in an application.
      x-ms-examples:
        List exports:
          description: Get a list of all exports in your application
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - displayName: Export to Storage 1
                    enabled: true
                    endpoint:
                      connectionString: DefaultEndpointsProtocol=https;AccountName=jeffscratchppe;AccountKey=*****;EndpointSuffix=core.windows.net
                      name: cde
                      type: StorageEndpoint
                    etag: 076f201d-e9c3-4bef-af0a-608420ba4526
                    id: 16cad42a-bd47-4684-b106-9f9b4d2d02e9
                    sources:
                      - devices
                      - deviceTemplates
                      - telemetry
                    status: starting
                  - displayName: Export to Event Hubs 1
                    enabled: false
                    endpoint:
                      connectionString: Endpoint=sb://roommonitoring.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=*****
                      name: roommonitoring-ehout
                      type: EventHubsEndpoint
                    etag: 3398c6b5-de40-44ad-bf4a-0c216e2b4d88
                    id: 9dce0282-751d-4121-aed3-b316d658f17a
                    sources:
                      - devices
                      - deviceTemplates
                      - telemetry
                    status: stopping
          title: List exports
      x-ms-pageable:
        nextLinkName: nextLink
  "/continuousDataExports/{export_id}":
    delete:
      operationId: ContinuousDataExports_Remove
      parameters:
        - description: Unique ID for the continuous data export.
          in: path
          name: export_id
          required: true
          type: string
      responses:
        "204":
          description: Success
      summary: Delete a continuous data export.
      x-ms-examples:
        Delete export:
          description: Delete an export using its Id.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            export_id: abc
            subdomain: appsubdomain
          responses:
            "204": {}
          title: Delete export
    get:
      operationId: ContinuousDataExports_Get
      parameters:
        - description: Unique ID for the continuous data export.
          in: path
          name: export_id
          required: true
          type: string
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ContinuousDataExport"
      summary: Get a continuous data export by ID.
      x-ms-examples:
        Get export:
          description: Get an export using its Id.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            export_id: 16cad42a-bd47-4684-b106-9f9b4d2d02e9
            subdomain: appsubdomain
          responses:
            "200":
              body:
                displayName: Export to Storage 1
                enabled: true
                endpoint:
                  connectionString: DefaultEndpointsProtocol=https;AccountName=jeffscratchppe;AccountKey=*****;EndpointSuffix=core.windows.net
                  name: cde
                  type: StorageEndpoint
                etag: 076f201d-e9c3-4bef-af0a-608420ba4526
                id: 16cad42a-bd47-4684-b106-9f9b4d2d02e9
                sources:
                  - devices
                  - deviceTemplates
                  - telemetry
                status: running
          title: Get export
    put:
      operationId: ContinuousDataExports_Set
      parameters:
        - description: Unique ID for the continuous data export.
          in: path
          name: export_id
          required: true
          type: string
        - description: Data export body.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ContinuousDataExport"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/ContinuousDataExport"
      summary: Create a new continuous data export or update an existing one by ID.
      x-ms-examples:
        Create or update export:
          description: Create a new export or update an existing export, specifying its Id.
          parameters:
            body:
              displayName: Export to Storage 2
              enabled: true
              endpoint:
                connectionString: "{Connection-string-to-blob-storage}"
                name: container
                type: StorageEndpoint
              sources:
                - devices
                - deviceTemplates
                - telemetry
            centralDnsSuffixInPath: azureiotcentral.com
            export_id: abc
            subdomain: appsubdomain
          responses:
            "200":
              body:
                displayName: Export to Storage 2
                enabled: true
                endpoint:
                  connectionString: DefaultEndpointsProtocol=https;AccountName=contosoiotcstorage;AccountKey=*****;EndpointSuffix=core.windows.net
                  name: container
                  type: StorageEndpoint
                etag: 7e02c03e-25cb-4d1c-9f6b-019506283872
                id: abc
                sources:
                  - devices
                  - deviceTemplates
                  - telemetry
                status: starting
          title: Create or update export
  /deviceTemplates:
    get:
      operationId: DeviceTemplates_List
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceTemplateCollection"
      summary: Get the list of device templates in an application
      x-ms-examples:
        List device templates:
          description: List device templates that are currently published in the application. This operation does not return device templates in draft state.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - capabilityModel:
                      "@context":
                        - http://azureiot.com/v1/contexts/IoTModel.json
                      "@id": urn:rigado:RS40_Occupancy_Sensor:1
                      "@type":
                        - CapabilityModel
                      contents: []
                      displayName: RS40 Occupancy Sensor
                      implements:
                        - "@id": urn:rigado:RS40_Occupancy_Sensor:Device_information_RS40_Occupancy_Sensor:1
                          "@type":
                            - InterfaceInstance
                          name: Device_information_RS40_Occupancy_Sensor
                          schema:
                            "@id": urn:azureiot:DeviceManagement:DeviceInformation:1
                            "@type":
                              - Interface
                            contents:
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:manufacturer:1
                                "@type":
                                  - Property
                                description: Company name of the device manufacturer. This could be the same as the name of the original equipment manufacturer (OEM). Ex. Contoso.
                                displayName: Manufacturer
                                name: manufacturer
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:model:1
                                "@type":
                                  - Property
                                description: Device model name or ID. Ex. Surface Book 2.
                                displayName: Device model
                                name: model
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:swVersion:1
                                "@type":
                                  - Property
                                description: Version of the software on your device. This could be the version of your firmware. Ex. 1.3.45
                                displayName: Software version
                                name: swVersion
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:osName:1
                                "@type":
                                  - Property
                                description: Name of the operating system on the device. Ex. Windows 10 IoT Core.
                                displayName: Operating system name
                                name: osName
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorArchitecture:1
                                "@type":
                                  - Property
                                description: Architecture of the processor on the device. Ex. x64 or ARM.
                                displayName: Processor architecture
                                name: processorArchitecture
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorManufacturer:1
                                "@type":
                                  - Property
                                description: Name of the manufacturer of the processor on the device. Ex. Intel.
                                displayName: Processor manufacturer
                                name: processorManufacturer
                                schema: string
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalStorage:1
                                "@type":
                                  - Property
                                description: Total available storage on the device in kilobytes. Ex. 2048000 kilobytes.
                                displayName: Total storage
                                displayUnit: kilobytes
                                name: totalStorage
                                schema: long
                              - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalMemory:1
                                "@type":
                                  - Property
                                description: Total available memory on the device in kilobytes. Ex. 256000 kilobytes.
                                displayName: Total memory
                                displayUnit: kilobytes
                                name: totalMemory
                                schema: long
                            displayName: Device Information
                        - "@id": urn:rigado:RS40_Occupancy_Sensor:RS40_Occupancy_Sensor:1
                          "@type":
                            - InterfaceInstance
                          name: RS40_Occupancy_Sensor
                          schema:
                            "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:1
                            "@type":
                              - Interface
                            contents:
                              - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:count:1
                                "@type":
                                  - Telemetry
                                comment: ""
                                description: Count of motion events seen in the previous interval
                                displayName: count
                                name: count
                                schema: integer
                              - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:state:1
                                "@type":
                                  - Telemetry
                                description: Occupancy State
                                displayName: state
                                name: state
                                schema: boolean
                            displayName: Interface
                    displayName: RS40 Occupancy Sensor
                    id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    solutionModel:
                      "@id": urn:sbk9sd6sl:modelDefinition:rxyaituqzz
                      "@type":
                        - SolutionModel
                      cloudProperties: []
                      initialValues: []
                      overrides: []
                    types:
                      - DeviceModel
          title: List device templates
      x-ms-pageable:
        nextLinkName: nextLink
  "/deviceTemplates/{device_template_id}":
    delete:
      description: Delete an existing device template by device ID.
      operationId: DeviceTemplates_Remove
      parameters:
        - $ref: "#/parameters/DeviceTemplateId"
      responses:
        "204":
          description: Success
      summary: Delete a device template
      x-ms-examples:
        Delete a device template by Id:
          description: Delete a published device template that has no devices currently associated to it. This operation does not operate on device templates in draft state.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_template_id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
            subdomain: appsubdomain
          responses:
            "204": {}
          title: Delete a device template by Id
    get:
      operationId: DeviceTemplates_Get
      parameters:
        - $ref: "#/parameters/DeviceTemplateId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceTemplate"
      summary: Get a device template by ID
      x-ms-examples:
        Get a device template by Id:
          description: Get a published device template by Id. This operation does not return device templates in draft state.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_template_id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
            subdomain: appsubdomain
          responses:
            "200":
              body:
                capabilityModel:
                  "@context":
                    - http://azureiot.com/v1/contexts/IoTModel.json
                  "@id": urn:rigado:RS40_Occupancy_Sensor:1
                  "@type":
                    - CapabilityModel
                  contents: []
                  displayName: RS40 Occupancy Sensor
                  implements:
                    - "@id": urn:rigado:RS40_Occupancy_Sensor:Device_information_RS40_Occupancy_Sensor:1
                      "@type":
                        - InterfaceInstance
                      name: Device_information_RS40_Occupancy_Sensor
                      schema:
                        "@id": urn:azureiot:DeviceManagement:DeviceInformation:1
                        "@type":
                          - Interface
                        contents:
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:manufacturer:1
                            "@type":
                              - Property
                            description: Company name of the device manufacturer. This could be the same as the name of the original equipment manufacturer (OEM). Ex. Contoso.
                            displayName: Manufacturer
                            name: manufacturer
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:model:1
                            "@type":
                              - Property
                            description: Device model name or ID. Ex. Surface Book 2.
                            displayName: Device model
                            name: model
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:swVersion:1
                            "@type":
                              - Property
                            description: Version of the software on your device. This could be the version of your firmware. Ex. 1.3.45
                            displayName: Software version
                            name: swVersion
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:osName:1
                            "@type":
                              - Property
                            description: Name of the operating system on the device. Ex. Windows 10 IoT Core.
                            displayName: Operating system name
                            name: osName
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorArchitecture:1
                            "@type":
                              - Property
                            description: Architecture of the processor on the device. Ex. x64 or ARM.
                            displayName: Processor architecture
                            name: processorArchitecture
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorManufacturer:1
                            "@type":
                              - Property
                            description: Name of the manufacturer of the processor on the device. Ex. Intel.
                            displayName: Processor manufacturer
                            name: processorManufacturer
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalStorage:1
                            "@type":
                              - Property
                            description: Total available storage on the device in kilobytes. Ex. 2048000 kilobytes.
                            displayName: Total storage
                            displayUnit: kilobytes
                            name: totalStorage
                            schema: long
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalMemory:1
                            "@type":
                              - Property
                            description: Total available memory on the device in kilobytes. Ex. 256000 kilobytes.
                            displayName: Total memory
                            displayUnit: kilobytes
                            name: totalMemory
                            schema: long
                        displayName: Device Information
                    - "@id": urn:rigado:RS40_Occupancy_Sensor:RS40_Occupancy_Sensor:1
                      "@type":
                        - InterfaceInstance
                      name: RS40_Occupancy_Sensor
                      schema:
                        "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:1
                        "@type":
                          - Interface
                        contents:
                          - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:count:1
                            "@type":
                              - Telemetry
                            comment: ""
                            description: Count of motion events seen in the previous interval
                            displayName: count
                            name: count
                            schema: integer
                          - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:state:1
                            "@type":
                              - Telemetry
                            description: Occupancy State
                            displayName: state
                            name: state
                            schema: boolean
                        displayName: Interface
                displayName: RS40 Occupancy Sensor
                id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                solutionModel:
                  "@id": urn:sbk9sd6sl:modelDefinition:rxyaituqzz
                  "@type":
                    - SolutionModel
                  cloudProperties: []
                  initialValues: []
                  overrides: []
                types:
                  - DeviceModel
          title: Get a device template by Id
    put:
      operationId: DeviceTemplates_Set
      parameters:
        - $ref: "#/parameters/DeviceTemplateId"
        - description: Device template body.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeviceTemplate"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceTemplate"
      summary: Create or update a device template by ID
      x-ms-examples:
        Create a device template:
          description: Creates and publishes a device template. In the body, specify the full device template object.
          parameters:
            body:
              capabilityModel:
                "@context":
                  - http://azureiot.com/v1/contexts/IoTModel.json
                "@id": urn:storeAnalyticsCheckoutPnp:capabilityModel:1
                "@type":
                  - CapabilityModel
                contents: []
                displayName: Motion detector
                implements:
                  - "@id": urn:storeAnalyticsCheckoutPnp:capabilityModel:fyy5xn_y:1
                    "@type":
                      - InterfaceInstance
                    displayName: Interface
                    name: Interface
                    schema:
                      "@id": urn:storeAnalyticsCheckoutPnp:Interface:1
                      "@type":
                        - Interface
                      contents:
                        - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Temperature:1
                          "@type":
                            - Telemetry
                            - SemanticType/Temperature
                          displayName: Temperature
                          name: Temperature
                          schema: double
                          unit: Units/Temperature/celsius
                        - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Humidity:1
                          "@type":
                            - Telemetry
                            - SemanticType/Humidity
                          displayName: Humidity
                          name: Humidity
                          schema: double
                          unit: Units/Humidity/percent
                        - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Occupancy:1
                          "@type":
                            - Telemetry
                          displayName: Occupancy
                          name: Occupancy
                          schema: double
                      displayName: Interface
              displayName: Environment sensor 1
              solutionModel:
                "@id": urn:1dsfbt7i:modelDefinition:zadjfmgvh
                "@type":
                  - SolutionModel
                cloudProperties:
                  - "@id": urn:1dsfbt7i:modelDefinition:AssetId
                    "@type":
                      - CloudProperty
                    displayName: Asset Id
                    name: AssetId
                    schema: string
                    valueDetail:
                      "@id": urn:1dsfbt7i:modelDefinition:AssetId:valueDetail
                      "@type":
                        - ValueDetail/StringValueDetail
                initialValues: []
                overrides:
                  - "@id": urn:1dsfbt7i:modelDefinition:1qehkys5
                    "@type":
                      - Override
                    capability:
                      "@type":
                        - CapabilityReference
                      component: urn:storeAnalyticsCheckoutPnp:capabilityModel:fyy5xn_y:1
                      reference: urn:storeAnalyticsCheckoutPnp:Interface:Occupancy:1
                    valueDetail:
                      "@type":
                        - ValueDetail/NumberValueDetail
                      maxValue:
                        "@value": "50"
                      minValue:
                        "@value": "0"
              types:
                - DeviceModel
            centralDnsSuffixInPath: azureiotcentral.com
            device_template_id: environmentstemplateid
            subdomain: appsubdomain
          responses:
            "200":
              body:
                capabilityModel:
                  "@context":
                    - http://azureiot.com/v1/contexts/IoTModel.json
                  "@id": urn:storeAnalyticsCheckoutPnp:capabilityModel:1
                  "@type":
                    - CapabilityModel
                  contents: []
                  displayName: Motion detector
                  implements:
                    - "@id": urn:storeAnalyticsCheckoutPnp:capabilityModel:fyy5xn_y:1
                      "@type":
                        - InterfaceInstance
                      displayName: Interface
                      name: Interface
                      schema:
                        "@id": urn:storeAnalyticsCheckoutPnp:Interface:1
                        "@type":
                          - Interface
                        contents:
                          - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Temperature:1
                            "@type":
                              - Telemetry
                              - SemanticType/Temperature
                            displayName: Temperature
                            name: Temperature
                            schema: double
                            unit: Units/Temperature/celsius
                          - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Humidity:1
                            "@type":
                              - Telemetry
                              - SemanticType/Humidity
                            displayName: Humidity
                            name: Humidity
                            schema: double
                            unit: Units/Humidity/percent
                          - "@id": urn:storeAnalyticsCheckoutPnp:Interface:Occupancy:1
                            "@type":
                              - Telemetry
                            displayName: Occupancy
                            name: Occupancy
                            schema: double
                        displayName: Interface
                displayName: Environment sensor 1
                id: environmentstemplateid
                solutionModel:
                  "@id": urn:1dsfbt7i:modelDefinition:zadjfmgvh
                  "@type":
                    - SolutionModel
                  cloudProperties:
                    - "@id": urn:1dsfbt7i:modelDefinition:AssetId
                      "@type":
                        - CloudProperty
                      displayName: Asset Id
                      name: AssetId
                      schema: string
                      valueDetail:
                        "@id": urn:1dsfbt7i:modelDefinition:AssetId:valueDetail
                        "@type":
                          - ValueDetail/StringValueDetail
                  initialValues: []
                  overrides:
                    - "@id": urn:1dsfbt7i:modelDefinition:1qehkys5
                      "@type":
                        - Override
                      capability:
                        "@id": urn:1dsfbt7i:modelDefinition:1qehkys5:6wq2v5i7j
                        "@type":
                          - CapabilityReference
                        component: urn:storeAnalyticsCheckoutPnp:capabilityModel:fyy5xn_y:1
                        reference: urn:storeAnalyticsCheckoutPnp:Interface:Occupancy:1
                      valueDetail:
                        "@id": urn:1dsfbt7i:modelDefinition:1qehkys5:_covclwk_
                        "@type":
                          - ValueDetail/NumberValueDetail
                        maxValue:
                          "@value": "50"
                        minValue:
                          "@value": "0"
                types:
                  - DeviceModel
          title: Create a device template
  "/deviceTemplates/{device_template_id}/devices":
    get:
      operationId: DeviceTemplates_ListDevices
      parameters:
        - $ref: "#/parameters/DeviceTemplateId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCollection"
      summary: Get devices for a template
      x-ms-examples:
        List devices associated to a device template:
          description: List all devices associated to a device template.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_template_id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - approved: true
                    displayName: Checkout1
                    etag: eyJoZWFkZXIiOiJcIjAyMDA4ZDMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout1
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
                  - approved: true
                    displayName: Checkout2
                    etag: eyJoZWFkZXIiOiJcIjAyMDA5MDMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout2
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
                  - approved: true
                    displayName: Checkout3
                    etag: eyJoZWFkZXIiOiJcIjAyMDA4ZTMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout3
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
          title: List devices associated to a device template.
      x-ms-pageable:
        nextLinkName: nextLink
  "/deviceTemplates/{device_template_id}/merged":
    get:
      operationId: DeviceTemplates_GetMerged
      parameters:
        - $ref: "#/parameters/DeviceTemplateId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceTemplate"
      summary: Get a merged device template by ID
      x-ms-examples:
        Get a merged device template by Id:
          description: Get a single merged view of a device template by Id. The merged view of a device template contains the overrides and initial values from the solutionModel merged into the capabilityModel. This operation does not return device templates in draft state.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_template_id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
            subdomain: appsubdomain
          responses:
            "200":
              body:
                capabilityModel:
                  "@id": urn:rigado:RS40_Occupancy_Sensor:1
                  "@type":
                    - CapabilityModel
                  displayName: RS40 Occupancy Sensor
                  implements:
                    - "@id": urn:rigado:RS40_Occupancy_Sensor:Device_information_RS40_Occupancy_Sensor:1
                      "@type":
                        - InterfaceInstance
                      name: Device_information_RS40_Occupancy_Sensor
                      schema:
                        "@id": urn:azureiot:DeviceManagement:DeviceInformation:1
                        "@type":
                          - Interface
                        contents:
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:manufacturer:1
                            "@type":
                              - Property
                            description: Company name of the device manufacturer. This could be the same as the name of the original equipment manufacturer (OEM). Ex. Contoso.
                            displayName: Manufacturer
                            name: manufacturer
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:model:1
                            "@type":
                              - Property
                            description: Device model name or ID. Ex. Surface Book 2.
                            displayName: Device model
                            name: model
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:swVersion:1
                            "@type":
                              - Property
                            description: Version of the software on your device. This could be the version of your firmware. Ex. 1.3.45
                            displayName: Software version
                            name: swVersion
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:osName:1
                            "@type":
                              - Property
                            description: Name of the operating system on the device. Ex. Windows 10 IoT Core.
                            displayName: Operating system name
                            name: osName
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorArchitecture:1
                            "@type":
                              - Property
                            description: Architecture of the processor on the device. Ex. x64 or ARM.
                            displayName: Processor architecture
                            name: processorArchitecture
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:processorManufacturer:1
                            "@type":
                              - Property
                            description: Name of the manufacturer of the processor on the device. Ex. Intel.
                            displayName: Processor manufacturer
                            name: processorManufacturer
                            schema: string
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalStorage:1
                            "@type":
                              - Property
                            description: Total available storage on the device in kilobytes. Ex. 2048000 kilobytes.
                            displayName: Total storage
                            displayUnit: kilobytes
                            name: totalStorage
                            schema: long
                          - "@id": urn:azureiot:DeviceManagement:DeviceInformation:totalMemory:1
                            "@type":
                              - Property
                            description: Total available memory on the device in kilobytes. Ex. 256000 kilobytes.
                            displayName: Total memory
                            displayUnit: kilobytes
                            name: totalMemory
                            schema: long
                        displayName: Device Information
                    - "@id": urn:rigado:RS40_Occupancy_Sensor:RS40_Occupancy_Sensor:1
                      "@type":
                        - InterfaceInstance
                      name: RS40_Occupancy_Sensor
                      schema:
                        "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:1
                        "@type":
                          - Interface
                        contents:
                          - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:count:1
                            "@type":
                              - Telemetry
                            comment: ""
                            description: Count of motion events seen in the previous interval
                            displayName: count
                            name: count
                            schema: integer
                          - "@id": urn:rigado:interfaces:RS40_Occupancy_Sensor:state:1
                            "@type":
                              - Telemetry
                            description: Occupancy State
                            displayName: state
                            name: state
                            schema: boolean
                        displayName: Interface
                displayName: RS40 Occupancy Sensor
                etag: '"1800bfd5-0000-0d00-0000-5d96df080000"'
                id: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                solutionModel:
                  "@id": urn:sbk9sd6sl:modelDefinition:rxyaituqzz
                  "@type":
                    - SolutionModel
                types:
                  - DeviceModel
          title: Get a merged device template by Id
  /devices:
    get:
      operationId: Devices_List
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCollection"
      summary: Get the list of devices in an application
      x-ms-examples:
        List devices:
          description: List all devices in your application.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - approved: true
                    displayName: CheckoutThermostat
                    etag: eyJoZWFkZXIiOiJcIjAyMDA4YzMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4YjdhMDAwMFwiIn0
                    id: CheckoutThermostat
                    instanceOf: urn:kmwga2re7:modelDefinition:t_cj5wspyv
                    provisioned: true
                    simulated: true
                  - approved: true
                    displayName: Checkout1
                    etag: eyJoZWFkZXIiOiJcIjAyMDA4ZDMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout1
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
                  - approved: true
                    displayName: Checkout2
                    etag: eyJoZWFkZXIiOiJcIjAyMDA5MDMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout2
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
                  - approved: true
                    displayName: Checkout3
                    etag: eyJoZWFkZXIiOiJcIjAyMDA4ZTMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4Yjg3MDAwMFwiIn0
                    id: Checkout3
                    instanceOf: urn:sbk9sd6sl:modelDefinition:u3b_fwd7os
                    provisioned: true
                    simulated: true
          title: List devices
      x-ms-pageable:
        nextLinkName: nextLink
  "/devices/{device_id}":
    delete:
      description: Delete an existing device by device ID.
      operationId: Devices_Remove
      parameters:
        - $ref: "#/parameters/DeviceId"
      responses:
        "204":
          description: Success
      summary: Delete a device
      x-ms-examples:
        Delete device:
          description: Delete a device by Id.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: ccc
            subdomain: appsubdomain
          responses:
            "204": {}
          title: Delete device
    get:
      description: Get details about an existing device by device ID.
      operationId: Devices_Get
      parameters:
        - $ref: "#/parameters/DeviceId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/Device"
      summary: Get a device by ID
      x-ms-examples:
        Get device by Id:
          description: Get a device by Id
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: CheckoutThermostat
            subdomain: appsubdomain
          responses:
            "200":
              body:
                approved: true
                displayName: CheckoutThermostat
                etag: eyJoZWFkZXIiOiJcIjAyMDA4YzMyLTAwMDAtMGQwMC0wMDAwLTVkOTY4YjdhMDAwMFwiIn0
                id: CheckoutThermostat
                instanceOf: urn:kmwga2re7:modelDefinition:t_cj5wspyv
                provisioned: true
                simulated: true
          title: Get a device by Id
    put:
      description: Create a new device or update an existing one by device ID.
      operationId: Devices_Set
      parameters:
        - $ref: "#/parameters/DeviceId"
        - description: Device body.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/Device"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/Device"
      summary: Create or update a device
      x-ms-examples:
        Create device:
          description: Create a device with an Id.
          parameters:
            body:
              approved: true
              displayName: CheckoutThermostatccc
              instanceOf: urn:kmwga2re7:modelDefinition:t_cj5wspyv
              simulated: true
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: ccc
            subdomain: appsubdomain
          responses:
            "200":
              body:
                approved: true
                displayName: CheckoutThermostatccc
                etag: eyJoZWFkZXIiOiJcIjE1MDE2ZDFiLTAwMDAtMGQwMC0wMDAwLTVkYWNkNDIxMDAwMFwiIiwiZGF0YSI6IlwiMTUwMTZhMWItMDAwMC0wZDAwLTAwMDAtNWRhY2Q0MjEwMDAwXCIifQ
                id: ccc
                instanceOf: urn:kmwga2re7:modelDefinition:t_cj5wspyv
                provisioned: false
                simulated: true
          title: Create a device
  "/devices/{device_id}/cloudProperties":
    get:
      description: Get all cloud property values of a device by device ID.
      operationId: Devices_GetCloudProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCloudProperties"
      summary: Get device cloud properties
      x-ms-examples:
        Get cloud properties:
          description: Get the current values of all cloud properties of a device.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "200":
              body:
                AssetID: 123abc
          title: Get cloud property values of a device
    put:
      description: Update all cloud property values of a device by device ID.
      operationId: Devices_UpdateCloudProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
        - description: Device properties.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeviceCloudProperties"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCloudProperties"
      summary: Update device cloud properties
      x-ms-examples:
        Update cloud properties:
          description: Update cloud properties of a device.
          parameters:
            body:
              AssetID: 123abc
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "200":
              body:
                AssetID: 123abc
          title: Update cloud properties of a device
  "/devices/{device_id}/components/{component_name}/commands/{command_name}":
    get:
      operationId: Devices_GetCommandHistory
      parameters:
        - $ref: "#/parameters/DeviceId"
        - $ref: "#/parameters/ComponentName"
        - description: Name of this device command.
          in: path
          name: command_name
          required: true
          type: string
          x-ms-parameter-location: method
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCommandCollection"
      summary: Get device command history
      x-ms-examples:
        Get command history:
          description: Get the most recent invocation of a command of a device.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            command_name: CoolDown
            component_name: Thermostat_1o
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - id: 4e17dd2e-7bf2-458d-8466-19bc6fc9b642
                    request: 20
                    response: 58.795679629034694
                    responseCode: 200
          title: Get command history
      x-ms-pageable:
        nextLinkName: null
    post:
      description: Execute a command on a device.
      operationId: Devices_ExecuteCommand
      parameters:
        - $ref: "#/parameters/DeviceId"
        - $ref: "#/parameters/ComponentName"
        - description: Name of this device command.
          in: path
          name: command_name
          required: true
          type: string
          x-ms-parameter-location: method
        - description: Device command body.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeviceCommand"
      responses:
        "201":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCommand"
      summary: Execute a device command
      x-ms-examples:
        Send command:
          description: Send a command to a device.
          parameters:
            body:
              request:
                tempVal: 30
            centralDnsSuffixInPath: azureiotcentral.com
            command_name: CoolDown
            component_name: Thermostat_1o
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "201":
              body: {}
          title: Send command
  "/devices/{device_id}/components/{component_name}/properties":
    get:
      operationId: Devices_GetComponentProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
        - $ref: "#/parameters/ComponentName"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceProperties"
      summary: Get device properties for a specific component
      x-ms-examples:
        Get properties on components:
          description: Get the read-write property values within a component of a device.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            component_name: settings
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "200":
              body:
                $metadata:
                  current:
                    ackDesiredState:
                      code: 200
                      description: Processed
                      version: 2
                    desiredValue: 2
                  fanSpeed:
                    ackDesiredState:
                      code: 200
                      description: Processed
                      version: 2
                    desiredValue: 35
                  irSwitch:
                    ackDesiredState:
                      code: 200
                      description: Processed
                      version: 2
                    desiredValue: true
                  voltage:
                    ackDesiredState:
                      code: 200
                      description: Processed
                      version: 2
                    desiredValue: 5
                current: 2
                fanSpeed: 35
                irSwitch: true
                voltage: 5
          title: Get device properties in component
    put:
      operationId: Devices_UpdateComponentProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
        - $ref: "#/parameters/ComponentName"
        - description: Device properties.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeviceProperties"
      responses:
        "202":
          description: Success
          schema:
            $ref: "#/definitions/DeviceProperties"
      summary: Update device properties for a specific component
      x-ms-examples:
        Update properties on components:
          description: Set the read-write property values within a component of a device.
          parameters:
            body:
              current: 2
              fanSpeed: 35
              irSwitch: true
              voltage: 5
            centralDnsSuffixInPath: azureiotcentral.com
            component_name: settings
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "202":
              body:
                $metadata:
                  current:
                    desiredValue: 2
                  fanSpeed:
                    desiredValue: 35
                  irSwitch:
                    desiredValue: true
                  voltage:
                    desiredValue: 5
          title: Set device properties in component
  "/devices/{device_id}/components/{component_name}/telemetry/{telemetry_name}":
    get:
      operationId: Devices_GetTelemetryValue
      parameters:
        - $ref: "#/parameters/DeviceId"
        - $ref: "#/parameters/ComponentName"
        - description: Name of this device telemetry.
          in: path
          name: telemetry_name
          required: true
          type: string
          x-ms-parameter-location: method
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/Value"
      summary: Get device telemetry value
      x-ms-examples:
        Get telemetry:
          description: Get the last known value of a telemetry stream of a device.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            component_name: sensors
            device_id: mx1
            subdomain: appsubdomain
            telemetry_name: temperature
          responses:
            "200":
              body:
                value: 32
          title: Get telemetry
  "/devices/{device_id}/credentials":
    get:
      operationId: Devices_GetCredentials
      parameters:
        - $ref: "#/parameters/DeviceId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceCredentials"
      summary: Get device credentials
      x-ms-examples:
        Get device credentials:
          description: Get the device credentials of a created device. Returns the app's scope Id and device SAS key
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: Checkout4
            subdomain: appsubdomain
          responses:
            "200":
              body:
                scopeId: 0ne0005F266
                symmetricKey:
                  primaryKey: XaMfV3vryCQw963L2IALf1SdApQRzSIBQd13/fassqM=
                  secondaryKey: s+4uT31TRZJcTSGxZUPZb1yznjTicu4jr9tXNrg+xIQ=
          title: Get device credentials
  "/devices/{device_id}/properties":
    get:
      description: Get all property values of a device by device ID.
      operationId: Devices_GetProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/DeviceProperties"
      summary: Get device properties
      x-ms-examples:
        Get properties:
          description: Get the current values of all device properties.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "200":
              body:
                deviceinfo:
                  manufacturer: manufacturer
                  model: model
                  osName: osName
                  processorArchitecture: processorArchitecture
                  processorManufacturer: processorManufacturer
                  swVersion: swVersion
                  totalMemory: 49
                  totalStorage: 41
          title: Get device properties
    put:
      description: Update all property values of a device by device ID.
      operationId: Devices_UpdateProperties
      parameters:
        - $ref: "#/parameters/DeviceId"
        - description: Device properties.
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeviceProperties"
      responses:
        "202":
          description: Success
          schema:
            $ref: "#/definitions/DeviceProperties"
      summary: Update device properties
      x-ms-examples:
        Update properties:
          description: Update the values of read-write properties of a device
          parameters:
            body:
              device_info:
                manufacturer: manufacturer
                model: model
                osName: osName
                processorArchitecture: processorArchitecture
                processorManufacturer: processorManufacturer
                swVersion: swVersion
                totalMemory: 18
                totalStorage: 24
            centralDnsSuffixInPath: azureiotcentral.com
            device_id: mx1
            subdomain: appsubdomain
          responses:
            "202":
              body:
                deviceinfo:
                  manufacturer: TODO
                  model: model
                  osName: osName
                  processorArchitecture: processorArchitecture
                  processorManufacturer: processorManufacturer
                  swVersion: swVersion
                  totalMemory: 49
                  totalStorage: 41
          title: Update device properties
  /roles:
    get:
      operationId: Roles_List
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/RoleCollection"
      summary: Get the list of roles in an application.
      x-ms-examples:
        List roles:
          description: List roles in your application.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            subdomain: appsubdomain
          responses:
            "200":
              body:
                value:
                  - displayName: Administrator
                    id: ca310b8d-2f4a-44e0-a36e-957c202cd8d4
                  - displayName: Builder
                    id: 344138e9-8de4-4497-8c54-5237e96d6aaf
                  - displayName: Operator
                    id: ae2c9854-393b-4f97-8c42-479d70ce626e
          title: List roles
      x-ms-pageable:
        nextLinkName: null
  "/roles/{role_id}":
    get:
      operationId: Roles_Get
      parameters:
        - description: Unique ID for the role.
          in: path
          name: role_id
          required: true
          type: string
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/Role"
      summary: Get a role by ID.
      x-ms-examples:
        Get role by Id:
          description: Get a role by Id.
          parameters:
            centralDnsSuffixInPath: azureiotcentral.com
            role_id: ca310b8d-2f4a-44e0-a36e-957c202cd8d4
            subdomain: appsubdomain
          responses:
            "200":
              body:
                displayName: Administrator
                id: ca310b8d-2f4a-44e0-a36e-957c202cd8d4
          title: Get role by Id
definitions:
  ApiToken:
    allOf:
      - $ref: "#/definitions/Permission"
      - properties:
          expiry:
            description: String-formatted date representing the time when the token expires
            format: date-time
            type: string
          id:
            description: Unique ID of the api token.
            readOnly: true
            type: string
          token:
            description: Value of the api token.
            readOnly: true
            type: string
    type: object
  ApiTokenCollection:
    properties:
      value:
        description: The collection of api tokens.
        items:
          $ref: "#/definitions/ApiToken"
        type: array
    required:
      - value
    type: object
  Capability:
    additionalProperties: true
    allOf:
      - $ref: "#/definitions/NamedEntity"
      - properties:
          name:
            description: The programmatic name of the named entity.
            type: string
    type: object
  CapabilityModel:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          contents:
            description: The relationships contained by the capability model.
            items:
              $ref: "#/definitions/NamedEntity"
            type: array
          implements:
            description: The component implemented by the capability model.
            items:
              $ref: "#/definitions/Component"
            type: array
    type: object
  CapabilityReference:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          component:
            description: The name of the component being referenced.
            type: string
          reference:
            description: The name of the capability being referenced.
            type: string
    type: object
  Component:
    allOf:
      - $ref: "#/definitions/NamedEntity"
      - properties:
          schema:
            $ref: "#/definitions/Interface"
            description: The interface used by this component.
    type: object
  ContinuousDataExport:
    properties:
      displayName:
        description: Display name of the continuous data export.
        type: string
      enabled:
        description: Boolean indicating whether the continuous data export should be running or not.
        type: boolean
      endpoint:
        $ref: "#/definitions/Endpoint"
        description: Location where exported data should be sent.
      etag:
        description: ETag used to prevent conflict in continuous data export updates.
        type: string
      id:
        description: Unique ID of the continuous data export.
        readOnly: true
        type: string
      sources:
        description: Data sources to export to the endpoint.
        items:
          enum:
            - devices
            - deviceTemplates
            - telemetry
          type: string
        minItems: 1
        type: array
      status:
        description: Indicates whether the continuous data export is starting, running, etc.
        readOnly: true
        type: string
    required:
      - endpoint
      - enabled
      - sources
    type: object
  ContinuousDataExportCollection:
    properties:
      nextLink:
        description: URL to get the next page of continuous data exports.
        type: string
      value:
        description: The collection of continuous data exports.
        items:
          $ref: "#/definitions/ContinuousDataExport"
        type: array
    required:
      - value
    type: object
  Device:
    properties:
      approved:
        description: Whether the device has been approved to connect to IoT Central.
        type: boolean
      description:
        description: Detailed description of the device.
        type: string
      displayName:
        description: Display name of the device.
        type: string
      etag:
        description: ETag used to prevent conflict in device updates.
        type: string
      id:
        description: Unique ID of the device.
        readOnly: true
        type: string
      instanceOf:
        description: The model definition for the device.
        type: string
      provisioned:
        description: Whether resources have been allocated for the device.
        readOnly: true
        type: boolean
      simulated:
        description: Whether the device is simulated.
        type: boolean
    required:
      - instanceOf
    type: object
  DeviceCloudProperties:
    additionalProperties: true
    description: Cloud property values associated with the device.
    type: object
  DeviceCollection:
    properties:
      nextLink:
        description: URL to get the next page of devices.
        type: string
      value:
        description: The collection of devices.
        items:
          $ref: "#/definitions/Device"
        type: array
    required:
      - value
    type: object
  DeviceCommand:
    properties:
      id:
        description: The request ID of the device command execution.
        readOnly: true
        type: string
      request:
        description: The payload for the device command.
      response:
        description: The payload of the device command response.
        readOnly: true
      responseCode:
        description: The status code of the device command response.
        readOnly: true
        type: number
    type: object
  DeviceCommandCollection:
    properties:
      value:
        description: The collection of device command executions.
        items:
          $ref: "#/definitions/DeviceCommand"
        type: array
    required:
      - value
    type: object
  DeviceCredentials:
    properties:
      scopeId:
        description: Scope id for connecting to device provisioning service.
        type: string
      symmetricKey:
        $ref: "#/definitions/SymmetricKey"
        description: The symmetric key credentials for the device.
    required:
      - scopeId
      - symmetricKey
    type: object
  DeviceProperties:
    additionalProperties: true
    description: Property values associated with the device.
    type: object
  DeviceTemplate:
    properties:
      capabilityModel:
        $ref: "#/definitions/CapabilityModel"
      description:
        description: Detailed description of the device template.
        type: string
      displayName:
        description: Display name of the device template.
        type: string
      etag:
        description: ETag used to prevent conflict in device template updates.
        type: string
      id:
        description: Unique ID of the device template.
        readOnly: true
        type: string
      solutionModel:
        $ref: "#/definitions/SolutionModel"
      types:
        description: The types of device to which this template applies.
        items:
          type: string
        type: array
    required:
      - types
      - capabilityModel
    type: object
  DeviceTemplateCollection:
    properties:
      nextLink:
        description: URL to get the next page of device templates.
        type: string
      value:
        description: The collection of device templates.
        items:
          $ref: "#/definitions/DeviceTemplate"
        type: array
    required:
      - value
    type: object
  Endpoint:
    discriminator: type
    properties:
      connectionString:
        description: Information for connecting to the endpoint.
        type: string
      name:
        description: Name of the entity to send data to.
        type: string
      type:
        description: Type of the endpoint.
        type: string
    required:
      - type
      - connectionString
      - name
    type: object
  Entity:
    properties:
      "@context":
        description: JSON-LD context for the entity.
      "@id":
        description: Unique ID of the entity.
        type: string
      "@type":
        description: Type of the entity.
        items:
          type: string
        minItems: 1
        type: array
      comment:
        description: Developer comment about the entity.
        type: string
      description:
        description: Detailed description of the entity.
        type: string
      displayName:
        description: Display name of the entity.
        type: string
    required:
      - "@type"
    type: object
  EventHubsEndpoint:
    allOf:
      - $ref: "#/definitions/Endpoint"
  InitialValue:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          capability:
            $ref: "#/definitions/CapabilityReference"
          value:
            description: The initial value of the capability.
    type: object
  Interface:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          contents:
            description: The data definitions contained by the interface.
            items:
              $ref: "#/definitions/Capability"
            type: array
    type: object
  NamedEntity:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          name:
            description: The programmatic name of the named entity.
            type: string
        required:
          - name
    type: object
  Override:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          capability:
            $ref: "#/definitions/CapabilityReference"
          displayUnit:
            description: The overridden display unit.
            type: string
          semanticType:
            description: The overridden semantic type.
            type: string
          unit:
            description: The overridden unit.
            type: string
          valueDetail:
            $ref: "#/definitions/ValueDetail"
    type: object
  Permission:
    properties:
      roles:
        description: Roles that the permission has been granted permission to.
        items:
          type: string
        maxItems: 1
        minItems: 1
        type: array
    required:
      - roles
    type: object
  Role:
    properties:
      displayName:
        description: Display name of the role.
        type: string
      id:
        description: Unique ID of the role.
        readOnly: true
        type: string
    type: object
  RoleCollection:
    properties:
      value:
        description: The collection of roles.
        items:
          $ref: "#/definitions/Role"
        type: array
    required:
      - value
    type: object
  ServiceBusQueueEndpoint:
    allOf:
      - $ref: "#/definitions/Endpoint"
  ServiceBusTopicEndpoint:
    allOf:
      - $ref: "#/definitions/Endpoint"
  SolutionModel:
    allOf:
      - $ref: "#/definitions/Entity"
      - properties:
          cloudProperties:
            description: The cloud properties defined by the solution model.
            items:
              $ref: "#/definitions/Capability"
            type: array
          initialValues:
            description: The initial values defined by the solution model.
            items:
              $ref: "#/definitions/InitialValue"
            type: array
          overrides:
            description: The overrides defined by the solution model.
            items:
              $ref: "#/definitions/Override"
            type: array
    type: object
  StorageEndpoint:
    allOf:
      - $ref: "#/definitions/Endpoint"
  SymmetricKey:
    properties:
      primaryKey:
        description: The primary key for the credential.
        type: string
      secondaryKey:
        description: The secondary key for the credential.
        type: string
    required:
      - primaryKey
      - secondaryKey
    type: object
  Value:
    properties:
      value:
        description: The value of this API response.
    type: object
  ValueDetail:
    additionalProperties: true
    allOf:
      - $ref: "#/definitions/Entity"
    description: Visualization details for the referenced capability.
    type: object
x-ms-parameterized-host:
  hostTemplate: "{subdomain}.{centralDnsSuffixInPath}"
  parameters:
    - $ref: "#/parameters/Subdomain"
    - $ref: "#/parameters/CentralDnsSuffixInPath"
