{ "swagger": "2.0", "info": { "title": "Microsoft.DeviceRegistry management service", "version": "2023-11-01-preview", "description": "Microsoft.DeviceRegistry Resource Provider management API.", "x-typespec-generated": [ { "emitter": "@azure-tools/typespec-autorest" } ] }, "schemes": [ "https" ], "host": "management.azure.com", "produces": [ "application/json" ], "consumes": [ "application/json" ], "security": [ { "azure_auth": [ "user_impersonation" ] } ], "securityDefinitions": { "azure_auth": { "type": "oauth2", "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, "tags": [ { "name": "Operations" }, { "name": "OperationStatus" }, { "name": "Assets" }, { "name": "AssetEndpointProfiles" } ], "paths": { "/providers/Microsoft.DeviceRegistry/operations": { "get": { "operationId": "Operations_List", "tags": [ "Operations" ], "description": "List the operations for the provider", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/OperationListResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Returns list of operations.": { "$ref": "./examples/List_Operations.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/providers/Microsoft.DeviceRegistry/assetEndpointProfiles": { "get": { "operationId": "AssetEndpointProfiles_ListBySubscription", "tags": [ "AssetEndpointProfiles" ], "description": "List AssetEndpointProfile resources by subscription ID", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetEndpointProfileListResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "List Asset Endpoint Profiles in a Subscription.": { "$ref": "./examples/List_AssetEndpointProfiles_Subscription.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/providers/Microsoft.DeviceRegistry/assets": { "get": { "operationId": "Assets_ListBySubscription", "tags": [ "Assets" ], "description": "List Asset resources by subscription ID", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetListResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "List Assets in a Subscription.": { "$ref": "./examples/List_Assets_Subscription.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/providers/Microsoft.DeviceRegistry/locations/{location}/operationStatuses/{operationId}": { "get": { "operationId": "OperationStatus_Get", "tags": [ "OperationStatus" ], "description": "Returns the current status of an async operation.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/LocationParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/OperationIdParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/OperationStatusResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get the status of an async operation.": { "$ref": "./examples/Get_OperationStatus.json" } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DeviceRegistry/assetEndpointProfiles": { "get": { "operationId": "AssetEndpointProfiles_ListByResourceGroup", "tags": [ "AssetEndpointProfiles" ], "description": "List AssetEndpointProfile resources by resource group", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetEndpointProfileListResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "List Asset Endpoint Profiles in a Resource Group.": { "$ref": "./examples/List_AssetEndpointProfiles_ResourceGroup.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DeviceRegistry/assetEndpointProfiles/{assetEndpointProfileName}": { "get": { "operationId": "AssetEndpointProfiles_Get", "tags": [ "AssetEndpointProfiles" ], "description": "Get a AssetEndpointProfile", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetEndpointProfileName", "in": "path", "description": "Asset Endpoint Profile name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetEndpointProfile" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get an Asset Endpoint Profile.": { "$ref": "./examples/Get_AssetEndpointProfile.json" } } }, "put": { "operationId": "AssetEndpointProfiles_CreateOrReplace", "tags": [ "AssetEndpointProfiles" ], "description": "Create a AssetEndpointProfile", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetEndpointProfileName", "in": "path", "description": "Asset Endpoint Profile name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" }, { "name": "resource", "in": "body", "description": "Resource create parameters.", "required": true, "schema": { "$ref": "#/definitions/AssetEndpointProfile" } } ], "responses": { "200": { "description": "Resource 'AssetEndpointProfile' update operation succeeded", "schema": { "$ref": "#/definitions/AssetEndpointProfile" } }, "201": { "description": "Resource 'AssetEndpointProfile' create operation succeeded", "schema": { "$ref": "#/definitions/AssetEndpointProfile" }, "headers": { "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Create an Asset Endpoint Profile.": { "$ref": "./examples/Create_AssetEndpointProfile.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true }, "patch": { "operationId": "AssetEndpointProfiles_Update", "tags": [ "AssetEndpointProfiles" ], "description": "Update a AssetEndpointProfile", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetEndpointProfileName", "in": "path", "description": "Asset Endpoint Profile name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" }, { "name": "properties", "in": "body", "description": "The resource properties to be updated.", "required": true, "schema": { "$ref": "#/definitions/AssetEndpointProfileUpdate" } } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetEndpointProfile" } }, "202": { "description": "Resource update request accepted.", "headers": { "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." }, "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Patch an Asset Endpoint Profile.": { "$ref": "./examples/Update_AssetEndpointProfile.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "location" }, "x-ms-long-running-operation": true }, "delete": { "operationId": "AssetEndpointProfiles_Delete", "tags": [ "AssetEndpointProfiles" ], "description": "Delete a AssetEndpointProfile", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetEndpointProfileName", "in": "path", "description": "Asset Endpoint Profile name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" } ], "responses": { "202": { "description": "Resource deletion accepted.", "headers": { "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." }, "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "204": { "description": "Resource does not exist." }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Delete an Asset Endpoint Profile.": { "$ref": "./examples/Delete_AssetEndpointProfile.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "location" }, "x-ms-long-running-operation": true } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DeviceRegistry/assets": { "get": { "operationId": "Assets_ListByResourceGroup", "tags": [ "Assets" ], "description": "List Asset resources by resource group", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/AssetListResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "List Assets in a Resource Group.": { "$ref": "./examples/List_Assets_ResourceGroup.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DeviceRegistry/assets/{assetName}": { "get": { "operationId": "Assets_Get", "tags": [ "Assets" ], "description": "Get a Asset", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetName", "in": "path", "description": "Asset name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/Asset" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get an Asset": { "$ref": "./examples/Get_Asset.json" }, "Get an Asset with Sync Status.": { "$ref": "./examples/Get_Asset_With_SyncStatus.json" } } }, "put": { "operationId": "Assets_CreateOrReplace", "tags": [ "Assets" ], "description": "Create a Asset", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetName", "in": "path", "description": "Asset name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" }, { "name": "resource", "in": "body", "description": "Resource create parameters.", "required": true, "schema": { "$ref": "#/definitions/Asset" } } ], "responses": { "200": { "description": "Resource 'Asset' update operation succeeded", "schema": { "$ref": "#/definitions/Asset" } }, "201": { "description": "Resource 'Asset' create operation succeeded", "schema": { "$ref": "#/definitions/Asset" }, "headers": { "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Create an Asset With External Asset Id.": { "$ref": "./examples/Create_Asset_With_ExternalAssetId.json" }, "Create an Asset Without Display Name.": { "$ref": "./examples/Create_Asset_Without_DisplayName.json" }, "Create an Asset Without External Asset Id.": { "$ref": "./examples/Create_Asset_Without_ExternalAssetId.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true }, "patch": { "operationId": "Assets_Update", "tags": [ "Assets" ], "description": "Update a Asset", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetName", "in": "path", "description": "Asset name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" }, { "name": "properties", "in": "body", "description": "The resource properties to be updated.", "required": true, "schema": { "$ref": "#/definitions/AssetUpdate" } } ], "responses": { "200": { "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/Asset" } }, "202": { "description": "Resource update request accepted.", "headers": { "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." }, "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Patch an Asset.": { "$ref": "./examples/Update_Asset.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "location" }, "x-ms-long-running-operation": true }, "delete": { "operationId": "Assets_Delete", "tags": [ "Assets" ], "description": "Delete a Asset", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { "$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { "name": "assetName", "in": "path", "description": "Asset name parameter.", "required": true, "type": "string", "minLength": 3, "maxLength": 63, "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$" } ], "responses": { "202": { "description": "Resource deletion accepted.", "headers": { "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." }, "Retry-After": { "type": "integer", "format": "int32", "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." } } }, "204": { "description": "Resource does not exist." }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Delete an Asset.": { "$ref": "./examples/Delete_Asset.json" } }, "x-ms-long-running-operation-options": { "final-state-via": "location" }, "x-ms-long-running-operation": true } } }, "definitions": { "Asset": { "type": "object", "description": "Asset definition.", "properties": { "properties": { "$ref": "#/definitions/AssetProperties", "description": "The resource-specific properties for this resource.", "x-ms-client-flatten": true, "x-ms-mutability": [ "read", "create" ] }, "extendedLocation": { "$ref": "#/definitions/ExtendedLocation", "description": "The extended location.", "x-ms-mutability": [ "read", "create" ] } }, "required": [ "extendedLocation" ], "allOf": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/TrackedResource" } ] }, "AssetEndpointProfile": { "type": "object", "description": "Asset Endpoint Profile definition.", "properties": { "properties": { "$ref": "#/definitions/AssetEndpointProfileProperties", "description": "The resource-specific properties for this resource.", "x-ms-client-flatten": true, "x-ms-mutability": [ "read", "create" ] }, "extendedLocation": { "$ref": "#/definitions/ExtendedLocation", "description": "The extended location.", "x-ms-mutability": [ "read", "create" ] } }, "required": [ "extendedLocation" ], "allOf": [ { "$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/TrackedResource" } ] }, "AssetEndpointProfileListResult": { "type": "object", "description": "The response of a AssetEndpointProfile list operation.", "properties": { "value": { "type": "array", "description": "The AssetEndpointProfile items on this page", "items": { "$ref": "#/definitions/AssetEndpointProfile" } }, "nextLink": { "type": "string", "format": "uri", "description": "The link to the next page of items" } }, "required": [ "value" ] }, "AssetEndpointProfileProperties": { "type": "object", "description": "Defines the Asset Endpoint Profile properties.", "properties": { "uuid": { "type": "string", "description": "Globally unique, immutable, non-reusable id.", "readOnly": true }, "targetAddress": { "type": "string", "format": "uri", "description": "The local valid URI specifying the network address/DNS name of a southbound device. The scheme part of the targetAddress URI specifies the type of the device. The additionalConfiguration field holds further connector type specific configuration." }, "userAuthentication": { "$ref": "#/definitions/UserAuthentication", "description": "Defines the client authentication mechanism to the server." }, "transportAuthentication": { "$ref": "#/definitions/TransportAuthentication", "description": "Defines the authentication mechanism for the southbound connector connecting to the shop floor/OT device." }, "additionalConfiguration": { "type": "string", "description": "Contains connectivity type specific further configuration (e.g. OPC UA, Modbus, ONVIF)." }, "provisioningState": { "$ref": "#/definitions/ProvisioningState", "description": "Provisioning state of the resource.", "readOnly": true } }, "required": [ "targetAddress" ] }, "AssetEndpointProfileUpdate": { "type": "object", "description": "The type used for update operations of the AssetEndpointProfile.", "properties": { "tags": { "type": "object", "description": "Resource tags.", "additionalProperties": { "type": "string" } }, "properties": { "$ref": "#/definitions/AssetEndpointProfileUpdateProperties", "x-ms-client-flatten": true } } }, "AssetEndpointProfileUpdateProperties": { "type": "object", "description": "The updatable properties of the AssetEndpointProfile.", "properties": { "targetAddress": { "type": "string", "format": "uri", "description": "The local valid URI specifying the network address/DNS name of a southbound device. The scheme part of the targetAddress URI specifies the type of the device. The additionalConfiguration field holds further connector type specific configuration." }, "userAuthentication": { "$ref": "#/definitions/UserAuthenticationUpdate", "description": "Defines the client authentication mechanism to the server." }, "transportAuthentication": { "$ref": "#/definitions/TransportAuthenticationUpdate", "description": "Defines the authentication mechanism for the southbound connector connecting to the shop floor/OT device." }, "additionalConfiguration": { "type": "string", "description": "Contains connectivity type specific further configuration (e.g. OPC UA, Modbus, ONVIF)." } } }, "AssetListResult": { "type": "object", "description": "The response of a Asset list operation.", "properties": { "value": { "type": "array", "description": "The Asset items on this page", "items": { "$ref": "#/definitions/Asset" } }, "nextLink": { "type": "string", "format": "uri", "description": "The link to the next page of items" } }, "required": [ "value" ] }, "AssetProperties": { "type": "object", "description": "Defines the asset properties.", "properties": { "uuid": { "type": "string", "description": "Globally unique, immutable, non-reusable id.", "readOnly": true }, "assetType": { "type": "string", "description": "Resource path to asset type (model) definition." }, "enabled": { "type": "boolean", "description": "Enabled/Disabled status of the asset." }, "externalAssetId": { "type": "string", "description": "Asset id provided by the customer.", "x-ms-mutability": [ "read", "create" ] }, "displayName": { "type": "string", "description": "Human-readable display name." }, "description": { "type": "string", "description": "Human-readable description of the asset." }, "assetEndpointProfileUri": { "type": "string", "description": "A reference to the asset endpoint profile (connection information) used by brokers to connect to an endpoint that provides data points for this asset. Must have the format /.", "x-ms-mutability": [ "read", "create" ] }, "version": { "type": "integer", "format": "int32", "description": "An integer that is incremented each time the resource is modified.", "readOnly": true }, "manufacturer": { "type": "string", "description": "Asset manufacturer name." }, "manufacturerUri": { "type": "string", "description": "Asset manufacturer URI." }, "model": { "type": "string", "description": "Asset model name." }, "productCode": { "type": "string", "description": "Asset product code." }, "hardwareRevision": { "type": "string", "description": "Revision number of the hardware." }, "softwareRevision": { "type": "string", "description": "Revision number of the software." }, "documentationUri": { "type": "string", "description": "Reference to the documentation." }, "serialNumber": { "type": "string", "description": "Asset serial number." }, "attributes": { "type": "object", "description": "A set of key-value pairs that contain custom attributes set by the customer.", "additionalProperties": {} }, "defaultDataPointsConfiguration": { "type": "string", "description": "Protocol-specific default configuration for all data points. Each data point can have its own configuration that overrides the default settings here. This assumes that each asset instance has one protocol." }, "defaultEventsConfiguration": { "type": "string", "description": "Protocol-specific default configuration for all events. Each event can have its own configuration that overrides the default settings here. This assumes that each asset instance has one protocol." }, "dataPoints": { "type": "array", "description": "Array of data points that are part of the asset. Each data point can reference an asset type capability and have per-data point configuration. See below for more details for the definition of the dataPoints element.", "items": { "$ref": "#/definitions/DataPoint" }, "x-ms-identifiers": [] }, "events": { "type": "array", "description": "Array of events that are part of the asset. Each event can reference an asset type capability and have per-event configuration. See below for more details about the definition of the events element.", "items": { "$ref": "#/definitions/Event" }, "x-ms-identifiers": [] }, "status": { "$ref": "#/definitions/AssetStatus", "description": "Read only object to reflect changes that have occurred on the Edge. Similar to Kubernetes status property for custom resources.", "readOnly": true }, "provisioningState": { "$ref": "#/definitions/ProvisioningState", "description": "Provisioning state of the resource.", "readOnly": true } }, "required": [ "assetEndpointProfileUri" ] }, "AssetStatus": { "type": "object", "description": "Defines the asset status properties.", "properties": { "errors": { "type": "array", "description": "Array object to transfer and persist errors that originate from the Edge.", "items": { "$ref": "#/definitions/AssetStatusError" }, "x-ms-identifiers": [] }, "version": { "type": "integer", "format": "int32", "description": "A read only incremental counter indicating the number of times the configuration has been modified from the perspective of the current actual (Edge) state of the Asset. Edge would be the only writer of this value and would sync back up to the cloud. In steady state, this should equal version." } } }, "AssetStatusError": { "type": "object", "description": "Defines the asset status error properties.", "properties": { "code": { "type": "integer", "format": "int32", "description": "Error code for classification of errors (ex: 400, 404, 500, etc.)." }, "message": { "type": "string", "description": "Human readable helpful error message to provide additional context for error (ex: “capability Id 'foo' does not exist”)." } } }, "AssetUpdate": { "type": "object", "description": "The type used for update operations of the Asset.", "properties": { "tags": { "type": "object", "description": "Resource tags.", "additionalProperties": { "type": "string" } }, "properties": { "$ref": "#/definitions/AssetUpdateProperties", "x-ms-client-flatten": true } } }, "AssetUpdateProperties": { "type": "object", "description": "The updatable properties of the Asset.", "properties": { "assetType": { "type": "string", "description": "Resource path to asset type (model) definition." }, "enabled": { "type": "boolean", "description": "Enabled/Disabled status of the asset." }, "displayName": { "type": "string", "description": "Human-readable display name." }, "description": { "type": "string", "description": "Human-readable description of the asset." }, "manufacturer": { "type": "string", "description": "Asset manufacturer name." }, "manufacturerUri": { "type": "string", "description": "Asset manufacturer URI." }, "model": { "type": "string", "description": "Asset model name." }, "productCode": { "type": "string", "description": "Asset product code." }, "hardwareRevision": { "type": "string", "description": "Revision number of the hardware." }, "softwareRevision": { "type": "string", "description": "Revision number of the software." }, "documentationUri": { "type": "string", "description": "Reference to the documentation." }, "serialNumber": { "type": "string", "description": "Asset serial number." }, "attributes": { "type": "object", "description": "A set of key-value pairs that contain custom attributes set by the customer.", "additionalProperties": {} }, "defaultDataPointsConfiguration": { "type": "string", "description": "Protocol-specific default configuration for all data points. Each data point can have its own configuration that overrides the default settings here. This assumes that each asset instance has one protocol." }, "defaultEventsConfiguration": { "type": "string", "description": "Protocol-specific default configuration for all events. Each event can have its own configuration that overrides the default settings here. This assumes that each asset instance has one protocol." }, "dataPoints": { "type": "array", "description": "Array of data points that are part of the asset. Each data point can reference an asset type capability and have per-data point configuration. See below for more details for the definition of the dataPoints element.", "items": { "$ref": "#/definitions/DataPoint" }, "x-ms-identifiers": [] }, "events": { "type": "array", "description": "Array of events that are part of the asset. Each event can reference an asset type capability and have per-event configuration. See below for more details about the definition of the events element.", "items": { "$ref": "#/definitions/Event" }, "x-ms-identifiers": [] } } }, "DataPoint": { "type": "object", "description": "Defines the data point properties.", "properties": { "name": { "type": "string", "description": "The name of the data point." }, "dataSource": { "type": "string", "description": "The address of the source of the data in the asset (e.g. URL) so that a client can access the data source on the asset." }, "capabilityId": { "type": "string", "description": "The path to the type definition of the capability (e.g. DTMI, OPC UA information model node id, etc.), for example dtmi:com:example:Robot:_contents:__prop1;1." }, "observabilityMode": { "type": "string", "description": "An indication of how the data point should be mapped to OpenTelemetry.", "default": "none", "enum": [ "none", "counter", "gauge", "histogram", "log" ], "x-ms-enum": { "name": "DataPointsObservabilityMode", "modelAsString": true, "values": [ { "name": "None", "value": "none", "description": "No mapping to OpenTelemetry." }, { "name": "Counter", "value": "counter", "description": "Map as counter to OpenTelemetry." }, { "name": "Gauge", "value": "gauge", "description": "Map as gauge to OpenTelemetry." }, { "name": "Histogram", "value": "histogram", "description": "Map as histogram to OpenTelemetry." }, { "name": "Log", "value": "log", "description": "Map as log to OpenTelemetry." } ] } }, "dataPointConfiguration": { "type": "string", "description": "Protocol-specific configuration for the data point. For OPC UA, this could include configuration like, publishingInterval, samplingInterval, and queueSize." } }, "required": [ "dataSource" ] }, "Event": { "type": "object", "description": "Defines the event properties.", "properties": { "name": { "type": "string", "description": "The name of the event." }, "eventNotifier": { "type": "string", "description": "The address of the notifier of the event in the asset (e.g. URL) so that a client can access the event on the asset." }, "capabilityId": { "type": "string", "description": "The path to the type definition of the capability (e.g. DTMI, OPC UA information model node id, etc.), for example dtmi:com:example:Robot:_contents:__prop1;1." }, "observabilityMode": { "type": "string", "description": "An indication of how the event should be mapped to OpenTelemetry.", "default": "none", "enum": [ "none", "log" ], "x-ms-enum": { "name": "EventsObservabilityMode", "modelAsString": true, "values": [ { "name": "None", "value": "none", "description": "No mapping to OpenTelemetry." }, { "name": "Log", "value": "log", "description": "Map as log to OpenTelemetry." } ] } }, "eventConfiguration": { "type": "string", "description": "Protocol-specific configuration for the event. For OPC UA, this could include configuration like, publishingInterval, samplingInterval, and queueSize." } }, "required": [ "eventNotifier" ] }, "ExtendedLocation": { "type": "object", "description": "The extended location.", "properties": { "type": { "type": "string", "description": "The extended location type." }, "name": { "type": "string", "description": "The extended location name." } }, "required": [ "type", "name" ] }, "OwnCertificate": { "type": "object", "description": "Certificate or private key that can be used by the southbound connector connecting to the shop floor/OT device. The accepted extensions are .der for certificates and .pfx/.pem for private keys.", "properties": { "certThumbprint": { "type": "string", "description": "Certificate thumbprint." }, "certSecretReference": { "type": "string", "description": "Secret Reference name (cert and private key)." }, "certPasswordReference": { "type": "string", "description": "Secret Reference Name (Pfx or Pem password)." } } }, "ProvisioningState": { "type": "string", "description": "The provisioning status of the resource.", "enum": [ "Succeeded", "Failed", "Canceled", "Accepted" ], "x-ms-enum": { "name": "ProvisioningState", "modelAsString": true, "values": [ { "name": "Succeeded", "value": "Succeeded", "description": "Resource has been created." }, { "name": "Failed", "value": "Failed", "description": "Resource creation failed." }, { "name": "Canceled", "value": "Canceled", "description": "Resource creation was canceled." }, { "name": "Accepted", "value": "Accepted", "description": "Resource has been accepted by the server." } ] }, "readOnly": true }, "TransportAuthentication": { "type": "object", "description": "Definition of the authentication mechanism for the southbound connector.", "properties": { "ownCertificates": { "type": "array", "description": "Defines a reference to a secret which contains all certificates and private keys that can be used by the southbound connector connecting to the shop floor/OT device. The accepted extensions are .der for certificates and .pfx/.pem for private keys.", "items": { "$ref": "#/definitions/OwnCertificate" }, "x-ms-identifiers": [] } }, "required": [ "ownCertificates" ] }, "TransportAuthenticationUpdate": { "type": "object", "description": "Definition of the authentication mechanism for the southbound connector.", "properties": { "ownCertificates": { "type": "array", "description": "Defines a reference to a secret which contains all certificates and private keys that can be used by the southbound connector connecting to the shop floor/OT device. The accepted extensions are .der for certificates and .pfx/.pem for private keys.", "items": { "$ref": "#/definitions/OwnCertificate" }, "x-ms-identifiers": [] } } }, "UserAuthentication": { "type": "object", "description": "Definition of the client authentication mechanism to the server.", "properties": { "mode": { "type": "string", "description": "Defines the mode to authenticate the user of the client at the server.", "default": "Certificate", "enum": [ "Anonymous", "Certificate", "UsernamePassword" ], "x-ms-enum": { "name": "UserAuthenticationMode", "modelAsString": true, "values": [ { "name": "Anonymous", "value": "Anonymous", "description": "The user authentication mode is anonymous." }, { "name": "Certificate", "value": "Certificate", "description": "The user authentication mode is an x509 certificate." }, { "name": "UsernamePassword", "value": "UsernamePassword", "description": "The user authentication mode is a username and password." } ] } }, "usernamePasswordCredentials": { "$ref": "#/definitions/UsernamePasswordCredentials", "description": "Defines the username and password references when UsernamePassword user authentication mode is selected." }, "x509Credentials": { "$ref": "#/definitions/X509Credentials", "description": "Defines the certificate reference when Certificate user authentication mode is selected." } }, "required": [ "mode" ] }, "UserAuthenticationUpdate": { "type": "object", "description": "Definition of the client authentication mechanism to the server.", "properties": { "mode": { "type": "string", "description": "Defines the mode to authenticate the user of the client at the server.", "default": "Certificate", "enum": [ "Anonymous", "Certificate", "UsernamePassword" ], "x-ms-enum": { "name": "UserAuthenticationMode", "modelAsString": true, "values": [ { "name": "Anonymous", "value": "Anonymous", "description": "The user authentication mode is anonymous." }, { "name": "Certificate", "value": "Certificate", "description": "The user authentication mode is an x509 certificate." }, { "name": "UsernamePassword", "value": "UsernamePassword", "description": "The user authentication mode is a username and password." } ] } }, "usernamePasswordCredentials": { "$ref": "#/definitions/UsernamePasswordCredentialsUpdate", "description": "Defines the username and password references when UsernamePassword user authentication mode is selected." }, "x509Credentials": { "$ref": "#/definitions/X509CredentialsUpdate", "description": "Defines the certificate reference when Certificate user authentication mode is selected." } } }, "UsernamePasswordCredentials": { "type": "object", "description": "The credentials for authentication mode UsernamePassword.", "properties": { "usernameReference": { "type": "string", "description": "A reference to secret containing the username." }, "passwordReference": { "type": "string", "description": "A reference to secret containing the password." } }, "required": [ "usernameReference", "passwordReference" ] }, "UsernamePasswordCredentialsUpdate": { "type": "object", "description": "The credentials for authentication mode UsernamePassword.", "properties": { "usernameReference": { "type": "string", "description": "A reference to secret containing the username." }, "passwordReference": { "type": "string", "description": "A reference to secret containing the password." } } }, "X509Credentials": { "type": "object", "description": "The x509 certificate for authentication mode Certificate.", "properties": { "certificateReference": { "type": "string", "description": "A reference to secret containing the certificate and private key (e.g. stored as .der/.pem or .der/.pfx)." } }, "required": [ "certificateReference" ] }, "X509CredentialsUpdate": { "type": "object", "description": "The x509 certificate for authentication mode Certificate.", "properties": { "certificateReference": { "type": "string", "description": "A reference to secret containing the certificate and private key (e.g. stored as .der/.pem or .der/.pfx)." } } } }, "parameters": {} }