diff --git a/custom-words.txt b/custom-words.txt index 3ec327a39ea6..f569277d16f5 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -413,6 +413,7 @@ deletedstorage deletefailed deleteissuers deletesas +delink demorun denylist deployer diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/createLinkedWorkspace.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/createLinkedWorkspace.json new file mode 100644 index 000000000000..fe958fbbffaa --- /dev/null +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/createLinkedWorkspace.json @@ -0,0 +1,27 @@ +{ + "parameters": { + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-1234", + "workspaceName": "workspace-123", + "parameters": { + "linkName": "link-12", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.Synapse/workspaces/linkedWorkspace-1234", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai123" + } + }, + "responses": { + "200": { + "body": { + "linkName": "link-12", + "linkType": "Synapse", + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-4321", + "providerNamespace": "Microsoft.Synapse", + "resourceType": "workspaces", + "workspaceName": "linkedWorkspace-1234", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai123", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.Synapse/workspaces/linkedWorkspace-1234" + } + } + } +} diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/deleteLinkedWorkspace.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/deleteLinkedWorkspace.json new file mode 100644 index 000000000000..df2be8582c10 --- /dev/null +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/deleteLinkedWorkspace.json @@ -0,0 +1,12 @@ +{ + "parameters": { + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-1234", + "workspaceName": "workspace-123", + "linkName": "link-12" + }, + "responses": { + "200": {}, + "204": {} + } +} diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/getLinkedWorkspace.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/getLinkedWorkspace.json new file mode 100644 index 000000000000..e00ea5683057 --- /dev/null +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/getLinkedWorkspace.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-1234", + "workspaceName": "workspace-123", + "linkName": "link-12" + }, + "responses": { + "200": { + "body": { + "linkName": "link-12", + "linkType": "Synapse", + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-4321", + "providerNamespace": "Microsoft.Synapse", + "resourceType": "workspaces", + "workspaceName": "linkedWorkspace-1234", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai123", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.Synapse/workspaces/linkedWorkspace-1234" + } + } + } +} diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/listLinkedWorkspaces.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/listLinkedWorkspaces.json new file mode 100644 index 000000000000..b5cdb760bbf5 --- /dev/null +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/listLinkedWorkspaces.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-1234", + "workspaceName": "workspace-123", + "link-resourceGroup": "linkRg-123" + }, + "responses": { + "200": { + "body": [ + { + "linkName": "link-12", + "linkType": "Synapse", + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "linkRg-123", + "providerNamespace": "Microsoft.Synapse", + "resourceType": "workspaces", + "workspaceName": "linkedWorkspace-1234", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai123", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/linkRg-123/providers/Microsoft.Synapse/workspaces/linkedWorkspace-1234" + }, + { + "linkName": "link-13", + "linkType": "Synapse", + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "linkRg-123", + "providerNamespace": "Microsoft.Synapse", + "resourceType": "workspaces", + "workspaceName": "linkedWorkspace-4321", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai321", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/linkRg-123/providers/Microsoft.Synapse/workspaces/linkedWorkspace-4321" + } + ] + } + } +} diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/updateLinkedWorkspace.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/updateLinkedWorkspace.json new file mode 100644 index 000000000000..30688da49921 --- /dev/null +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/examples/updateLinkedWorkspace.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-1234", + "workspaceName": "workspace-123", + "linkName": "link-12", + "parameters": { + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai124" + } + }, + "responses": { + "200": { + "body": { + "linkName": "link-12", + "linkType": "Synapse", + "subscriptionId": "00000000-1111-2222-3333-444444444444", + "resourceGroupName": "resourceGroup-4321", + "providerNamespace": "Microsoft.Synapse", + "resourceType": "workspaces", + "workspaceName": "linkedWorkspace-1234", + "userAssignedIdentityResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uai124", + "resourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/resourceGroup-4321/providers/Microsoft.Synapse/workspaces/linkedWorkspace-1234" + } + } + } +} diff --git a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/machineLearningServices.json b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/machineLearningServices.json index b5dede913fa4..ccebe7d1d847 100644 --- a/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/machineLearningServices.json +++ b/specification/machinelearningservices/resource-manager/Microsoft.MachineLearningServices/stable/2020-03-01/machineLearningServices.json @@ -1228,6 +1228,271 @@ } } } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.MachineLearningServices/workspaces/{workspaceName}/linkedWorkspaces": { + "get": { + "tags": [ + "LinkedWorkspaces" + ], + "x-ms-examples": { + "ListLinkedWorkspaces": { + "$ref": "./examples/listLinkedWorkspaces.json" + } + }, + "operationId": "LinkedWorkspaces_List", + "description": "List linked workspaces under a workspace per some query criteria.", + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "name": "link-subscriptionId", + "in": "query", + "type": "string", + "description": "The subscriptionid of the linked workspace." + }, + { + "name": "link-resource-group", + "in": "query", + "type": "string", + "description": "The resource group name of the linked workspace." + }, + { + "name": "link-resource-name", + "in": "query", + "type": "string", + "description": "The resource name of the linked workspace." + }, + { + "name": "link-resourceId", + "in": "query", + "type": "string", + "description": "The resourceId of the linked workspace." + }, + { + "name": "link-type", + "in": "query", + "type": "string", + "description": "The type of the linked workspace.", + "enum": [ + "Synapse" + ], + "x-ms-enum": { + "name": "LinkType", + "modelAsString": true + } + }, + { + "name": "uai-resourceId", + "in": "query", + "type": "string", + "description": "The resourceId of the user assigned identity for the linked workspace." + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the linked workspaces.", + "schema": { + "type": "array", + "description": "array of linked workspaces.", + "items": { + "$ref": "#/definitions/LinkedWorkspace" + } + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/MachineLearningServiceError" + } + } + } + }, + "post": { + "tags": [ + "LinkedWorkspaces" + ], + "operationId": "LinkedWorkspaces_Create", + "description": "Add a new linked workspace.", + "x-ms-examples": { + "CreateLinkedWorkspace": { + "$ref": "./examples/createLinkedWorkspace.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "name": "parameters", + "in": "body", + "description": "The object for adding a new linked workspace", + "required": true, + "schema": { + "$ref": "#/definitions/LinkedWorkspaceCreateDto" + } + } + ], + "responses": { + "200": { + "description": "Successfully created the linked workspace.", + "schema": { + "$ref": "#/definitions/LinkedWorkspace" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/MachineLearningServiceError" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.MachineLearningServices/workspaces/{workspaceName}/linkedWorkspaces/{linkName}": { + "get": { + "tags": [ + "LinkedWorkspaces" + ], + "operationId": "LinkedWorkspaces_Get", + "description": "Get the detail of a linked workspace.", + "x-ms-examples": { + "GetLinkedWorkspace": { + "$ref": "./examples/getLinkedWorkspace.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/LinkName" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the detail of the linked workspace.", + "schema": { + "$ref": "#/definitions/LinkedWorkspace" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/MachineLearningServiceError" + } + } + } + }, + "post": { + "tags": [ + "LinkedWorkspaces" + ], + "operationId": "LinkedWorkspaces_Update", + "description": "Update the detail of a linked workspace.", + "x-ms-examples": { + "UpdateLinkedWorkspace": { + "$ref": "./examples/updateLinkedWorkspace.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/LinkName" + }, + { + "name": "parameters", + "in": "body", + "description": "The object for updating an existing linked workspace", + "required": true, + "schema": { + "$ref": "#/definitions/LinkedWorkspaceUpdateDto" + } + } + ], + "responses": { + "200": { + "description": "Successfully updated the detail of the linked workspace.", + "schema": { + "$ref": "#/definitions/LinkedWorkspace" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/MachineLearningServiceError" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.MachineLearningServices/workspaces/{workspaceName}/delinkWorkspace/{linkName}": { + "post": { + "tags": [ + "LinkedWorkspaces" + ], + "operationId": "LinkedWorkspaces_Delete", + "description": "Delete a linked workspace.", + "x-ms-examples": { + "DeleteLinkedWorkspace": { + "$ref": "./examples/deleteLinkedWorkspace.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/LinkName" + } + ], + "responses": { + "200": { + "description": "Successfully deleted the linked workspace." + }, + "204": { + "description": "Specific linked workspace not found." + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/MachineLearningServiceError" + } + } + } + } } }, "parameters": { @@ -1334,6 +1599,14 @@ "type": "string", "description": "The name of the private endpoint connection associated with the workspace", "x-ms-parameter-location": "method" + }, + "LinkName": { + "name": "linkName", + "in": "path", + "required": true, + "type": "string", + "description": "Friendly name of the linked workspace", + "x-ms-parameter-location": "method" } }, "definitions": { @@ -1500,6 +1773,91 @@ "$ref": "#/definitions/SharedPrivateLinkResource" }, "description": "The list of shared private link resources in this workspace." + }, + "linkedWorkspaces": { + "type": "object", + "description": "Dictionary that contains all linked workspaces in the AML workspace, with resourceId of the linked workspace as key.", + "additionalProperties": { + "$ref": "#/definitions/LinkedWorkspace" + } + } + } + }, + "LinkedWorkspace": { + "description": "Linked workspace.", + "type": "object", + "properties": { + "linkName": { + "type": "string", + "description": "Friendly name of the linked workspace." + }, + "linkType": { + "type": "string", + "enum": [ + "Synapse" + ], + "x-ms-enum": { + "name": "LinkType", + "modelAsString": true + }, + "readOnly": true, + "description": "The type of the linked workspace." + }, + "subscriptionId": { + "type": "string", + "description": "SubscriptionId of the target of the linked workspace." + }, + "resourceGroupName": { + "type": "string", + "description": "Resource group name of the target of the linked workspace." + }, + "providerNamespace": { + "type": "string", + "description": "Resource provider namespace of the target of the linked workspace." + }, + "resourceType": { + "type": "string", + "description": "Resource type of the target of the linked workspace." + }, + "workspaceName": { + "type": "string", + "description": "Resource name of the target of the linked workspace." + }, + "resourceId": { + "type": "string", + "description": "ResourceId of the target of the linked workspace." + }, + "userAssignedIdentityResourceId": { + "type": "string", + "description": "ResourceId of the user assigned identity that used to communicate with the linked workspace." + } + } + }, + "LinkedWorkspaceCreateDto": { + "type": "object", + "description": "object used for creating linked workspace.", + "properties": { + "linkName": { + "description": "Friendly name of the linked workspace", + "type": "string" + }, + "resourceId": { + "description": "ResourceId of the linked workspace", + "type": "string" + }, + "userAssignedIdentityResourceId": { + "description": "ResourceId of the user assigned identity for the linked workspace", + "type": "string" + } + } + }, + "LinkedWorkspaceUpdateDto": { + "type": "object", + "description": "object used for updating linked workspace.", + "properties": { + "userAssignedIdentityResourceId": { + "description": "ResourceId of the user assigned identity for the linked workspace", + "type": "string" } } }, @@ -1944,16 +2302,48 @@ "type": "string", "description": "The identity type.", "enum": [ - "SystemAssigned" + "SystemAssigned", + "SystemAssigned,UserAssigned" ], "x-ms-enum": { "name": "ResourceIdentityType", "modelAsString": false } + }, + "userAssignedIdentities": { + "$ref": "#/definitions/UserAssignedIdentities", + "description": "The user assigned identities associated with the resource." } }, "description": "Identity for the resource." }, + "UserAssignedIdentities": { + "description": "dictionary containing all the user assigned identities, with resourceId of the UAI as key.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/UserAssignedIdentity" + } + }, + "UserAssignedIdentity": { + "description": "User Assigned Identity", + "properties": { + "principalId": { + "readOnly": true, + "type": "string", + "description": "The principal ID of the user assigned identity." + }, + "tenantId": { + "readOnly": true, + "type": "string", + "description": "The tenant ID of the user assigned identity." + }, + "clientId": { + "readOnly": true, + "type": "string", + "description": "The clientId(aka appId) of the user assigned identity." + } + } + }, "Resource": { "description": "Azure Resource Manager resource envelope.", "x-ms-azure-resource": true,