diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/README.md b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/README.md index aff1277ef3692..073e6613d93c1 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/README.md +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/README.md @@ -37,8 +37,9 @@ az synapse workspace create \ ``` ### Authenticate the client -In order to interact with the Azure Synapse Analytics service, you'll need to create an instance of the [AccessControlClient](https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClient.cs) class. You need a **workspace endpoint**, which you may see as "Development endpoint" in the portal, - and **client secret credentials (client id, client secret, tenant id)** to instantiate a client object. +In order to interact with the Azure Synapse Analytics service, you'll need to create an instance of a [RoleAssignmentsClient](https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClient.cs) and/or a [RoleDefinitionsClient](https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClient.cs) class. + +You will also need a **workspace endpoint**, which you may see as "Development endpoint" in the portal, and **client secret credentials (client id, client secret, tenant id)** to instantiate a client object. Client secret credential authentication is being used in this getting started section but you can find more ways to authenticate with [Azure identity](https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/identity/Azure.Identity). To use the [DefaultAzureCredential](https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/identity/Azure.Identity#defaultazurecredential) provider shown below, or other credential providers provided with the Azure SDK, you should install the Azure.Identity package: @@ -49,8 +50,9 @@ Install-Package Azure.Identity ## Key concepts -### AccessControlClient -With a `AccessControlClient` you can get role assignments from the workspace, create new role assignments, and delete role assignments. +### RoleAssignmentsClient & RoleDefinitionsClient + +With a `RoleAssignmentsClient` you can create, update, and delete role assignments. With a `RoleDefinitionsClient` you can get role assignments from the workspace. ### Role Assignment The way you control access to Synapse resources is to create role assignments. A role assignment is the process of attaching a role definition to a user, group, service principal, or managed identity at a particular scope for the purpose of granting access. Access is granted by creating a role assignment, and access is revoked by removing a role assignment. @@ -67,13 +69,14 @@ The Azure.Analytics.Synapse.AccessControl package supports synchronous and async ### Create access control client -To interact with Azure Synapse, you need to instantiate a `AccessControlClient`. It requires an endpoint URL and a `TokenCredential`. +To interact with Azure Synapse, you need to instantiate a `RoleAssignmentsClient` and a `RoleDefinitionsClient`. It requires an endpoint URL and a `TokenCredential`. ```C# Snippet:CreateAccessControlClient // Replace the string below with your actual endpoint url. string endpoint = ""; -AccessControlClient client = new AccessControlClient(new Uri(endpoint), new DefaultAzureCredential()); +RoleAssignmentsClient roleAssignmentsClient = new RoleAssignmentsClient(new Uri(endpoint), new DefaultAzureCredential()); +RoleDefinitionsClient definitionsClient = new RoleDefinitionsClient(new Uri(endpoint), new DefaultAzureCredential()); ``` ### Create a role assignment @@ -81,19 +84,23 @@ AccessControlClient client = new AccessControlClient(new Uri(endpoint), new Defa First, you need to the determine the ID of the role you wish to assign, along with the ID of the principal you wish to assign that role. ```C# Snippet:PrepCreateRoleAssignment -Pageable roles = client.GetRoleDefinitions(); -SynapseRole role = roles.Single(role => role.Name == "Workspace Admin"); -string roleID = role.Id; +Response> roles = definitionsClient.ListRoleDefinitions(); +SynapseRoleDefinition role = roles.Value.Single(role => role.Name == "Workspace Admin"); +Guid roleId = role.Id.Value; + +string assignedScope = "workspaces/"; // Replace the string below with the ID you'd like to assign the role. -string principalId = ""; +Guid principalId = Guid.Parse(""); + +// Replace the string below with the ID of the assignment you'd like to use. +string assignmentId = ""; ``` -Then create an instance of `RoleAssignmentOptions` with the requested values. Finally call `CreateRoleAssignment` with the options to create the role assignment. +Then call `CreateRoleAssignment` with the options to create the role assignment. ```C# Snippet:CreateRoleAssignment -RoleAssignmentOptions request = new RoleAssignmentOptions(roleID, principalId); -Response response = client.CreateRoleAssignment(request); +Response response = roleAssignmentsClient.CreateRoleAssignment (assignmentId, roleId, principalId, assignedScope); RoleAssignmentDetails roleAssignmentAdded = response.Value; ``` @@ -102,17 +109,17 @@ RoleAssignmentDetails roleAssignmentAdded = response.Value; You can retrieve the details of a role assignment by calling `GetRoleAssignmentById`, passing in the assignment ID. ```C# Snippet:RetrieveRoleAssignment -RoleAssignmentDetails roleAssignment = client.GetRoleAssignmentById(roleAssignmentAdded.Id); -Console.WriteLine($"Role {roleAssignment.RoleId} is assigned to {roleAssignment.PrincipalId}."); +RoleAssignmentDetails roleAssignment = roleAssignmentsClient.GetRoleAssignmentById(roleAssignmentAdded.Id); +Console.WriteLine($"Role {roleAssignment.RoleDefinitionId} is assigned to {roleAssignment.PrincipalId}."); ``` ### List role assignments -To enumerate all role assignments in the Synapse workspace you can call `GetRoleAssignments`. +To enumerate all role assignments in the Synapse workspace you can call `ListRoleDefinitions`. ```C# Snippet:ListRoleAssignments -Response> roleAssignments = client.GetRoleAssignments(); -foreach (RoleAssignmentDetails assignment in roleAssignments.Value) +Response> roleAssignments = definitionsClient.ListRoleDefinitions(); +foreach (SynapseRoleDefinition assignment in roleAssignments.Value) { Console.WriteLine(assignment.Id); } @@ -123,7 +130,7 @@ foreach (RoleAssignmentDetails assignment in roleAssignments.Value) To delete a role assignment no longer needed you can call `DeleteRoleAssignmentById`, passing in the assignment ID. ```C# Snippet:DeleteRoleAssignment -client.DeleteRoleAssignmentById(roleAssignment.Id); +roleAssignmentsClient.DeleteRoleAssignmentById(roleAssignment.Id); ``` ## To build diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/api/Azure.Analytics.Synapse.AccessControl.netstandard2.0.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/api/Azure.Analytics.Synapse.AccessControl.netstandard2.0.cs index b99471028ab3b..5504d80a69cfd 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/api/Azure.Analytics.Synapse.AccessControl.netstandard2.0.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/api/Azure.Analytics.Synapse.AccessControl.netstandard2.0.cs @@ -1,60 +1,108 @@ namespace Azure.Analytics.Synapse.AccessControl { - public partial class AccessControlClient - { - protected AccessControlClient() { } - public AccessControlClient(System.Uri endpoint, Azure.Core.TokenCredential credential) { } - public AccessControlClient(System.Uri endpoint, Azure.Core.TokenCredential credential, Azure.Analytics.Synapse.AccessControl.AccessControlClientOptions options) { } - public virtual Azure.Response CreateRoleAssignment(Azure.Analytics.Synapse.AccessControl.Models.RoleAssignmentOptions createRoleAssignmentOptions, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task> CreateRoleAssignmentAsync(Azure.Analytics.Synapse.AccessControl.Models.RoleAssignmentOptions createRoleAssignmentOptions, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response DeleteRoleAssignmentById(string roleAssignmentId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response> GetCallerRoleAssignments(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task>> GetCallerRoleAssignmentsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public partial class RoleAssignmentsClient + { + protected RoleAssignmentsClient() { } + public RoleAssignmentsClient(System.Uri endpoint, Azure.Core.TokenCredential credential) { } + public RoleAssignmentsClient(System.Uri endpoint, Azure.Core.TokenCredential credential, Azure.Analytics.Synapse.AccessControl.RoleAssignmentsClientOptions options) { } + public virtual Azure.Response CheckPrincipalAccess(Azure.Analytics.Synapse.AccessControl.Models.SubjectInfo subject, System.Collections.Generic.IEnumerable actions, string scope, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> CheckPrincipalAccessAsync(Azure.Analytics.Synapse.AccessControl.Models.SubjectInfo subject, System.Collections.Generic.IEnumerable actions, string scope, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response CreateRoleAssignment(string roleAssignmentId, System.Guid roleId, System.Guid principalId, string scope, string principalType = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> CreateRoleAssignmentAsync(string roleAssignmentId, System.Guid roleId, System.Guid principalId, string scope, string principalType = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response DeleteRoleAssignmentById(string roleAssignmentId, string scope = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, string scope = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } public virtual Azure.Response GetRoleAssignmentById(string roleAssignmentId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } public virtual System.Threading.Tasks.Task> GetRoleAssignmentByIdAsync(string roleAssignmentId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response> GetRoleAssignments(string roleId = null, string principalId = null, string continuationToken = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task>> GetRoleAssignmentsAsync(string roleId = null, string principalId = null, string continuationToken = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response GetRoleDefinitionById(string roleId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task> GetRoleDefinitionByIdAsync(string roleId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Pageable GetRoleDefinitions(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.AsyncPageable GetRoleDefinitionsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response ListRoleAssignments(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> ListRoleAssignmentsAsync(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } } - public partial class AccessControlClientOptions : Azure.Core.ClientOptions + public partial class RoleAssignmentsClientOptions : Azure.Core.ClientOptions { - public AccessControlClientOptions(Azure.Analytics.Synapse.AccessControl.AccessControlClientOptions.ServiceVersion serviceVersion = Azure.Analytics.Synapse.AccessControl.AccessControlClientOptions.ServiceVersion.V2020_02_01_preview) { } + public RoleAssignmentsClientOptions(Azure.Analytics.Synapse.AccessControl.RoleAssignmentsClientOptions.ServiceVersion serviceVersion = Azure.Analytics.Synapse.AccessControl.RoleAssignmentsClientOptions.ServiceVersion.V2020_08_01_preview) { } public enum ServiceVersion { - V2020_02_01_preview = 1, + V2020_08_01_preview = 1, + } + } + public partial class RoleDefinitionsClient + { + protected RoleDefinitionsClient() { } + public RoleDefinitionsClient(System.Uri endpoint, Azure.Core.TokenCredential credential) { } + public RoleDefinitionsClient(System.Uri endpoint, Azure.Core.TokenCredential credential, Azure.Analytics.Synapse.AccessControl.RoleDefinitionsClientOptions options) { } + public virtual Azure.Response GetRoleDefinitionById(string roleDefinitionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> GetRoleDefinitionByIdAsync(string roleDefinitionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response> ListRoleDefinitions(bool? isBuiltIn = default(bool?), string scope = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task>> ListRoleDefinitionsAsync(bool? isBuiltIn = default(bool?), string scope = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response> ListScopes(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task>> ListScopesAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + } + public partial class RoleDefinitionsClientOptions : Azure.Core.ClientOptions + { + public RoleDefinitionsClientOptions(Azure.Analytics.Synapse.AccessControl.RoleDefinitionsClientOptions.ServiceVersion serviceVersion = Azure.Analytics.Synapse.AccessControl.RoleDefinitionsClientOptions.ServiceVersion.V2020_08_01_preview) { } + public enum ServiceVersion + { + V2020_08_01_preview = 1, } } } namespace Azure.Analytics.Synapse.AccessControl.Models { + public partial class CheckAccessDecision + { + internal CheckAccessDecision() { } + public string AccessDecision { get { throw null; } } + public string ActionId { get { throw null; } } + public Azure.Analytics.Synapse.AccessControl.Models.RoleAssignmentDetails RoleAssignment { get { throw null; } } + } + public partial class CheckPrincipalAccessResponse + { + internal CheckPrincipalAccessResponse() { } + public System.Collections.Generic.IReadOnlyList AccessDecisions { get { throw null; } } + } + public partial class RequiredAction + { + public RequiredAction(string id, bool isDataAction) { } + public string Id { get { throw null; } } + public bool IsDataAction { get { throw null; } } + } public partial class RoleAssignmentDetails { internal RoleAssignmentDetails() { } public string Id { get { throw null; } } - public string PrincipalId { get { throw null; } } - public string RoleId { get { throw null; } } + public System.Guid? PrincipalId { get { throw null; } } + public string PrincipalType { get { throw null; } } + public System.Guid? RoleDefinitionId { get { throw null; } } + public string Scope { get { throw null; } } } - public partial class RoleAssignmentOptions + public partial class RoleAssignmentDetailsList { - public RoleAssignmentOptions(string roleId, string principalId) { } - public string PrincipalId { get { throw null; } } - public string RoleId { get { throw null; } } + internal RoleAssignmentDetailsList() { } + public int? Count { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Value { get { throw null; } } } - public partial class RolesListResponse + public partial class SubjectInfo { - internal RolesListResponse() { } - public string NextLink { get { throw null; } } - public System.Collections.Generic.IReadOnlyList Value { get { throw null; } } + public SubjectInfo(System.Guid principalId) { } + public System.Collections.Generic.IList GroupIds { get { throw null; } } + public System.Guid PrincipalId { get { throw null; } } } - public partial class SynapseRole + public partial class SynapseRbacPermission { - internal SynapseRole() { } - public string Id { get { throw null; } } - public bool IsBuiltIn { get { throw null; } } + internal SynapseRbacPermission() { } + public System.Collections.Generic.IReadOnlyList Actions { get { throw null; } } + public System.Collections.Generic.IReadOnlyList DataActions { get { throw null; } } + public System.Collections.Generic.IReadOnlyList NotActions { get { throw null; } } + public System.Collections.Generic.IReadOnlyList NotDataActions { get { throw null; } } + } + public partial class SynapseRoleDefinition + { + internal SynapseRoleDefinition() { } + public string AvailabilityStatus { get { throw null; } } + public string Description { get { throw null; } } + public System.Guid? Id { get { throw null; } } + public bool? IsBuiltIn { get { throw null; } } public string Name { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Permissions { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Scopes { get { throw null; } } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/samples/Sample1_HelloWorld.md b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/samples/Sample1_HelloWorld.md index b7da365ad14c4..f50dc3c0c799a 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/samples/Sample1_HelloWorld.md +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/samples/Sample1_HelloWorld.md @@ -10,7 +10,8 @@ To interact with Azure Synapse, you need to instantiate a `AccessControlClient`. // Replace the string below with your actual endpoint url. string endpoint = ""; -AccessControlClient client = new AccessControlClient(new Uri(endpoint), new DefaultAzureCredential()); +RoleAssignmentsClient roleAssignmentsClient = new RoleAssignmentsClient(new Uri(endpoint), new DefaultAzureCredential()); +RoleDefinitionsClient definitionsClient = new RoleDefinitionsClient(new Uri(endpoint), new DefaultAzureCredential()); ``` ## Create a role assignment @@ -18,19 +19,23 @@ AccessControlClient client = new AccessControlClient(new Uri(endpoint), new Defa First, you need to the determine the ID of the role you wish to assign, along with the ID of the principal you wish to assign that role. ```C# Snippet:PrepCreateRoleAssignment -Pageable roles = client.GetRoleDefinitions(); -SynapseRole role = roles.Single(role => role.Name == "Workspace Admin"); -string roleID = role.Id; +Response> roles = definitionsClient.ListRoleDefinitions(); +SynapseRoleDefinition role = roles.Value.Single(role => role.Name == "Workspace Admin"); +Guid roleId = role.Id.Value; + +string assignedScope = "workspaces/"; // Replace the string below with the ID you'd like to assign the role. -string principalId = ""; +Guid principalId = Guid.Parse(""); + +// Replace the string below with the ID of the assignment you'd like to use. +string assignmentId = ""; ``` Then create an instance of `RoleAssignmentOptions` with the requested values. Finally call `CreateRoleAssignment` with the options to create the role assignment. ```C# Snippet:CreateRoleAssignment -RoleAssignmentOptions request = new RoleAssignmentOptions(roleID, principalId); -Response response = client.CreateRoleAssignment(request); +Response response = roleAssignmentsClient.CreateRoleAssignment (assignmentId, roleId, principalId, assignedScope); RoleAssignmentDetails roleAssignmentAdded = response.Value; ``` @@ -39,8 +44,8 @@ RoleAssignmentDetails roleAssignmentAdded = response.Value; To retrieve the details of assignment call `GetRoleAssignmentById`, passing in the assignment ID. ```C# Snippet:RetrieveRoleAssignment -RoleAssignmentDetails roleAssignment = client.GetRoleAssignmentById(roleAssignmentAdded.Id); -Console.WriteLine($"Role {roleAssignment.RoleId} is assigned to {roleAssignment.PrincipalId}."); +RoleAssignmentDetails roleAssignment = roleAssignmentsClient.GetRoleAssignmentById(roleAssignmentAdded.Id); +Console.WriteLine($"Role {roleAssignment.RoleDefinitionId} is assigned to {roleAssignment.PrincipalId}."); ``` ## List role assignments @@ -48,8 +53,8 @@ Console.WriteLine($"Role {roleAssignment.RoleId} is assigned to {roleAssignment. To enumerate all role assignments in the Synapse workspace call `GetRoleAssignments`. ```C# Snippet:ListRoleAssignments -Response> roleAssignments = client.GetRoleAssignments(); -foreach (RoleAssignmentDetails assignment in roleAssignments.Value) +Response> roleAssignments = definitionsClient.ListRoleDefinitions(); +foreach (SynapseRoleDefinition assignment in roleAssignments.Value) { Console.WriteLine(assignment.Id); } @@ -60,5 +65,5 @@ foreach (RoleAssignmentDetails assignment in roleAssignments.Value) To delete a role assignment no longer needed you can call `DeleteRoleAssignmentById`, passing in the assignment ID. ```C# Snippet:DeleteRoleAssignment -client.DeleteRoleAssignmentById(roleAssignment.Id); +roleAssignmentsClient.DeleteRoleAssignmentById(roleAssignment.Id); ``` diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClient.cs similarity index 53% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClient.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClient.cs index 3d129c863d593..dba5f9a636676 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClient.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClient.cs @@ -7,20 +7,20 @@ namespace Azure.Analytics.Synapse.AccessControl { - public partial class AccessControlClient + public partial class RoleAssignmentsClient { /// - /// Initializes a new instance of the . + /// Initializes a new instance of the . /// - public AccessControlClient(Uri endpoint, TokenCredential credential) - : this(endpoint, credential, AccessControlClientOptions.Default) + public RoleAssignmentsClient(Uri endpoint, TokenCredential credential) + : this(endpoint, credential, RoleAssignmentsClientOptions.Default) { } /// - /// Initializes a new instance of the . + /// Initializes a new instance of the . /// - public AccessControlClient(Uri endpoint, TokenCredential credential, AccessControlClientOptions options) + public RoleAssignmentsClient(Uri endpoint, TokenCredential credential, RoleAssignmentsClientOptions options) : this(new ClientDiagnostics(options), SynapseClientPipeline.Build(options, credential), endpoint.ToString(), diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClientOptions.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClientOptions.cs similarity index 61% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClientOptions.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClientOptions.cs index 418c5bd75ffb3..229152e87921c 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/AccessControlClientOptions.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleAssignmentsClientOptions.cs @@ -7,22 +7,22 @@ namespace Azure.Analytics.Synapse.AccessControl { /// - /// The options for . + /// The options for . /// - public class AccessControlClientOptions : ClientOptions + public class RoleAssignmentsClientOptions : ClientOptions { - private const ServiceVersion Latest = ServiceVersion.V2020_02_01_preview; + private const ServiceVersion Latest = ServiceVersion.V2020_08_01_preview; - internal static AccessControlClientOptions Default { get; } = new AccessControlClientOptions(); + internal static RoleAssignmentsClientOptions Default { get; } = new RoleAssignmentsClientOptions(); /// - /// Initializes a new instance of the . + /// Initializes a new instance of the . /// - public AccessControlClientOptions(ServiceVersion serviceVersion = Latest) + public RoleAssignmentsClientOptions(ServiceVersion serviceVersion = Latest) { VersionString = serviceVersion switch { - ServiceVersion.V2020_02_01_preview => "2020-02-01-preview", + ServiceVersion.V2020_08_01_preview => "2020-08-01-preview", _ => throw new ArgumentOutOfRangeException(nameof(serviceVersion)) }; } @@ -38,10 +38,10 @@ public AccessControlClientOptions(ServiceVersion serviceVersion = Latest) public enum ServiceVersion { /// - /// The 2019-06-01-preview of the template service. + /// The 2020-08-01-preview of the template service. /// #pragma warning disable CA1707 - V2020_02_01_preview = 1 + V2020_08_01_preview = 1 #pragma warning restore CA1707 } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClient.cs new file mode 100644 index 0000000000000..5965b9ca40f4d --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClient.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.AccessControl +{ + public partial class RoleDefinitionsClient + { + /// + /// Initializes a new instance of the . + /// + public RoleDefinitionsClient(Uri endpoint, TokenCredential credential) + : this(endpoint, credential, RoleDefinitionsClientOptions.Default) + { + } + + /// + /// Initializes a new instance of the . + /// + public RoleDefinitionsClient(Uri endpoint, TokenCredential credential, RoleDefinitionsClientOptions options) + : this(new ClientDiagnostics(options), + SynapseClientPipeline.Build(options, credential), + endpoint.ToString(), + options.VersionString) + { + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClientOptions.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClientOptions.cs new file mode 100644 index 0000000000000..81a7848cba064 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Customization/RoleDefinitionsClientOptions.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Azure.Core; +using System; + +namespace Azure.Analytics.Synapse.AccessControl +{ + /// + /// The options for . + /// + public class RoleDefinitionsClientOptions : ClientOptions + { + private const ServiceVersion Latest = ServiceVersion.V2020_08_01_preview; + + internal static RoleDefinitionsClientOptions Default { get; } = new RoleDefinitionsClientOptions(); + + /// + /// Initializes a new instance of the . + /// + public RoleDefinitionsClientOptions(ServiceVersion serviceVersion = Latest) + { + VersionString = serviceVersion switch + { + ServiceVersion.V2020_08_01_preview => "2020-08-01-preview", + _ => throw new ArgumentOutOfRangeException(nameof(serviceVersion)) + }; + } + + /// + /// API version for Azure Synapse Access Control service. + /// + internal string VersionString { get; } + + /// + /// The Synapse service version. + /// + public enum ServiceVersion + { + /// + /// The 2020-08-01-preview of the template service. + /// +#pragma warning disable CA1707 + V2020_08_01_preview = 1 +#pragma warning restore CA1707 + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlClient.cs deleted file mode 100644 index 4999c141c443a..0000000000000 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlClient.cs +++ /dev/null @@ -1,333 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Azure; -using Azure.Analytics.Synapse.AccessControl.Models; -using Azure.Core; -using Azure.Core.Pipeline; - -namespace Azure.Analytics.Synapse.AccessControl -{ - /// The AccessControl service client. - public partial class AccessControlClient - { - private readonly ClientDiagnostics _clientDiagnostics; - private readonly HttpPipeline _pipeline; - internal AccessControlRestClient RestClient { get; } - /// Initializes a new instance of AccessControlClient for mocking. - protected AccessControlClient() - { - } - /// Initializes a new instance of AccessControlClient. - /// The handler for diagnostic messaging in the client. - /// The HTTP pipeline for sending and receiving REST requests and responses. - /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. - /// Api Version. - internal AccessControlClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-02-01-preview") - { - RestClient = new AccessControlRestClient(clientDiagnostics, pipeline, endpoint, apiVersion); - _clientDiagnostics = clientDiagnostics; - _pipeline = pipeline; - } - - /// Create role assignment. - /// Details of role id and object id. - /// The cancellation token to use. - public virtual async Task> CreateRoleAssignmentAsync(RoleAssignmentOptions createRoleAssignmentOptions, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.CreateRoleAssignment"); - scope.Start(); - try - { - return await RestClient.CreateRoleAssignmentAsync(createRoleAssignmentOptions, cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Create role assignment. - /// Details of role id and object id. - /// The cancellation token to use. - public virtual Response CreateRoleAssignment(RoleAssignmentOptions createRoleAssignmentOptions, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.CreateRoleAssignment"); - scope.Start(); - try - { - return RestClient.CreateRoleAssignment(createRoleAssignmentOptions, cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// List role assignments. - /// Synapse Built-In Role Id. - /// Object ID of the AAD principal or security-group. - /// Continuation token. - /// The cancellation token to use. - public virtual async Task>> GetRoleAssignmentsAsync(string roleId = null, string principalId = null, string continuationToken = null, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleAssignments"); - scope.Start(); - try - { - return await RestClient.GetRoleAssignmentsAsync(roleId, principalId, continuationToken, cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// List role assignments. - /// Synapse Built-In Role Id. - /// Object ID of the AAD principal or security-group. - /// Continuation token. - /// The cancellation token to use. - public virtual Response> GetRoleAssignments(string roleId = null, string principalId = null, string continuationToken = null, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleAssignments"); - scope.Start(); - try - { - return RestClient.GetRoleAssignments(roleId, principalId, continuationToken, cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Get role assignment by role assignment Id. - /// The ID of the role assignment. - /// The cancellation token to use. - public virtual async Task> GetRoleAssignmentByIdAsync(string roleAssignmentId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleAssignmentById"); - scope.Start(); - try - { - return await RestClient.GetRoleAssignmentByIdAsync(roleAssignmentId, cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Get role assignment by role assignment Id. - /// The ID of the role assignment. - /// The cancellation token to use. - public virtual Response GetRoleAssignmentById(string roleAssignmentId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleAssignmentById"); - scope.Start(); - try - { - return RestClient.GetRoleAssignmentById(roleAssignmentId, cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Delete role assignment by role assignment Id. - /// The ID of the role assignment. - /// The cancellation token to use. - public virtual async Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.DeleteRoleAssignmentById"); - scope.Start(); - try - { - return await RestClient.DeleteRoleAssignmentByIdAsync(roleAssignmentId, cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Delete role assignment by role assignment Id. - /// The ID of the role assignment. - /// The cancellation token to use. - public virtual Response DeleteRoleAssignmentById(string roleAssignmentId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.DeleteRoleAssignmentById"); - scope.Start(); - try - { - return RestClient.DeleteRoleAssignmentById(roleAssignmentId, cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// List role assignments of the caller. - /// The cancellation token to use. - public virtual async Task>> GetCallerRoleAssignmentsAsync(CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetCallerRoleAssignments"); - scope.Start(); - try - { - return await RestClient.GetCallerRoleAssignmentsAsync(cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// List role assignments of the caller. - /// The cancellation token to use. - public virtual Response> GetCallerRoleAssignments(CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetCallerRoleAssignments"); - scope.Start(); - try - { - return RestClient.GetCallerRoleAssignments(cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Get role by role Id. - /// Synapse Built-In Role Id. - /// The cancellation token to use. - public virtual async Task> GetRoleDefinitionByIdAsync(string roleId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitionById"); - scope.Start(); - try - { - return await RestClient.GetRoleDefinitionByIdAsync(roleId, cancellationToken).ConfigureAwait(false); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// Get role by role Id. - /// Synapse Built-In Role Id. - /// The cancellation token to use. - public virtual Response GetRoleDefinitionById(string roleId, CancellationToken cancellationToken = default) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitionById"); - scope.Start(); - try - { - return RestClient.GetRoleDefinitionById(roleId, cancellationToken); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - - /// List roles. - /// The cancellation token to use. - public virtual AsyncPageable GetRoleDefinitionsAsync(CancellationToken cancellationToken = default) - { - async Task> FirstPageFunc(int? pageSizeHint) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitions"); - scope.Start(); - try - { - var response = await RestClient.GetRoleDefinitionsAsync(cancellationToken).ConfigureAwait(false); - return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - async Task> NextPageFunc(string nextLink, int? pageSizeHint) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitions"); - scope.Start(); - try - { - var response = await RestClient.GetRoleDefinitionsNextPageAsync(nextLink, cancellationToken).ConfigureAwait(false); - return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - return PageableHelpers.CreateAsyncEnumerable(FirstPageFunc, NextPageFunc); - } - - /// List roles. - /// The cancellation token to use. - public virtual Pageable GetRoleDefinitions(CancellationToken cancellationToken = default) - { - Page FirstPageFunc(int? pageSizeHint) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitions"); - scope.Start(); - try - { - var response = RestClient.GetRoleDefinitions(cancellationToken); - return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - Page NextPageFunc(string nextLink, int? pageSizeHint) - { - using var scope = _clientDiagnostics.CreateScope("AccessControlClient.GetRoleDefinitions"); - scope.Start(); - try - { - var response = RestClient.GetRoleDefinitionsNextPage(nextLink, cancellationToken); - return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); - } - catch (Exception e) - { - scope.Failed(e); - throw; - } - } - return PageableHelpers.CreateEnumerable(FirstPageFunc, NextPageFunc); - } - } -} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.Serialization.cs new file mode 100644 index 0000000000000..92d2c1394b45c --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.Serialization.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class CheckAccessDecision + { + internal static CheckAccessDecision DeserializeCheckAccessDecision(JsonElement element) + { + Optional accessDecision = default; + Optional actionId = default; + Optional roleAssignment = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("accessDecision")) + { + accessDecision = property.Value.GetString(); + continue; + } + if (property.NameEquals("actionId")) + { + actionId = property.Value.GetString(); + continue; + } + if (property.NameEquals("roleAssignment")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + roleAssignment = RoleAssignmentDetails.DeserializeRoleAssignmentDetails(property.Value); + continue; + } + } + return new CheckAccessDecision(accessDecision.Value, actionId.Value, roleAssignment.Value); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.cs new file mode 100644 index 0000000000000..dd571219fdfd2 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckAccessDecision.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Check access response details. + public partial class CheckAccessDecision + { + /// Initializes a new instance of CheckAccessDecision. + internal CheckAccessDecision() + { + } + + /// Initializes a new instance of CheckAccessDecision. + /// Access Decision. + /// Action Id. + /// Role Assignment response details. + internal CheckAccessDecision(string accessDecision, string actionId, RoleAssignmentDetails roleAssignment) + { + AccessDecision = accessDecision; + ActionId = actionId; + RoleAssignment = roleAssignment; + } + + /// Access Decision. + public string AccessDecision { get; } + /// Action Id. + public string ActionId { get; } + /// Role Assignment response details. + public RoleAssignmentDetails RoleAssignment { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.Serialization.cs new file mode 100644 index 0000000000000..dac7c03634222 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.Serialization.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + internal partial class CheckPrincipalAccessRequest : IUtf8JsonSerializable + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) + { + writer.WriteStartObject(); + writer.WritePropertyName("subject"); + writer.WriteObjectValue(Subject); + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + foreach (var item in Actions) + { + writer.WriteObjectValue(item); + } + writer.WriteEndArray(); + writer.WritePropertyName("scope"); + writer.WriteStringValue(Scope); + writer.WriteEndObject(); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.cs new file mode 100644 index 0000000000000..35bbb2d41230b --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessRequest.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Check access request details. + internal partial class CheckPrincipalAccessRequest + { + /// Initializes a new instance of CheckPrincipalAccessRequest. + /// Subject details. + /// List of actions. + /// Scope at which the check access is done. + /// , , or is null. + public CheckPrincipalAccessRequest(SubjectInfo subject, IEnumerable actions, string scope) + { + if (subject == null) + { + throw new ArgumentNullException(nameof(subject)); + } + if (actions == null) + { + throw new ArgumentNullException(nameof(actions)); + } + if (scope == null) + { + throw new ArgumentNullException(nameof(scope)); + } + + Subject = subject; + Actions = actions.ToList(); + Scope = scope; + } + + /// Subject details. + public SubjectInfo Subject { get; } + /// List of actions. + public IList Actions { get; } + /// Scope at which the check access is done. + public string Scope { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.Serialization.cs new file mode 100644 index 0000000000000..6d0fb2ae0aa38 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.Serialization.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class CheckPrincipalAccessResponse + { + internal static CheckPrincipalAccessResponse DeserializeCheckPrincipalAccessResponse(JsonElement element) + { + Optional> accessDecisions = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("AccessDecisions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(CheckAccessDecision.DeserializeCheckAccessDecision(item)); + } + accessDecisions = array; + continue; + } + } + return new CheckPrincipalAccessResponse(Optional.ToList(accessDecisions)); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.cs new file mode 100644 index 0000000000000..374d4c2ab54cf --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/CheckPrincipalAccessResponse.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Check access response details. + public partial class CheckPrincipalAccessResponse + { + /// Initializes a new instance of CheckPrincipalAccessResponse. + internal CheckPrincipalAccessResponse() + { + AccessDecisions = new ChangeTrackingList(); + } + + /// Initializes a new instance of CheckPrincipalAccessResponse. + /// To check if the current user, group, or service principal has permission to read artifacts in the specified workspace. + internal CheckPrincipalAccessResponse(IReadOnlyList accessDecisions) + { + AccessDecisions = accessDecisions; + } + + /// To check if the current user, group, or service principal has permission to read artifacts in the specified workspace. + public IReadOnlyList AccessDecisions { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.Serialization.cs new file mode 100644 index 0000000000000..fb9923e1c8adf --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.Serialization.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class RequiredAction : IUtf8JsonSerializable + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) + { + writer.WriteStartObject(); + writer.WritePropertyName("id"); + writer.WriteStringValue(Id); + writer.WritePropertyName("isDataAction"); + writer.WriteBooleanValue(IsDataAction); + writer.WriteEndObject(); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.cs new file mode 100644 index 0000000000000..4661ac9aa8936 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RequiredAction.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Action Info. + public partial class RequiredAction + { + /// Initializes a new instance of RequiredAction. + /// Action Id. + /// Is a data action or not. + /// is null. + public RequiredAction(string id, bool isDataAction) + { + if (id == null) + { + throw new ArgumentNullException(nameof(id)); + } + + Id = id; + IsDataAction = isDataAction; + } + + /// Action Id. + public string Id { get; } + /// Is a data action or not. + public bool IsDataAction { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.Serialization.cs index e3425f64bb6e6..9641eae35a629 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.Serialization.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.Serialization.cs @@ -5,6 +5,7 @@ #nullable disable +using System; using System.Text.Json; using Azure.Core; @@ -15,8 +16,10 @@ public partial class RoleAssignmentDetails internal static RoleAssignmentDetails DeserializeRoleAssignmentDetails(JsonElement element) { Optional id = default; - Optional roleId = default; - Optional principalId = default; + Optional roleDefinitionId = default; + Optional principalId = default; + Optional scope = default; + Optional principalType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("id")) @@ -24,18 +27,38 @@ internal static RoleAssignmentDetails DeserializeRoleAssignmentDetails(JsonEleme id = property.Value.GetString(); continue; } - if (property.NameEquals("roleId")) + if (property.NameEquals("roleDefinitionId")) { - roleId = property.Value.GetString(); + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + roleDefinitionId = property.Value.GetGuid(); continue; } if (property.NameEquals("principalId")) { - principalId = property.Value.GetString(); + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + principalId = property.Value.GetGuid(); + continue; + } + if (property.NameEquals("scope")) + { + scope = property.Value.GetString(); + continue; + } + if (property.NameEquals("principalType")) + { + principalType = property.Value.GetString(); continue; } } - return new RoleAssignmentDetails(id.Value, roleId.Value, principalId.Value); + return new RoleAssignmentDetails(id.Value, Optional.ToNullable(roleDefinitionId), Optional.ToNullable(principalId), scope.Value, principalType.Value); } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.cs index 0a30931459268..f2a675054284e 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetails.cs @@ -5,6 +5,8 @@ #nullable disable +using System; + namespace Azure.Analytics.Synapse.AccessControl.Models { /// Role Assignment response details. @@ -17,20 +19,28 @@ internal RoleAssignmentDetails() /// Initializes a new instance of RoleAssignmentDetails. /// Role Assignment ID. - /// Role ID of the Synapse Built-In Role. + /// Role ID of the Synapse Built-In Role. /// Object ID of the AAD principal or security-group. - internal RoleAssignmentDetails(string id, string roleId, string principalId) + /// Scope at the role assignment is created. + /// Type of the principal Id: User, Group or ServicePrincipal. + internal RoleAssignmentDetails(string id, Guid? roleDefinitionId, Guid? principalId, string scope, string principalType) { Id = id; - RoleId = roleId; + RoleDefinitionId = roleDefinitionId; PrincipalId = principalId; + Scope = scope; + PrincipalType = principalType; } /// Role Assignment ID. public string Id { get; } /// Role ID of the Synapse Built-In Role. - public string RoleId { get; } + public Guid? RoleDefinitionId { get; } /// Object ID of the AAD principal or security-group. - public string PrincipalId { get; } + public Guid? PrincipalId { get; } + /// Scope at the role assignment is created. + public string Scope { get; } + /// Type of the principal Id: User, Group or ServicePrincipal. + public string PrincipalType { get; } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.Serialization.cs new file mode 100644 index 0000000000000..d8f3f5f940961 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.Serialization.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class RoleAssignmentDetailsList + { + internal static RoleAssignmentDetailsList DeserializeRoleAssignmentDetailsList(JsonElement element) + { + Optional count = default; + Optional> value = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("count")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + count = property.Value.GetInt32(); + continue; + } + if (property.NameEquals("value")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(RoleAssignmentDetails.DeserializeRoleAssignmentDetails(item)); + } + value = array; + continue; + } + } + return new RoleAssignmentDetailsList(Optional.ToNullable(count), Optional.ToList(value)); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.cs new file mode 100644 index 0000000000000..a38abc8593eb5 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentDetailsList.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Role Assignment response details. + public partial class RoleAssignmentDetailsList + { + /// Initializes a new instance of RoleAssignmentDetailsList. + internal RoleAssignmentDetailsList() + { + Value = new ChangeTrackingList(); + } + + /// Initializes a new instance of RoleAssignmentDetailsList. + /// Number of role assignments. + /// A list of role assignments. + internal RoleAssignmentDetailsList(int? count, IReadOnlyList value) + { + Count = count; + Value = value; + } + + /// Number of role assignments. + public int? Count { get; } + /// A list of role assignments. + public IReadOnlyList Value { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.Serialization.cs similarity index 62% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.Serialization.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.Serialization.cs index 0dfa9a4db4105..1569c67da0820 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.Serialization.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.Serialization.cs @@ -10,7 +10,7 @@ namespace Azure.Analytics.Synapse.AccessControl.Models { - public partial class RoleAssignmentOptions : IUtf8JsonSerializable + internal partial class RoleAssignmentRequest : IUtf8JsonSerializable { void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { @@ -19,6 +19,13 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WriteStringValue(RoleId); writer.WritePropertyName("principalId"); writer.WriteStringValue(PrincipalId); + writer.WritePropertyName("scope"); + writer.WriteStringValue(Scope); + if (Optional.IsDefined(PrincipalType)) + { + writer.WritePropertyName("principalType"); + writer.WriteStringValue(PrincipalType); + } writer.WriteEndObject(); } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.cs similarity index 54% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.cs index b8804ff674325..112caba12217f 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentOptions.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RoleAssignmentRequest.cs @@ -10,30 +10,32 @@ namespace Azure.Analytics.Synapse.AccessControl.Models { /// Role Assignment request details. - public partial class RoleAssignmentOptions + internal partial class RoleAssignmentRequest { - /// Initializes a new instance of RoleAssignmentOptions. + /// Initializes a new instance of RoleAssignmentRequest. /// Role ID of the Synapse Built-In Role. /// Object ID of the AAD principal or security-group. - /// or is null. - public RoleAssignmentOptions(string roleId, string principalId) + /// Scope at which the role assignment is created. + /// is null. + public RoleAssignmentRequest(Guid roleId, Guid principalId, string scope) { - if (roleId == null) + if (scope == null) { - throw new ArgumentNullException(nameof(roleId)); - } - if (principalId == null) - { - throw new ArgumentNullException(nameof(principalId)); + throw new ArgumentNullException(nameof(scope)); } RoleId = roleId; PrincipalId = principalId; + Scope = scope; } /// Role ID of the Synapse Built-In Role. - public string RoleId { get; } + public Guid RoleId { get; } /// Object ID of the AAD principal or security-group. - public string PrincipalId { get; } + public Guid PrincipalId { get; } + /// Scope at which the role assignment is created. + public string Scope { get; } + /// Type of the principal Id: User, Group or ServicePrincipal. + public string PrincipalType { get; set; } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.Serialization.cs new file mode 100644 index 0000000000000..c7e3a7dd11038 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.Serialization.cs @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class SubjectInfo : IUtf8JsonSerializable + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) + { + writer.WriteStartObject(); + writer.WritePropertyName("principalId"); + writer.WriteStringValue(PrincipalId); + if (Optional.IsCollectionDefined(GroupIds)) + { + writer.WritePropertyName("groupIds"); + writer.WriteStartArray(); + foreach (var item in GroupIds) + { + writer.WriteStringValue(item); + } + writer.WriteEndArray(); + } + writer.WriteEndObject(); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.cs new file mode 100644 index 0000000000000..81f228090d635 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SubjectInfo.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Subject details. + public partial class SubjectInfo + { + /// Initializes a new instance of SubjectInfo. + /// Principal Id. + public SubjectInfo(Guid principalId) + { + PrincipalId = principalId; + GroupIds = new ChangeTrackingList(); + } + + /// Principal Id. + public Guid PrincipalId { get; } + /// List of group Ids that the principalId is part of. + public IList GroupIds { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.Serialization.cs new file mode 100644 index 0000000000000..74949e8ffc23f --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.Serialization.cs @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class SynapseRbacPermission + { + internal static SynapseRbacPermission DeserializeSynapseRbacPermission(JsonElement element) + { + Optional> actions = default; + Optional> notActions = default; + Optional> dataActions = default; + Optional> notDataActions = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("actions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + actions = array; + continue; + } + if (property.NameEquals("notActions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + notActions = array; + continue; + } + if (property.NameEquals("dataActions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + dataActions = array; + continue; + } + if (property.NameEquals("notDataActions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + notDataActions = array; + continue; + } + } + return new SynapseRbacPermission(Optional.ToList(actions), Optional.ToList(notActions), Optional.ToList(dataActions), Optional.ToList(notDataActions)); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.cs new file mode 100644 index 0000000000000..5b54c4e920e3e --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRbacPermission.cs @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Synapse role definition details. + public partial class SynapseRbacPermission + { + /// Initializes a new instance of SynapseRbacPermission. + internal SynapseRbacPermission() + { + Actions = new ChangeTrackingList(); + NotActions = new ChangeTrackingList(); + DataActions = new ChangeTrackingList(); + NotDataActions = new ChangeTrackingList(); + } + + /// Initializes a new instance of SynapseRbacPermission. + /// List of actions. + /// List of Not actions. + /// List of data actions. + /// List of Not data actions. + internal SynapseRbacPermission(IReadOnlyList actions, IReadOnlyList notActions, IReadOnlyList dataActions, IReadOnlyList notDataActions) + { + Actions = actions; + NotActions = notActions; + DataActions = dataActions; + NotDataActions = notDataActions; + } + + /// List of actions. + public IReadOnlyList Actions { get; } + /// List of Not actions. + public IReadOnlyList NotActions { get; } + /// List of data actions. + public IReadOnlyList DataActions { get; } + /// List of Not data actions. + public IReadOnlyList NotDataActions { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.Serialization.cs deleted file mode 100644 index d66c1963e4dea..0000000000000 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.Serialization.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Analytics.Synapse.AccessControl.Models -{ - public partial class SynapseRole - { - internal static SynapseRole DeserializeSynapseRole(JsonElement element) - { - Optional id = default; - Optional name = default; - bool isBuiltIn = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("id")) - { - id = property.Value.GetString(); - continue; - } - if (property.NameEquals("name")) - { - name = property.Value.GetString(); - continue; - } - if (property.NameEquals("isBuiltIn")) - { - isBuiltIn = property.Value.GetBoolean(); - continue; - } - } - return new SynapseRole(id.Value, name.Value, isBuiltIn); - } - } -} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.cs deleted file mode 100644 index 6ffbd4bb19786..0000000000000 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRole.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Analytics.Synapse.AccessControl.Models -{ - /// Synapse role details. - public partial class SynapseRole - { - /// Initializes a new instance of SynapseRole. - /// Is a built-in role or not. - internal SynapseRole(bool isBuiltIn) - { - IsBuiltIn = isBuiltIn; - } - - /// Initializes a new instance of SynapseRole. - /// Role ID. - /// Name of the Synapse role. - /// Is a built-in role or not. - internal SynapseRole(string id, string name, bool isBuiltIn) - { - Id = id; - Name = name; - IsBuiltIn = isBuiltIn; - } - - /// Role ID. - public string Id { get; } - /// Name of the Synapse role. - public string Name { get; } - /// Is a built-in role or not. - public bool IsBuiltIn { get; } - } -} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.Serialization.cs new file mode 100644 index 0000000000000..e9ac515279c22 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.Serialization.cs @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + public partial class SynapseRoleDefinition + { + internal static SynapseRoleDefinition DeserializeSynapseRoleDefinition(JsonElement element) + { + Optional id = default; + Optional name = default; + Optional isBuiltIn = default; + Optional description = default; + Optional> permissions = default; + Optional> scopes = default; + Optional availabilityStatus = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("id")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + id = property.Value.GetGuid(); + continue; + } + if (property.NameEquals("name")) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("isBuiltIn")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + isBuiltIn = property.Value.GetBoolean(); + continue; + } + if (property.NameEquals("description")) + { + description = property.Value.GetString(); + continue; + } + if (property.NameEquals("permissions")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(SynapseRbacPermission.DeserializeSynapseRbacPermission(item)); + } + permissions = array; + continue; + } + if (property.NameEquals("scopes")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(item.GetString()); + } + scopes = array; + continue; + } + if (property.NameEquals("availabilityStatus")) + { + availabilityStatus = property.Value.GetString(); + continue; + } + } + return new SynapseRoleDefinition(Optional.ToNullable(id), name.Value, Optional.ToNullable(isBuiltIn), description.Value, Optional.ToList(permissions), Optional.ToList(scopes), availabilityStatus.Value); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.cs new file mode 100644 index 0000000000000..97371237eaa3c --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/SynapseRoleDefinition.cs @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.AccessControl.Models +{ + /// Synapse role definition details. + public partial class SynapseRoleDefinition + { + /// Initializes a new instance of SynapseRoleDefinition. + internal SynapseRoleDefinition() + { + Permissions = new ChangeTrackingList(); + Scopes = new ChangeTrackingList(); + } + + /// Initializes a new instance of SynapseRoleDefinition. + /// Role Definition ID. + /// Name of the Synapse role. + /// Is a built-in role or not. + /// Description for the Synapse role. + /// Permissions for the Synapse role. + /// Allowed scopes for the Synapse role. + /// Availability of the Synapse role. + internal SynapseRoleDefinition(Guid? id, string name, bool? isBuiltIn, string description, IReadOnlyList permissions, IReadOnlyList scopes, string availabilityStatus) + { + Id = id; + Name = name; + IsBuiltIn = isBuiltIn; + Description = description; + Permissions = permissions; + Scopes = scopes; + AvailabilityStatus = availabilityStatus; + } + + /// Role Definition ID. + public Guid? Id { get; } + /// Name of the Synapse role. + public string Name { get; } + /// Is a built-in role or not. + public bool? IsBuiltIn { get; } + /// Description for the Synapse role. + public string Description { get; } + /// Permissions for the Synapse role. + public IReadOnlyList Permissions { get; } + /// Allowed scopes for the Synapse role. + public IReadOnlyList Scopes { get; } + /// Availability of the Synapse role. + public string AvailabilityStatus { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsClient.cs new file mode 100644 index 0000000000000..a32d3608a5c27 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsClient.cs @@ -0,0 +1,240 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Analytics.Synapse.AccessControl.Models; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.AccessControl +{ + /// The RoleAssignments service client. + public partial class RoleAssignmentsClient + { + private readonly ClientDiagnostics _clientDiagnostics; + private readonly HttpPipeline _pipeline; + internal RoleAssignmentsRestClient RestClient { get; } + /// Initializes a new instance of RoleAssignmentsClient for mocking. + protected RoleAssignmentsClient() + { + } + /// Initializes a new instance of RoleAssignmentsClient. + /// The handler for diagnostic messaging in the client. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. + /// Api Version. + internal RoleAssignmentsClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-08-01-preview") + { + RestClient = new RoleAssignmentsRestClient(clientDiagnostics, pipeline, endpoint, apiVersion); + _clientDiagnostics = clientDiagnostics; + _pipeline = pipeline; + } + + /// List role assignments. + /// Synapse Built-In Role Id. + /// Object ID of the AAD principal or security-group. + /// Scope of the Synapse Built-in Role. + /// Continuation token. + /// The cancellation token to use. + public virtual async Task> ListRoleAssignmentsAsync(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.ListRoleAssignments"); + scope0.Start(); + try + { + return await RestClient.ListRoleAssignmentsAsync(roleId, principalId, scope, continuationToken, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// List role assignments. + /// Synapse Built-In Role Id. + /// Object ID of the AAD principal or security-group. + /// Scope of the Synapse Built-in Role. + /// Continuation token. + /// The cancellation token to use. + public virtual Response ListRoleAssignments(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.ListRoleAssignments"); + scope0.Start(); + try + { + return RestClient.ListRoleAssignments(roleId, principalId, scope, continuationToken, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Create role assignment. + /// The ID of the role assignment. + /// Role ID of the Synapse Built-In Role. + /// Object ID of the AAD principal or security-group. + /// Scope at which the role assignment is created. + /// Type of the principal Id: User, Group or ServicePrincipal. + /// The cancellation token to use. + public virtual async Task> CreateRoleAssignmentAsync(string roleAssignmentId, Guid roleId, Guid principalId, string scope, string principalType = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.CreateRoleAssignment"); + scope0.Start(); + try + { + return await RestClient.CreateRoleAssignmentAsync(roleAssignmentId, roleId, principalId, scope, principalType, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Create role assignment. + /// The ID of the role assignment. + /// Role ID of the Synapse Built-In Role. + /// Object ID of the AAD principal or security-group. + /// Scope at which the role assignment is created. + /// Type of the principal Id: User, Group or ServicePrincipal. + /// The cancellation token to use. + public virtual Response CreateRoleAssignment(string roleAssignmentId, Guid roleId, Guid principalId, string scope, string principalType = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.CreateRoleAssignment"); + scope0.Start(); + try + { + return RestClient.CreateRoleAssignment(roleAssignmentId, roleId, principalId, scope, principalType, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Get role assignment by role assignment Id. + /// The ID of the role assignment. + /// The cancellation token to use. + public virtual async Task> GetRoleAssignmentByIdAsync(string roleAssignmentId, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.GetRoleAssignmentById"); + scope0.Start(); + try + { + return await RestClient.GetRoleAssignmentByIdAsync(roleAssignmentId, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Get role assignment by role assignment Id. + /// The ID of the role assignment. + /// The cancellation token to use. + public virtual Response GetRoleAssignmentById(string roleAssignmentId, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.GetRoleAssignmentById"); + scope0.Start(); + try + { + return RestClient.GetRoleAssignmentById(roleAssignmentId, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Delete role assignment by role assignment Id. + /// The ID of the role assignment. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public virtual async Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, string scope = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.DeleteRoleAssignmentById"); + scope0.Start(); + try + { + return await RestClient.DeleteRoleAssignmentByIdAsync(roleAssignmentId, scope, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Delete role assignment by role assignment Id. + /// The ID of the role assignment. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public virtual Response DeleteRoleAssignmentById(string roleAssignmentId, string scope = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.DeleteRoleAssignmentById"); + scope0.Start(); + try + { + return RestClient.DeleteRoleAssignmentById(roleAssignmentId, scope, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Check if the given principalId has access to perform list of actions at a given scope. + /// Subject details. + /// List of actions. + /// Scope at which the check access is done. + /// The cancellation token to use. + public virtual async Task> CheckPrincipalAccessAsync(SubjectInfo subject, IEnumerable actions, string scope, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.CheckPrincipalAccess"); + scope0.Start(); + try + { + return await RestClient.CheckPrincipalAccessAsync(subject, actions, scope, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Check if the given principalId has access to perform list of actions at a given scope. + /// Subject details. + /// List of actions. + /// Scope at which the check access is done. + /// The cancellation token to use. + public virtual Response CheckPrincipalAccess(SubjectInfo subject, IEnumerable actions, string scope, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleAssignmentsClient.CheckPrincipalAccess"); + scope0.Start(); + try + { + return RestClient.CheckPrincipalAccess(subject, actions, scope, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlGetRoleAssignmentsHeaders.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsListRoleAssignmentsHeaders.cs similarity index 85% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlGetRoleAssignmentsHeaders.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsListRoleAssignmentsHeaders.cs index 78a536b34d0d2..0d6fa88f328a9 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlGetRoleAssignmentsHeaders.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsListRoleAssignmentsHeaders.cs @@ -10,10 +10,10 @@ namespace Azure.Analytics.Synapse.AccessControl { - internal class AccessControlGetRoleAssignmentsHeaders + internal class RoleAssignmentsListRoleAssignmentsHeaders { private readonly Response _response; - public AccessControlGetRoleAssignmentsHeaders(Response response) + public RoleAssignmentsListRoleAssignmentsHeaders(Response response) { _response = response; } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlRestClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsRestClient.cs similarity index 51% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlRestClient.cs rename to sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsRestClient.cs index 59f8fd5e332ec..8217ab63e725c 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/AccessControlRestClient.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleAssignmentsRestClient.cs @@ -17,20 +17,20 @@ namespace Azure.Analytics.Synapse.AccessControl { - internal partial class AccessControlRestClient + internal partial class RoleAssignmentsRestClient { private string endpoint; private string apiVersion; private ClientDiagnostics _clientDiagnostics; private HttpPipeline _pipeline; - /// Initializes a new instance of AccessControlRestClient. + /// Initializes a new instance of RoleAssignmentsRestClient. /// The handler for diagnostic messaging in the client. /// The HTTP pipeline for sending and receiving REST requests and responses. /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. /// Api Version. /// or is null. - public AccessControlRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-02-01-preview") + public RoleAssignmentsRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-08-01-preview") { if (endpoint == null) { @@ -47,156 +47,173 @@ public AccessControlRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline _pipeline = pipeline; } - internal HttpMessage CreateCreateRoleAssignmentRequest(RoleAssignmentOptions createRoleAssignmentOptions) + internal HttpMessage CreateListRoleAssignmentsRequest(string roleId, string principalId, string scope, string continuationToken) { var message = _pipeline.CreateMessage(); var request = message.Request; - request.Method = RequestMethod.Post; + request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roleAssignments", false); + uri.AppendPath("/roleAssignments", false); uri.AppendQuery("api-version", apiVersion, true); + if (roleId != null) + { + uri.AppendQuery("roleId", roleId, true); + } + if (principalId != null) + { + uri.AppendQuery("principalId", principalId, true); + } + if (scope != null) + { + uri.AppendQuery("scope", scope, true); + } request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(createRoleAssignmentOptions); - request.Content = content; + if (continuationToken != null) + { + request.Headers.Add("x-ms-continuation", continuationToken); + } + request.Headers.Add("Accept", "application/json, text/json"); return message; } - /// Create role assignment. - /// Details of role id and object id. + /// List role assignments. + /// Synapse Built-In Role Id. + /// Object ID of the AAD principal or security-group. + /// Scope of the Synapse Built-in Role. + /// Continuation token. /// The cancellation token to use. - /// is null. - public async Task> CreateRoleAssignmentAsync(RoleAssignmentOptions createRoleAssignmentOptions, CancellationToken cancellationToken = default) + public async Task> ListRoleAssignmentsAsync(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, CancellationToken cancellationToken = default) { - if (createRoleAssignmentOptions == null) - { - throw new ArgumentNullException(nameof(createRoleAssignmentOptions)); - } - - using var message = CreateCreateRoleAssignmentRequest(createRoleAssignmentOptions); + using var message = CreateListRoleAssignmentsRequest(roleId, principalId, scope, continuationToken); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + var headers = new RoleAssignmentsListRoleAssignmentsHeaders(message.Response); switch (message.Response.Status) { case 200: { - RoleAssignmentDetails value = default; + RoleAssignmentDetailsList value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = RoleAssignmentDetails.DeserializeRoleAssignmentDetails(document.RootElement); - return Response.FromValue(value, message.Response); + value = RoleAssignmentDetailsList.DeserializeRoleAssignmentDetailsList(document.RootElement); + return ResponseWithHeaders.FromValue(value, headers, message.Response); } default: throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); } } - /// Create role assignment. - /// Details of role id and object id. + /// List role assignments. + /// Synapse Built-In Role Id. + /// Object ID of the AAD principal or security-group. + /// Scope of the Synapse Built-in Role. + /// Continuation token. /// The cancellation token to use. - /// is null. - public Response CreateRoleAssignment(RoleAssignmentOptions createRoleAssignmentOptions, CancellationToken cancellationToken = default) + public ResponseWithHeaders ListRoleAssignments(string roleId = null, string principalId = null, string scope = null, string continuationToken = null, CancellationToken cancellationToken = default) { - if (createRoleAssignmentOptions == null) - { - throw new ArgumentNullException(nameof(createRoleAssignmentOptions)); - } - - using var message = CreateCreateRoleAssignmentRequest(createRoleAssignmentOptions); + using var message = CreateListRoleAssignmentsRequest(roleId, principalId, scope, continuationToken); _pipeline.Send(message, cancellationToken); + var headers = new RoleAssignmentsListRoleAssignmentsHeaders(message.Response); switch (message.Response.Status) { case 200: { - RoleAssignmentDetails value = default; + RoleAssignmentDetailsList value = default; using var document = JsonDocument.Parse(message.Response.ContentStream); - value = RoleAssignmentDetails.DeserializeRoleAssignmentDetails(document.RootElement); - return Response.FromValue(value, message.Response); + value = RoleAssignmentDetailsList.DeserializeRoleAssignmentDetailsList(document.RootElement); + return ResponseWithHeaders.FromValue(value, headers, message.Response); } default: throw _clientDiagnostics.CreateRequestFailedException(message.Response); } } - internal HttpMessage CreateGetRoleAssignmentsRequest(string roleId, string principalId, string continuationToken) + internal HttpMessage CreateCreateRoleAssignmentRequest(string roleAssignmentId, Guid roleId, Guid principalId, string scope, string principalType) { var message = _pipeline.CreateMessage(); var request = message.Request; - request.Method = RequestMethod.Get; + request.Method = RequestMethod.Put; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roleAssignments", false); + uri.AppendPath("/roleAssignments/", false); + uri.AppendPath(roleAssignmentId, true); uri.AppendQuery("api-version", apiVersion, true); - if (roleId != null) - { - uri.AppendQuery("roleId", roleId, true); - } - if (principalId != null) - { - uri.AppendQuery("principalId", principalId, true); - } request.Uri = uri; - if (continuationToken != null) + request.Headers.Add("Accept", "application/json, text/json"); + request.Headers.Add("Content-Type", "application/json"); + var model = new RoleAssignmentRequest(roleId, principalId, scope) { - request.Headers.Add("x-ms-continuation", continuationToken); - } - request.Headers.Add("Accept", "application/json"); + PrincipalType = principalType + }; + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(model); + request.Content = content; return message; } - /// List role assignments. - /// Synapse Built-In Role Id. + /// Create role assignment. + /// The ID of the role assignment. + /// Role ID of the Synapse Built-In Role. /// Object ID of the AAD principal or security-group. - /// Continuation token. + /// Scope at which the role assignment is created. + /// Type of the principal Id: User, Group or ServicePrincipal. /// The cancellation token to use. - public async Task, AccessControlGetRoleAssignmentsHeaders>> GetRoleAssignmentsAsync(string roleId = null, string principalId = null, string continuationToken = null, CancellationToken cancellationToken = default) + /// or is null. + public async Task> CreateRoleAssignmentAsync(string roleAssignmentId, Guid roleId, Guid principalId, string scope, string principalType = null, CancellationToken cancellationToken = default) { - using var message = CreateGetRoleAssignmentsRequest(roleId, principalId, continuationToken); + if (roleAssignmentId == null) + { + throw new ArgumentNullException(nameof(roleAssignmentId)); + } + if (scope == null) + { + throw new ArgumentNullException(nameof(scope)); + } + + using var message = CreateCreateRoleAssignmentRequest(roleAssignmentId, roleId, principalId, scope, principalType); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - var headers = new AccessControlGetRoleAssignmentsHeaders(message.Response); switch (message.Response.Status) { case 200: { - IReadOnlyList value = default; + RoleAssignmentDetails value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - List array = new List(); - foreach (var item in document.RootElement.EnumerateArray()) - { - array.Add(RoleAssignmentDetails.DeserializeRoleAssignmentDetails(item)); - } - value = array; - return ResponseWithHeaders.FromValue(value, headers, message.Response); + value = RoleAssignmentDetails.DeserializeRoleAssignmentDetails(document.RootElement); + return Response.FromValue(value, message.Response); } default: throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); } } - /// List role assignments. - /// Synapse Built-In Role Id. + /// Create role assignment. + /// The ID of the role assignment. + /// Role ID of the Synapse Built-In Role. /// Object ID of the AAD principal or security-group. - /// Continuation token. + /// Scope at which the role assignment is created. + /// Type of the principal Id: User, Group or ServicePrincipal. /// The cancellation token to use. - public ResponseWithHeaders, AccessControlGetRoleAssignmentsHeaders> GetRoleAssignments(string roleId = null, string principalId = null, string continuationToken = null, CancellationToken cancellationToken = default) + /// or is null. + public Response CreateRoleAssignment(string roleAssignmentId, Guid roleId, Guid principalId, string scope, string principalType = null, CancellationToken cancellationToken = default) { - using var message = CreateGetRoleAssignmentsRequest(roleId, principalId, continuationToken); + if (roleAssignmentId == null) + { + throw new ArgumentNullException(nameof(roleAssignmentId)); + } + if (scope == null) + { + throw new ArgumentNullException(nameof(scope)); + } + + using var message = CreateCreateRoleAssignmentRequest(roleAssignmentId, roleId, principalId, scope, principalType); _pipeline.Send(message, cancellationToken); - var headers = new AccessControlGetRoleAssignmentsHeaders(message.Response); switch (message.Response.Status) { case 200: { - IReadOnlyList value = default; + RoleAssignmentDetails value = default; using var document = JsonDocument.Parse(message.Response.ContentStream); - List array = new List(); - foreach (var item in document.RootElement.EnumerateArray()) - { - array.Add(RoleAssignmentDetails.DeserializeRoleAssignmentDetails(item)); - } - value = array; - return ResponseWithHeaders.FromValue(value, headers, message.Response); + value = RoleAssignmentDetails.DeserializeRoleAssignmentDetails(document.RootElement); + return Response.FromValue(value, message.Response); } default: throw _clientDiagnostics.CreateRequestFailedException(message.Response); @@ -210,11 +227,11 @@ internal HttpMessage CreateGetRoleAssignmentByIdRequest(string roleAssignmentId) request.Method = RequestMethod.Get; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roleAssignments/", false); + uri.AppendPath("/roleAssignments/", false); uri.AppendPath(roleAssignmentId, true); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; - request.Headers.Add("Accept", "application/json"); + request.Headers.Add("Accept", "application/json, text/json"); return message; } @@ -272,33 +289,38 @@ public Response GetRoleAssignmentById(string roleAssignme } } - internal HttpMessage CreateDeleteRoleAssignmentByIdRequest(string roleAssignmentId) + internal HttpMessage CreateDeleteRoleAssignmentByIdRequest(string roleAssignmentId, string scope) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Delete; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roleAssignments/", false); + uri.AppendPath("/roleAssignments/", false); uri.AppendPath(roleAssignmentId, true); uri.AppendQuery("api-version", apiVersion, true); + if (scope != null) + { + uri.AppendQuery("scope", scope, true); + } request.Uri = uri; - request.Headers.Add("Accept", "application/json"); + request.Headers.Add("Accept", "application/json, text/json"); return message; } /// Delete role assignment by role assignment Id. /// The ID of the role assignment. + /// Scope of the Synapse Built-in Role. /// The cancellation token to use. /// is null. - public async Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, CancellationToken cancellationToken = default) + public async Task DeleteRoleAssignmentByIdAsync(string roleAssignmentId, string scope = null, CancellationToken cancellationToken = default) { if (roleAssignmentId == null) { throw new ArgumentNullException(nameof(roleAssignmentId)); } - using var message = CreateDeleteRoleAssignmentByIdRequest(roleAssignmentId); + using var message = CreateDeleteRoleAssignmentByIdRequest(roleAssignmentId, scope); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -312,16 +334,17 @@ public async Task DeleteRoleAssignmentByIdAsync(string roleAssignmentI /// Delete role assignment by role assignment Id. /// The ID of the role assignment. + /// Scope of the Synapse Built-in Role. /// The cancellation token to use. /// is null. - public Response DeleteRoleAssignmentById(string roleAssignmentId, CancellationToken cancellationToken = default) + public Response DeleteRoleAssignmentById(string roleAssignmentId, string scope = null, CancellationToken cancellationToken = default) { if (roleAssignmentId == null) { throw new ArgumentNullException(nameof(roleAssignmentId)); } - using var message = CreateDeleteRoleAssignmentByIdRequest(roleAssignmentId); + using var message = CreateDeleteRoleAssignmentByIdRequest(roleAssignmentId, scope); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -333,159 +356,55 @@ public Response DeleteRoleAssignmentById(string roleAssignmentId, CancellationTo } } - internal HttpMessage CreateGetCallerRoleAssignmentsRequest() + internal HttpMessage CreateCheckPrincipalAccessRequest(SubjectInfo subject, IEnumerable actions, string scope) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Post; var uri = new RawRequestUriBuilder(); uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/getMyAssignedRoles", false); - uri.AppendQuery("api-version", apiVersion, true); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - return message; - } - - /// List role assignments of the caller. - /// The cancellation token to use. - public async Task>> GetCallerRoleAssignmentsAsync(CancellationToken cancellationToken = default) - { - using var message = CreateGetCallerRoleAssignmentsRequest(); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 200: - { - IReadOnlyList value = default; - using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - List array = new List(); - foreach (var item in document.RootElement.EnumerateArray()) - { - array.Add(item.GetString()); - } - value = array; - return Response.FromValue(value, message.Response); - } - default: - throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); - } - } - - /// List role assignments of the caller. - /// The cancellation token to use. - public Response> GetCallerRoleAssignments(CancellationToken cancellationToken = default) - { - using var message = CreateGetCallerRoleAssignmentsRequest(); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 200: - { - IReadOnlyList value = default; - using var document = JsonDocument.Parse(message.Response.ContentStream); - List array = new List(); - foreach (var item in document.RootElement.EnumerateArray()) - { - array.Add(item.GetString()); - } - value = array; - return Response.FromValue(value, message.Response); - } - default: - throw _clientDiagnostics.CreateRequestFailedException(message.Response); - } - } - - internal HttpMessage CreateGetRoleDefinitionsRequest() - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Get; - var uri = new RawRequestUriBuilder(); - uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roles", false); + uri.AppendPath("/checkAccessSynapseRbac", false); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; - request.Headers.Add("Accept", "application/json"); + request.Headers.Add("Accept", "application/json, text/json"); + request.Headers.Add("Content-Type", "application/json"); + var model = new CheckPrincipalAccessRequest(subject, actions, scope); + var content = new Utf8JsonRequestContent(); + content.JsonWriter.WriteObjectValue(model); + request.Content = content; return message; } - /// List roles. + /// Check if the given principalId has access to perform list of actions at a given scope. + /// Subject details. + /// List of actions. + /// Scope at which the check access is done. /// The cancellation token to use. - public async Task> GetRoleDefinitionsAsync(CancellationToken cancellationToken = default) + /// , , or is null. + public async Task> CheckPrincipalAccessAsync(SubjectInfo subject, IEnumerable actions, string scope, CancellationToken cancellationToken = default) { - using var message = CreateGetRoleDefinitionsRequest(); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) + if (subject == null) { - case 200: - { - RolesListResponse value = default; - using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = RolesListResponse.DeserializeRolesListResponse(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + throw new ArgumentNullException(nameof(subject)); } - } - - /// List roles. - /// The cancellation token to use. - public Response GetRoleDefinitions(CancellationToken cancellationToken = default) - { - using var message = CreateGetRoleDefinitionsRequest(); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) + if (actions == null) { - case 200: - { - RolesListResponse value = default; - using var document = JsonDocument.Parse(message.Response.ContentStream); - value = RolesListResponse.DeserializeRolesListResponse(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw _clientDiagnostics.CreateRequestFailedException(message.Response); + throw new ArgumentNullException(nameof(actions)); } - } - - internal HttpMessage CreateGetRoleDefinitionByIdRequest(string roleId) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Get; - var uri = new RawRequestUriBuilder(); - uri.AppendRaw(endpoint, false); - uri.AppendPath("/rbac/roles/", false); - uri.AppendPath(roleId, true); - uri.AppendQuery("api-version", apiVersion, true); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - return message; - } - - /// Get role by role Id. - /// Synapse Built-In Role Id. - /// The cancellation token to use. - /// is null. - public async Task> GetRoleDefinitionByIdAsync(string roleId, CancellationToken cancellationToken = default) - { - if (roleId == null) + if (scope == null) { - throw new ArgumentNullException(nameof(roleId)); + throw new ArgumentNullException(nameof(scope)); } - using var message = CreateGetRoleDefinitionByIdRequest(roleId); + using var message = CreateCheckPrincipalAccessRequest(subject, actions, scope); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: { - SynapseRole value = default; + CheckPrincipalAccessResponse value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = SynapseRole.DeserializeSynapseRole(document.RootElement); + value = CheckPrincipalAccessResponse.DeserializeCheckPrincipalAccessResponse(document.RootElement); return Response.FromValue(value, message.Response); } default: @@ -493,93 +412,36 @@ public async Task> GetRoleDefinitionByIdAsync(string roleI } } - /// Get role by role Id. - /// Synapse Built-In Role Id. - /// The cancellation token to use. - /// is null. - public Response GetRoleDefinitionById(string roleId, CancellationToken cancellationToken = default) - { - if (roleId == null) - { - throw new ArgumentNullException(nameof(roleId)); - } - - using var message = CreateGetRoleDefinitionByIdRequest(roleId); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 200: - { - SynapseRole value = default; - using var document = JsonDocument.Parse(message.Response.ContentStream); - value = SynapseRole.DeserializeSynapseRole(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw _clientDiagnostics.CreateRequestFailedException(message.Response); - } - } - - internal HttpMessage CreateGetRoleDefinitionsNextPageRequest(string nextLink) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Get; - var uri = new RawRequestUriBuilder(); - uri.AppendRaw(endpoint, false); - uri.AppendRawNextLink(nextLink, false); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - return message; - } - - /// List roles. - /// The URL to the next page of results. + /// Check if the given principalId has access to perform list of actions at a given scope. + /// Subject details. + /// List of actions. + /// Scope at which the check access is done. /// The cancellation token to use. - /// is null. - public async Task> GetRoleDefinitionsNextPageAsync(string nextLink, CancellationToken cancellationToken = default) + /// , , or is null. + public Response CheckPrincipalAccess(SubjectInfo subject, IEnumerable actions, string scope, CancellationToken cancellationToken = default) { - if (nextLink == null) + if (subject == null) { - throw new ArgumentNullException(nameof(nextLink)); + throw new ArgumentNullException(nameof(subject)); } - - using var message = CreateGetRoleDefinitionsNextPageRequest(nextLink); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) + if (actions == null) { - case 200: - { - RolesListResponse value = default; - using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = RolesListResponse.DeserializeRolesListResponse(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + throw new ArgumentNullException(nameof(actions)); } - } - - /// List roles. - /// The URL to the next page of results. - /// The cancellation token to use. - /// is null. - public Response GetRoleDefinitionsNextPage(string nextLink, CancellationToken cancellationToken = default) - { - if (nextLink == null) + if (scope == null) { - throw new ArgumentNullException(nameof(nextLink)); + throw new ArgumentNullException(nameof(scope)); } - using var message = CreateGetRoleDefinitionsNextPageRequest(nextLink); + using var message = CreateCheckPrincipalAccessRequest(subject, actions, scope); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { case 200: { - RolesListResponse value = default; + CheckPrincipalAccessResponse value = default; using var document = JsonDocument.Parse(message.Response.ContentStream); - value = RolesListResponse.DeserializeRolesListResponse(document.RootElement); + value = CheckPrincipalAccessResponse.DeserializeCheckPrincipalAccessResponse(document.RootElement); return Response.FromValue(value, message.Response); } default: diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsClient.cs new file mode 100644 index 0000000000000..0b79f0d9c1f14 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsClient.cs @@ -0,0 +1,148 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Analytics.Synapse.AccessControl.Models; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.AccessControl +{ + /// The RoleDefinitions service client. + public partial class RoleDefinitionsClient + { + private readonly ClientDiagnostics _clientDiagnostics; + private readonly HttpPipeline _pipeline; + internal RoleDefinitionsRestClient RestClient { get; } + /// Initializes a new instance of RoleDefinitionsClient for mocking. + protected RoleDefinitionsClient() + { + } + /// Initializes a new instance of RoleDefinitionsClient. + /// The handler for diagnostic messaging in the client. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. + /// Api Version. + internal RoleDefinitionsClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-08-01-preview") + { + RestClient = new RoleDefinitionsRestClient(clientDiagnostics, pipeline, endpoint, apiVersion); + _clientDiagnostics = clientDiagnostics; + _pipeline = pipeline; + } + + /// List role definitions. + /// Is a Synapse Built-In Role or not. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public virtual async Task>> ListRoleDefinitionsAsync(bool? isBuiltIn = null, string scope = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.ListRoleDefinitions"); + scope0.Start(); + try + { + return await RestClient.ListRoleDefinitionsAsync(isBuiltIn, scope, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// List role definitions. + /// Is a Synapse Built-In Role or not. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public virtual Response> ListRoleDefinitions(bool? isBuiltIn = null, string scope = null, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.ListRoleDefinitions"); + scope0.Start(); + try + { + return RestClient.ListRoleDefinitions(isBuiltIn, scope, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Get role definition by role definition Id. + /// Synapse Built-In Role Definition Id. + /// The cancellation token to use. + public virtual async Task> GetRoleDefinitionByIdAsync(string roleDefinitionId, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.GetRoleDefinitionById"); + scope0.Start(); + try + { + return await RestClient.GetRoleDefinitionByIdAsync(roleDefinitionId, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// Get role definition by role definition Id. + /// Synapse Built-In Role Definition Id. + /// The cancellation token to use. + public virtual Response GetRoleDefinitionById(string roleDefinitionId, CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.GetRoleDefinitionById"); + scope0.Start(); + try + { + return RestClient.GetRoleDefinitionById(roleDefinitionId, cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// List rbac scopes. + /// The cancellation token to use. + public virtual async Task>> ListScopesAsync(CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.ListScopes"); + scope0.Start(); + try + { + return await RestClient.ListScopesAsync(cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + + /// List rbac scopes. + /// The cancellation token to use. + public virtual Response> ListScopes(CancellationToken cancellationToken = default) + { + using var scope0 = _clientDiagnostics.CreateScope("RoleDefinitionsClient.ListScopes"); + scope0.Start(); + try + { + return RestClient.ListScopes(cancellationToken); + } + catch (Exception e) + { + scope0.Failed(e); + throw; + } + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsRestClient.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsRestClient.cs new file mode 100644 index 0000000000000..dea25bedb8074 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/RoleDefinitionsRestClient.cs @@ -0,0 +1,259 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Analytics.Synapse.AccessControl.Models; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.AccessControl +{ + internal partial class RoleDefinitionsRestClient + { + private string endpoint; + private string apiVersion; + private ClientDiagnostics _clientDiagnostics; + private HttpPipeline _pipeline; + + /// Initializes a new instance of RoleDefinitionsRestClient. + /// The handler for diagnostic messaging in the client. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. + /// Api Version. + /// or is null. + public RoleDefinitionsRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2020-08-01-preview") + { + if (endpoint == null) + { + throw new ArgumentNullException(nameof(endpoint)); + } + if (apiVersion == null) + { + throw new ArgumentNullException(nameof(apiVersion)); + } + + this.endpoint = endpoint; + this.apiVersion = apiVersion; + _clientDiagnostics = clientDiagnostics; + _pipeline = pipeline; + } + + internal HttpMessage CreateListRoleDefinitionsRequest(bool? isBuiltIn, string scope) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/roleDefinitions", false); + uri.AppendQuery("api-version", apiVersion, true); + if (isBuiltIn != null) + { + uri.AppendQuery("isBuiltIn", isBuiltIn.Value, true); + } + if (scope != null) + { + uri.AppendQuery("scope", scope, true); + } + request.Uri = uri; + request.Headers.Add("Accept", "application/json, text/json"); + return message; + } + + /// List role definitions. + /// Is a Synapse Built-In Role or not. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public async Task>> ListRoleDefinitionsAsync(bool? isBuiltIn = null, string scope = null, CancellationToken cancellationToken = default) + { + using var message = CreateListRoleDefinitionsRequest(isBuiltIn, scope); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + IReadOnlyList value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + List array = new List(); + foreach (var item in document.RootElement.EnumerateArray()) + { + array.Add(SynapseRoleDefinition.DeserializeSynapseRoleDefinition(item)); + } + value = array; + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// List role definitions. + /// Is a Synapse Built-In Role or not. + /// Scope of the Synapse Built-in Role. + /// The cancellation token to use. + public Response> ListRoleDefinitions(bool? isBuiltIn = null, string scope = null, CancellationToken cancellationToken = default) + { + using var message = CreateListRoleDefinitionsRequest(isBuiltIn, scope); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + IReadOnlyList value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + List array = new List(); + foreach (var item in document.RootElement.EnumerateArray()) + { + array.Add(SynapseRoleDefinition.DeserializeSynapseRoleDefinition(item)); + } + value = array; + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateGetRoleDefinitionByIdRequest(string roleDefinitionId) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/roleDefinitions/", false); + uri.AppendPath(roleDefinitionId, true); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json, text/json"); + return message; + } + + /// Get role definition by role definition Id. + /// Synapse Built-In Role Definition Id. + /// The cancellation token to use. + /// is null. + public async Task> GetRoleDefinitionByIdAsync(string roleDefinitionId, CancellationToken cancellationToken = default) + { + if (roleDefinitionId == null) + { + throw new ArgumentNullException(nameof(roleDefinitionId)); + } + + using var message = CreateGetRoleDefinitionByIdRequest(roleDefinitionId); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + SynapseRoleDefinition value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = SynapseRoleDefinition.DeserializeSynapseRoleDefinition(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Get role definition by role definition Id. + /// Synapse Built-In Role Definition Id. + /// The cancellation token to use. + /// is null. + public Response GetRoleDefinitionById(string roleDefinitionId, CancellationToken cancellationToken = default) + { + if (roleDefinitionId == null) + { + throw new ArgumentNullException(nameof(roleDefinitionId)); + } + + using var message = CreateGetRoleDefinitionByIdRequest(roleDefinitionId); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + SynapseRoleDefinition value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = SynapseRoleDefinition.DeserializeSynapseRoleDefinition(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateListScopesRequest() + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/rbacScopes", false); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json, text/json"); + return message; + } + + /// List rbac scopes. + /// The cancellation token to use. + public async Task>> ListScopesAsync(CancellationToken cancellationToken = default) + { + using var message = CreateListScopesRequest(); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + IReadOnlyList value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + List array = new List(); + foreach (var item in document.RootElement.EnumerateArray()) + { + array.Add(item.GetString()); + } + value = array; + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// List rbac scopes. + /// The cancellation token to use. + public Response> ListScopes(CancellationToken cancellationToken = default) + { + using var message = CreateListScopesRequest(); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + IReadOnlyList value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + List array = new List(); + foreach (var item in document.RootElement.EnumerateArray()) + { + array.Add(item.GetString()); + } + value = array; + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/autorest.md b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/autorest.md index bfd66ae1430fb..ac4cab6fbc348 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/autorest.md +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/autorest.md @@ -6,12 +6,13 @@ Run `dotnet build /t:GenerateCode` to generate code. > see https://aka.ms/autorest ```yaml -repo: https://github.com/Azure/azure-rest-api-specs/blob/b9fbfae938a0ec0e8a696b450a917b47bea1f2e3 +repo: https://github.com/Azure/azure-rest-api-specs/blob/aa19725fe79aea2a9dc580f3c66f77f89cc34563 ``` ``` yaml public-clients: true input-file: - - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2020-02-01-preview/roleAssignments.json - - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2020-02-01-preview/roles.json + - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2020-08-01-preview/roleAssignments.json + - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2020-08-01-preview/roleDefinitions.json + - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2020-08-01-preview/checkAccessSynapseRbac.json ``` diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/AccessControlClientLiveTests.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/AccessControlClientLiveTests.cs index cd9fb4bcf8428..d3c2b58928ce5 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/AccessControlClientLiveTests.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/AccessControlClientLiveTests.cs @@ -20,81 +20,113 @@ namespace Azure.Analytics.Synapse.AccessControl.Tests /// These tests have a dependency on live Azure services and may incur costs for the associated /// Azure subscription. /// + [Ignore("https://github.com/Azure/azure-sdk-for-net/issues/18080 - roleAssignmentId can not be reused in recording due to reuse 409.")] public class AccessControlClientLiveTests : RecordedTestBase { internal class DisposableClientRole : IAsyncDisposable { - private readonly AccessControlClient _client; + private readonly RoleAssignmentsClient _client; public RoleAssignmentDetails Assignment; - private DisposableClientRole (AccessControlClient client, RoleAssignmentDetails assignment) + private DisposableClientRole (RoleAssignmentsClient assignmentsClient, RoleDefinitionsClient definitionsClient, RoleAssignmentDetails assignment) { - _client = client; + _client = assignmentsClient; Assignment = assignment; } - public static async ValueTask Create (AccessControlClient client, TestRecording recording) => - new DisposableClientRole (client, await CreateResource (client, recording)); + public static async ValueTask Create (RoleAssignmentsClient assignmentsClient, RoleDefinitionsClient definitionsClient, TestRecording recording) => + new DisposableClientRole (assignmentsClient, definitionsClient, await CreateResource (assignmentsClient, definitionsClient, recording)); - public static async ValueTask CreateResource (AccessControlClient client, TestRecording recording) + public static async ValueTask CreateResource (RoleAssignmentsClient assignmentsClient, RoleDefinitionsClient definitionsClient, TestRecording recording) { - string roleID = (await client.GetRoleDefinitionsAsync().ToListAsync()).First (x => x.Name == "Workspace Admin").Id; - string principalId = recording.Random.NewGuid().ToString(); - return await client.CreateRoleAssignmentAsync(new RoleAssignmentOptions(roleID, principalId)); + string scope = "workspaces/workspacechhamosynapse"; + + Guid? roleID = (await definitionsClient.ListRoleDefinitionsAsync()).Value.First (x => x.Name == "Synapse Administrator").Id; + Guid principalId = recording.Random.NewGuid(); + + string roleAssignmentId; + // Assignment IDs can not be reused for at least 30 days, so only respect recording's copy in playback + if (recording.Mode == RecordedTestMode.Playback) + { + roleAssignmentId = recording.Random.NewGuid().ToString(); + } + else + { + roleAssignmentId = Guid.NewGuid().ToString(); + } + + return await assignmentsClient.CreateRoleAssignmentAsync(roleAssignmentId, roleID.Value, principalId, scope); } - public async ValueTask DisposeAsync() => await _client.DeleteRoleAssignmentByIdAsync(Assignment.Id); + public async ValueTask DisposeAsync() + { + await _client.DeleteRoleAssignmentByIdAsync(Assignment.Id); + } } public AccessControlClientLiveTests(bool isAsync) : base(isAsync) { } - private AccessControlClient CreateClient() + private RoleAssignmentsClient CreateAssignmentClient() + { + return InstrumentClient(new RoleAssignmentsClient( + new Uri(TestEnvironment.EndpointUrl), + TestEnvironment.Credential, + InstrumentClientOptions(new RoleAssignmentsClientOptions()) + )); + } + + private RoleDefinitionsClient CreateDefinitionsClient() { - return InstrumentClient(new AccessControlClient( + return InstrumentClient(new RoleDefinitionsClient( new Uri(TestEnvironment.EndpointUrl), TestEnvironment.Credential, - InstrumentClientOptions(new AccessControlClientOptions()) + InstrumentClientOptions(new RoleDefinitionsClientOptions()) )); } [Test] public async Task CreateRoleAssignment() { - AccessControlClient client = CreateClient(); - await using DisposableClientRole role = await DisposableClientRole.Create (client, this.Recording); + RoleAssignmentsClient assignmentsClient = CreateAssignmentClient(); + RoleDefinitionsClient definitionsClient = CreateDefinitionsClient(); + + await using DisposableClientRole role = await DisposableClientRole.Create (assignmentsClient, definitionsClient, this.Recording); Assert.NotNull(role.Assignment.Id); - Assert.NotNull(role.Assignment.RoleId); + Assert.NotNull(role.Assignment.RoleDefinitionId); Assert.NotNull(role.Assignment.PrincipalId); } [Test] public async Task GetRoleAssignment() { - AccessControlClient client = CreateClient(); - await using DisposableClientRole role = await DisposableClientRole.Create (client, this.Recording); + RoleAssignmentsClient assignmentsClient = CreateAssignmentClient(); + RoleDefinitionsClient definitionsClient = CreateDefinitionsClient(); + + await using DisposableClientRole role = await DisposableClientRole.Create (assignmentsClient, definitionsClient, this.Recording); - RoleAssignmentDetails roleAssignment = await client.GetRoleAssignmentByIdAsync(role.Assignment.Id); + RoleAssignmentDetails roleAssignment = await assignmentsClient.GetRoleAssignmentByIdAsync(role.Assignment.Id); - Assert.AreEqual(role.Assignment.RoleId, roleAssignment.RoleId); + Assert.AreEqual(role.Assignment.RoleDefinitionId, roleAssignment.RoleDefinitionId); Assert.AreEqual(role.Assignment.PrincipalId, roleAssignment.PrincipalId); } [Test] public async Task ListRoleAssignments() { - AccessControlClient client = CreateClient(); - await using DisposableClientRole role = await DisposableClientRole.Create (client, this.Recording); + RoleAssignmentsClient assignmentsClient = CreateAssignmentClient(); + RoleDefinitionsClient definitionsClient = CreateDefinitionsClient(); - Response> roleAssignments = await client.GetRoleAssignmentsAsync(); - foreach (RoleAssignmentDetails expected in roleAssignments.Value) + await using DisposableClientRole role = await DisposableClientRole.Create (assignmentsClient, definitionsClient, this.Recording); + + Response> roleAssignments = await definitionsClient.ListRoleDefinitionsAsync(); + foreach (SynapseRoleDefinition expected in roleAssignments.Value) { - RoleAssignmentDetails actual = await client.GetRoleAssignmentByIdAsync(expected.Id); + SynapseRoleDefinition actual = await definitionsClient.GetRoleDefinitionByIdAsync(expected.Id.ToString()); Assert.AreEqual(expected.Id, actual.Id); - Assert.AreEqual(expected.PrincipalId, actual.PrincipalId); - Assert.AreEqual(expected.RoleId, actual.RoleId); + Assert.AreEqual(expected.Name, actual.Name); } Assert.GreaterOrEqual(roleAssignments.Value.Count, 1); } @@ -102,19 +134,13 @@ public async Task ListRoleAssignments() [Test] public async Task DeleteRoleAssignments() { - AccessControlClient client = CreateClient(); - RoleAssignmentDetails assignment = await DisposableClientRole.CreateResource (client, this.Recording); + RoleAssignmentsClient assignmentsClient = CreateAssignmentClient(); + RoleDefinitionsClient definitionsClient = CreateDefinitionsClient(); - Response response = await client.DeleteRoleAssignmentByIdAsync (assignment.Id); - response.AssertSuccess(); - } + RoleAssignmentDetails assignment = await DisposableClientRole.CreateResource (assignmentsClient, definitionsClient, this.Recording); - [Test] - public async Task GetCallerRoleAssignment() - { - AccessControlClient client = CreateClient(); - Response> assignments = await client.GetCallerRoleAssignmentsAsync (); - Assert.GreaterOrEqual(assignments.Value.Count, 1); + Response response = await assignmentsClient.DeleteRoleAssignmentByIdAsync (assignment.Id); + response.AssertSuccess(); } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignment.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignment.json index c542e61d11769..decfc9a94984b 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignment.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignment.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-876ceda43de3824fa68308de015d7d37-9458ec098bf7ec42-00", + "traceparent": "00-c4eadb85223e6b4d83fdd1c95e8ad5bf-2a459b667bfb5c4f-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "c6b0ba802753c1df62b6d7a81346c8af", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:36 GMT", + "Date": "Wed, 03 Feb 2021 15:38:12 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,94 +30,79 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "c6b0ba802753c1df62b6d7a81346c8af", "x-ms-request-id": [ - "c610de02-90d8-450c-8481-ace8405e85b5", - "c610de02-90d8-450c-8481-ace8405e85b5" + "1dfd325a-fb32-418d-acc3-cee9d1652cc4", + "1dfd325a-fb32-418d-acc3-cee9d1652cc4" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/7cb28fbf-6a49-41bd-8009-7e48e0dc4e81?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-3bc5accfc2876642b5a3448b119881a2-cc5916376f7d3847-00", + "traceparent": "00-6ad862db0e588947bfc9dcaade5cb7d3-c5baa7649312c84c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "bc9cffddc814f09a19ba0e77fa100e1e", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "7c27c4f4-8be1-b578-9d59-34b3cdf4481e" + "principalId": "7c27c4f4-8be1-b578-9d59-34b3cdf4481e", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:36 GMT", + "Date": "Wed, 03 Feb 2021 15:38:13 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "bc9cffddc814f09a19ba0e77fa100e1e", - "x-ms-request-id": "2063155f-78b0-4730-9036-b887c65070bb" + "x-ms-request-id": "d3360929-7452-437c-8604-71893b88a827" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-7c27c4f4-8be1-b578-9d59-34b3cdf4481e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "7c27c4f4-8be1-b578-9d59-34b3cdf4481e" + "id": "7cb28fbf-6a49-41bd-8009-7e48e0dc4e81", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "7c27c4f4-8be1-b578-9d59-34b3cdf4481e", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-7c27c4f4-8be1-b578-9d59-34b3cdf4481e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/7cb28fbf-6a49-41bd-8009-7e48e0dc4e81?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-37d1baeac9e53c45b3b146b1bd1df10e-dd0f1fcf5d48cf4f-00", + "traceparent": "00-40f16a6750370548b0827bed286a2f6d-e24c44ee718f1843-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "7176be905948f5fc41fa29faf32cf36d", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:36 GMT", + "Date": "Wed, 03 Feb 2021 15:38:13 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "7176be905948f5fc41fa29faf32cf36d", - "x-ms-request-id": "fb5affd4-fc73-49c9-819c-1603371abcff" + "x-ms-request-id": "7476fb7d-5975-40c5-b389-71ba4ad9fec2" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignmentAsync.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignmentAsync.json index d25353dfe3972..71b719cfc0c1d 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignmentAsync.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/CreateRoleAssignmentAsync.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-ea97731cf82e9a499d4433800f4c492d-77ff0ae696757a49-00", + "traceparent": "00-8c88a0414069294c8a55b26358ecd7f9-6d0d5c2aa0ecc141-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "3c765794d7fde1119b16eeab9db6c2f2", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:38:14 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,94 +30,79 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "3c765794d7fde1119b16eeab9db6c2f2", "x-ms-request-id": [ - "170cf282-b3ac-4bc0-9230-ac4eda6ea365", - "170cf282-b3ac-4bc0-9230-ac4eda6ea365" + "8dd1cf90-aa79-4dd4-b31f-17ba39413032", + "8dd1cf90-aa79-4dd4-b31f-17ba39413032" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/ea2a9dc9-d0ec-462d-b090-020df9fe1715?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-46844be31ef59649b98843d5af89bb8f-c7db35b87f52f640-00", + "traceparent": "00-344e3145bab85948b6c0da16a0131c26-a84b9ad58c8d604b-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "d54f462fac81f23916e7c4f527610bd6", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "a1b0d706-cb9d-9438-c005-bca29fbb2e8e" + "principalId": "a1b0d706-cb9d-9438-c005-bca29fbb2e8e", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:38:14 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "d54f462fac81f23916e7c4f527610bd6", - "x-ms-request-id": "b2eb49e4-673e-4b46-ad69-1f9edb39c948" + "x-ms-request-id": "4af734f9-b5b7-47e2-ae2d-bb8c2093b9ee" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-a1b0d706-cb9d-9438-c005-bca29fbb2e8e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "a1b0d706-cb9d-9438-c005-bca29fbb2e8e" + "id": "ea2a9dc9-d0ec-462d-b090-020df9fe1715", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "a1b0d706-cb9d-9438-c005-bca29fbb2e8e", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-a1b0d706-cb9d-9438-c005-bca29fbb2e8e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/ea2a9dc9-d0ec-462d-b090-020df9fe1715?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-e36f68e5d033b543a457d7a544b7964e-665b85345d0e1c43-00", + "traceparent": "00-9012cca864efb74083d0b13ecc27fdc0-86d0b2a13289a64a-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "a001bd59cb16c8c11fe17cf71b6f41e0", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:38:14 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "a001bd59cb16c8c11fe17cf71b6f41e0", - "x-ms-request-id": "5e3bd4b6-e85c-4651-ad04-5116167e7f94" + "x-ms-request-id": "a6170023-0ccc-4044-8f21-324fab826e16" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignments.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignments.json index 372ae8bba4fa0..f726c6dba6ca5 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignments.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignments.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-87225777a0d074468a79e739c97bb8e1-609512b8795a1447-00", + "traceparent": "00-e0c69cf9a5fee1468d50b86965850eec-bb44700f4eddff4f-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "7a44a7238836b96c9a4e02f5825f9a05", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:31 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,94 +30,79 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "7a44a7238836b96c9a4e02f5825f9a05", "x-ms-request-id": [ - "bcc8001e-98b3-4ff1-b255-76b0744d72f7", - "bcc8001e-98b3-4ff1-b255-76b0744d72f7" + "35c6d984-cc36-41bb-bf60-df9656aae6d3", + "35c6d984-cc36-41bb-bf60-df9656aae6d3" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/141df277-2d58-4260-bf1d-51bd113d494a?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-20312eeaae59844aaf19d62505183582-a8554a6c33f6c946-00", + "traceparent": "00-283849c463d70143b6b0ceb44837ceb7-6fd99403c4ef1647-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "61dfaa843f7777d52e0f4e996b7b2ed3", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92" + "principalId": "dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:31 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "61dfaa843f7777d52e0f4e996b7b2ed3", - "x-ms-request-id": "5074774c-6150-455c-8a49-5e3e586288de" + "x-ms-request-id": "21d8a574-e67b-49b7-9561-8972a24400c4" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92" + "id": "141df277-2d58-4260-bf1d-51bd113d494a", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-dcc8f8ce-5a3b-e8fe-5d6c-54a9d6435d92?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/141df277-2d58-4260-bf1d-51bd113d494a?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-1939f4d0b052c946951a3ffc3b103efd-0f05ac9e822e5948-00", + "traceparent": "00-77932f9ab6120e4e81327a17d37916dd-0f5d44b2ebfde942-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "86fc901f81ddc9d4a95b1dc934c2e357", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:31 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "86fc901f81ddc9d4a95b1dc934c2e357", - "x-ms-request-id": "958916ba-3b01-45e9-a904-8412574e9816" + "x-ms-request-id": "a5e34575-955a-4477-8fbf-a8ecef7b44bb" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignmentsAsync.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignmentsAsync.json index 16a5be9d8a900..d01e15a50fe3c 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignmentsAsync.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/DeleteRoleAssignmentsAsync.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-3a3ac3a878b3754daf2767917a700852-bd24d2959bd29a43-00", + "traceparent": "00-d0ac6a020f6c1e44a73e0bf24830a263-ccbb97d9e6a33049-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "f05ea22b386d82d685f2b23598f54f7a", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:39:32 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,94 +30,79 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "f05ea22b386d82d685f2b23598f54f7a", "x-ms-request-id": [ - "7ddd8d78-8b92-47b2-90db-2d6e94c0a040", - "7ddd8d78-8b92-47b2-90db-2d6e94c0a040" + "0a601231-2292-46f6-8d02-51336dd51830", + "0a601231-2292-46f6-8d02-51336dd51830" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/4c3bf75b-da09-462a-bf95-62646c8d4f88?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-b7777ab5251af24fbdb2f7db9bd9c84c-77cf213e86ff9244-00", + "traceparent": "00-b98811ec463c834e88590ff285e75dc2-7168eab0b06c8045-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "09a76e7b33dd1764c5b198a5fb5054df", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "d754e419-9dca-3f19-cb7d-e212a2feb47a" + "principalId": "d754e419-9dca-3f19-cb7d-e212a2feb47a", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:39:32 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "09a76e7b33dd1764c5b198a5fb5054df", - "x-ms-request-id": "e2333498-86c1-412d-9d19-b83076248661" + "x-ms-request-id": "45ff5387-84d6-402e-979d-c06f844e5fd4" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d754e419-9dca-3f19-cb7d-e212a2feb47a", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "d754e419-9dca-3f19-cb7d-e212a2feb47a" + "id": "4c3bf75b-da09-462a-bf95-62646c8d4f88", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "d754e419-9dca-3f19-cb7d-e212a2feb47a", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d754e419-9dca-3f19-cb7d-e212a2feb47a?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/4c3bf75b-da09-462a-bf95-62646c8d4f88?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-40e42fb5b540a745bb95ae0962e2492b-db4aa16663883443-00", + "traceparent": "00-7e6e52b473f12d45bc0efafca1c4dd42-194901e92898cb46-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "1daa6b8f52528eb4891e24ef56c3e087", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:39 GMT", + "Date": "Wed, 03 Feb 2021 15:39:32 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "1daa6b8f52528eb4891e24ef56c3e087", - "x-ms-request-id": "6530f350-da98-4c51-bab8-533137872d3f" + "x-ms-request-id": "953908ed-4ce2-4ebf-abb6-291358849c51" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignment.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignment.json index 0306ef0e7a1de..c31c5aad92c77 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignment.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignment.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-0db850cf3e01d64d8ca99c2fd0a7ef84-9428a4e4c6fd9542-00", + "traceparent": "00-8acaed47c609d84c9464f854632df4c6-1996e1fb9e5a514d-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "ad464a9fe3cce13c6653808a02a783d7", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:56 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,81 +30,66 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "ad464a9fe3cce13c6653808a02a783d7", "x-ms-request-id": [ - "8ca3ea00-09dc-4985-94ad-65baf92e6c40", - "8ca3ea00-09dc-4985-94ad-65baf92e6c40" + "497ba664-13e9-4a23-9230-f1180a1d433a", + "497ba664-13e9-4a23-9230-f1180a1d433a" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/bd1cca52-6343-4c42-a80d-ef499bdfcda8?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-5900c67b2b647c4bbb174a84f01d7590-9120640768c2fd4c-00", + "traceparent": "00-f57c146171d57a49936a4f37a364fe64-6c24620f9c268243-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "34d5fcd2cac485d24b6f5cf9d32261ef", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f" + "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:56 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "34d5fcd2cac485d24b6f5cf9d32261ef", - "x-ms-request-id": "9d5242f6-05e4-4547-831a-bfc88137ed4a" + "x-ms-request-id": "35758407-521a-4f3a-b94b-26522ba1117a" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-4c74cf7e-b7a4-e259-13a7-4f37c684879f", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f" + "id": "bd1cca52-6343-4c42-a80d-ef499bdfcda8", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-4c74cf7e-b7a4-e259-13a7-4f37c684879f?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/bd1cca52-6343-4c42-a80d-ef499bdfcda8?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-a05f97b860596641a073764d047ed2f9-b558169dd217f44d-00", + "traceparent": "00-e74c46730b370d4eb17b1fc9bb65c2a6-0a886eb04862394c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "859bf0417a56e763f063992593041ae2", "x-ms-return-client-request-id": "true" @@ -109,43 +97,47 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:37 GMT", + "Date": "Wed, 03 Feb 2021 15:39:56 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "859bf0417a56e763f063992593041ae2", - "x-ms-request-id": "bc6be7fe-b064-4853-b386-164105f6e28c" + "x-ms-request-id": "a5b5e2ae-3d8f-4142-8203-56285d3a6e79" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-4c74cf7e-b7a4-e259-13a7-4f37c684879f", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f" + "id": "bd1cca52-6343-4c42-a80d-ef499bdfcda8", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "4c74cf7e-b7a4-e259-13a7-4f37c684879f", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-4c74cf7e-b7a4-e259-13a7-4f37c684879f?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/bd1cca52-6343-4c42-a80d-ef499bdfcda8?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-f0ed2737ae23f546a37459c08e172cf9-a981ecbd64b67046-00", + "traceparent": "00-01e3e1599f3e914abdd3eeaa8ce4a459-92917faad49a764d-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "05b8e0cc4fd1b313fcef01345a600ef0", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", + "Date": "Wed, 03 Feb 2021 15:39:57 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "05b8e0cc4fd1b313fcef01345a600ef0", - "x-ms-request-id": "b4f60362-d7db-40b4-b7fd-cd7187d0af9a" + "x-ms-request-id": "79e02f3a-d7a7-444f-9285-57bb8749a768" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignmentAsync.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignmentAsync.json index 40ff6c0dc6933..b23d7efa79403 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignmentAsync.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/GetRoleAssignmentAsync.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-7f4685f45b8f9f4c8e149a65c130d1c2-e3edfd028eadb74e-00", + "traceparent": "00-2afc8eccd49fff4d9dda3e5ab6baba38-96a479f83191ec43-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "0ab24673bfa9506f329df2b1c661019e", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:39:57 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,81 +30,66 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "0ab24673bfa9506f329df2b1c661019e", "x-ms-request-id": [ - "c7faa81d-3a38-45ea-8710-c093d5ea6583", - "c7faa81d-3a38-45ea-8710-c093d5ea6583" + "0c571469-b13e-499b-b8de-5aa3f3f88514", + "0c571469-b13e-499b-b8de-5aa3f3f88514" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/d4a79462-acb2-4fdf-a5ab-677fe3381535?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-bea10b75bf97894cae2214f8116c91fa-1eb33d7173ef5c4b-00", + "traceparent": "00-0312aee5d86f374591be9986f46dcb4a-12871dc94c029c4e-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "4a664321abaabcbb0b85bdfe1b6d0522", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e" + "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:39:57 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "4a664321abaabcbb0b85bdfe1b6d0522", - "x-ms-request-id": "b05c97c5-d394-4410-819e-30c2135b0d37" + "x-ms-request-id": "84e2ad79-d813-44eb-abff-b46db6576e9f" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-9a4b1d62-86e6-a268-2c52-c7c91654883e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e" + "id": "d4a79462-acb2-4fdf-a5ab-677fe3381535", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-9a4b1d62-86e6-a268-2c52-c7c91654883e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/d4a79462-acb2-4fdf-a5ab-677fe3381535?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-b15b8697e04bd84fbb05d5acd27d4014-7751be7172d4a240-00", + "traceparent": "00-c746e9d889e8984d89afb8d4eb732085-4ee82c87c55b194c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "3c1c7961d536ed0ede10dd56f7a63add", "x-ms-return-client-request-id": "true" @@ -109,43 +97,47 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:39:57 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "3c1c7961d536ed0ede10dd56f7a63add", - "x-ms-request-id": "022d26e0-11e1-4438-a311-7d2fea783e2f" + "x-ms-request-id": "7d6fd074-ed72-49e5-b84d-e58eff5ded78" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-9a4b1d62-86e6-a268-2c52-c7c91654883e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e" + "id": "d4a79462-acb2-4fdf-a5ab-677fe3381535", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "9a4b1d62-86e6-a268-2c52-c7c91654883e", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-9a4b1d62-86e6-a268-2c52-c7c91654883e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/d4a79462-acb2-4fdf-a5ab-677fe3381535?api-version=2020-08-01-preview", "RequestMethod": "DELETE", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-6b031a6f670da94e8e11cd4263dd8231-6f360d717a588649-00", + "traceparent": "00-ceb50356e94f7347b4ce424a2279c177-ebddce2d7f2f2d47-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "838fb314b6fbb7f4628f8f60c86987bf", "x-ms-return-client-request-id": "true" }, "RequestBody": null, - "StatusCode": 200, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:39:58 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "838fb314b6fbb7f4628f8f60c86987bf", - "x-ms-request-id": "84950a9e-b779-45df-8b5a-22160b22449a" + "x-ms-request-id": "5d205a1e-2c19-4736-a675-10cccae27aaf" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignments.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignments.json index 639991a4d0089..34be36d86c89d 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignments.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignments.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-8b055bb607c6564c824471fd3d91f6af-99f3ac051b3e5044-00", + "traceparent": "00-4bc41c950423b447a8b41fdd3329eb10-4c73d874ed447944-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "bf9babd3d48085ebac4944c2683b977a", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", + "Date": "Wed, 03 Feb 2021 15:40:41 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,81 +30,66 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "bf9babd3d48085ebac4944c2683b977a", "x-ms-request-id": [ - "5ccb64bf-f303-4e49-868d-26e7148612fe", - "5ccb64bf-f303-4e49-868d-26e7148612fe" + "f11fb870-ac6d-4cec-b33e-4f709af172ee", + "f11fb870-ac6d-4cec-b33e-4f709af172ee" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/876f2d4c-0a19-4e6e-8a2e-f15fd30beba0?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-f0dbe23f2d30ee4684400c1c7635a1e3-77034b352389d64f-00", + "traceparent": "00-bf9e4ee5690bd04ea371c000aff11830-f6496813f86c8245-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "63dcaaa0829f213237b6f21036bb36db", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "1c8b573f-b298-ba74-7bfc-b080d22413d7" + "principalId": "1c8b573f-b298-ba74-7bfc-b080d22413d7", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", + "Date": "Wed, 03 Feb 2021 15:40:41 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "63dcaaa0829f213237b6f21036bb36db", - "x-ms-request-id": "458a59bc-2950-421e-b913-6c05fbd17b07" + "x-ms-request-id": "288e99cc-40ab-4d85-91c0-54590665c47b" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-1c8b573f-b298-ba74-7bfc-b080d22413d7", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "1c8b573f-b298-ba74-7bfc-b080d22413d7" + "id": "876f2d4c-0a19-4e6e-8a2e-f15fd30beba0", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "1c8b573f-b298-ba74-7bfc-b080d22413d7", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-69a303ff3239284799508de5f11d43e0-0ea15af7d82a934d-00", + "traceparent": "00-18fcaf351d565943b6f858307f10e7d2-fe171bec4fdd2b46-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "52432d96d623206137e04383246bb288", "x-ms-return-client-request-id": "true" @@ -109,27 +97,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "626", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:41 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "52432d96d623206137e04383246bb288", - "x-ms-continuation": "", - "x-ms-request-id": "755d8ee5-0a92-4f8a-b677-582c37a2cf05" + "x-ms-request-id": [ + "2c94d5ab-87d9-4371-9d32-8c9c51d80abd", + "2c94d5ab-87d9-4371-9d32-8c9c51d80abd" + ] }, - "ResponseBody": "[{\u0022id\u0022:\u0022dbed89e9-88b2-4968-b719-87c5c7fbb2ce\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u0022e6a55cd1-b0db-4fc9-b3e3-88507ceda553\u0022},{\u0022id\u0022:\u00228c8d0f88-2e26-464e-ac55-eef9e2fc0d7e\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u0022412137cd-bce6-42cd-952a-92a3ce9130ee\u0022},{\u0022id\u0022:\u00229bffc76b-e4a2-4527-a2fe-0ebff3524b1a\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u002200b81593-6414-45e8-98bf-c0396b2972ee\u0022},{\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78-1c8b573f-b298-ba74-7bfc-b080d22413d7\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u00221c8b573f-b298-ba74-7bfc-b080d22413d7\u0022}]" + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/dbed89e9-88b2-4968-b719-87c5c7fbb2ce?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-dcbe5916ff47194fb86230f27356fbaa-ed32e2cbed615a43-00", + "traceparent": "00-954e55341be501429d5c6f04a9b0588c-6a76302657205046-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "bd226c35345ebdda256ae4e1c06484bf", "x-ms-return-client-request-id": "true" @@ -137,30 +133,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "2958", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "bd226c35345ebdda256ae4e1c06484bf", - "x-ms-request-id": "5a0b4601-37e7-4931-b914-e7b9c452c7a1" + "x-ms-request-id": [ + "3eb0ae2c-524d-4bf5-a81d-6c5dc711b8b0", + "3eb0ae2c-524d-4bf5-a81d-6c5dc711b8b0" + ] }, - "ResponseBody": { - "id": "dbed89e9-88b2-4968-b719-87c5c7fbb2ce", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "e6a55cd1-b0db-4fc9-b3e3-88507ceda553" - } + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/8c8d0f88-2e26-464e-ac55-eef9e2fc0d7e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/dd665582-e433-40ca-b183-1b1b33e73375?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-7994912aea58c047b4869360fb10271b-dbff56a645332149-00", + "traceparent": "00-5a4ca0e41c9b7b4ba2856d9cc3eebe18-bf2fd33bb4808c45-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "a5e9d5c5c1e0cab449bb2bbe3faffccc", "x-ms-return-client-request-id": "true" @@ -168,30 +169,60 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "725", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "a5e9d5c5c1e0cab449bb2bbe3faffccc", - "x-ms-request-id": "41f5a30f-aa6d-45ab-a5c4-8108c367adf8" + "x-ms-request-id": [ + "8d8d233d-f01f-4c6c-866f-001a25b625ed", + "8d8d233d-f01f-4c6c-866f-001a25b625ed" + ] }, "ResponseBody": { - "id": "8c8d0f88-2e26-464e-ac55-eef9e2fc0d7e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "412137cd-bce6-42cd-952a-92a3ce9130ee" + "name": "Synapse Linked Data Manager", + "description": "Creation and management of managed private endpoints, linked services, and credentials.\u200B", + "id": "dd665582-e433-40ca-b183-1b1b33e73375", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/managedPrivateEndpoints/write", + "Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete", + "Microsoft.Synapse/workspaces/linkedServices/write", + "Microsoft.Synapse/workspaces/credentials/write", + "Microsoft.Synapse/workspaces/linkedServices/delete", + "Microsoft.Synapse/workspaces/credentials/delete" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}" + ], + "availabilityStatus": "Available" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/9bffc76b-e4a2-4527-a2fe-0ebff3524b1a?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/7572bffe-f453-4b66-912a-46cc5ef38fda?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-5b7d4670ecc0da4b853a03c9127cd191-46c6203711041f49-00", + "traceparent": "00-5cd5fe79416e0647b9611b5374e35fe8-7adb3e550880c74c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "c9da6a037999627c52862db8f17f60d3", "x-ms-return-client-request-id": "true" @@ -199,30 +230,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "2445", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "c9da6a037999627c52862db8f17f60d3", - "x-ms-request-id": "9b92210f-4989-4d59-ab29-c5088de52c78" + "x-ms-request-id": [ + "0655a3ce-100c-4102-8b67-054f5441198b", + "0655a3ce-100c-4102-8b67-054f5441198b" + ] }, - "ResponseBody": { - "id": "9bffc76b-e4a2-4527-a2fe-0ebff3524b1a", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "00b81593-6414-45e8-98bf-c0396b2972ee" - } + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-1c8b573f-b298-ba74-7bfc-b080d22413d7?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/05930f57-09a3-4c0d-9fa9-6d1eb91c178b?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-0fa220ccadebc244b62f68ba63e9d595-ecfb1eca0982434f-00", + "traceparent": "00-1fd5b677060a884584728a58e855c65f-4bbe462349ce0f4b-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "4fbd845c0d8274a7b85874a2081b7e75", "x-ms-return-client-request-id": "true" @@ -230,43 +266,309 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "1620", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "4fbd845c0d8274a7b85874a2081b7e75", - "x-ms-request-id": "2feb55f0-a86b-49c3-b98a-5167d00db73b" + "x-ms-request-id": [ + "d38b20dd-50db-4ad4-ab8d-e145a06b42f2", + "d38b20dd-50db-4ad4-ab8d-e145a06b42f2" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/53faaa0e-40b6-40c8-a2ff-e38f2d388875?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-4c1de2ef18a0b346924e3789dd19fbd2-f49e7c8d08913d4f-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "56de186dba894c265886525993fbd8c9", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "625", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "56de186dba894c265886525993fbd8c9", + "x-ms-request-id": [ + "cd41b5b3-312a-4ad6-8c39-9f0038b1064c", + "cd41b5b3-312a-4ad6-8c39-9f0038b1064c" + ] }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-1c8b573f-b298-ba74-7bfc-b080d22413d7", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "1c8b573f-b298-ba74-7bfc-b080d22413d7" + "name": "Synapse Artifact User", + "description": "Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B", + "id": "53faaa0e-40b6-40c8-a2ff-e38f2d388875", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/artifacts/read", + "Microsoft.Synapse/workspaces/notebooks/viewOutputs/action", + "Microsoft.Synapse/workspaces/pipelines/viewOutputs/action" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}" + ], + "availabilityStatus": "Available" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-1c8b573f-b298-ba74-7bfc-b080d22413d7?api-version=2020-02-01-preview", - "RequestMethod": "DELETE", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/e3844cc7-4670-42cb-9349-9bdac1ee7881?api-version=2020-08-01-preview", + "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-2aace06e7dc870478e830994ca066059-f6fa5b452088cb49-00", + "traceparent": "00-1ac7ac4dce225f4abc65382cec19a707-9c683fcb1afd5c48-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], - "x-ms-client-request-id": "56de186dba894c265886525993fbd8c9", + "x-ms-client-request-id": "ba62585bacf1f649c266114004d95a36", "x-ms-return-client-request-id": "true" }, "RequestBody": null, "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "1161", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "ba62585bacf1f649c266114004d95a36", + "x-ms-request-id": [ + "bc0ec67c-97dd-4207-8833-428c3a88f643", + "bc0ec67c-97dd-4207-8833-428c3a88f643" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/5eb298b4-692c-4241-9cf0-f58a3b42bb25?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-9a636e158b54214299c7affe9b3e0b4c-af7b0555450d2b45-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "d94bb70809a1a2495e70f7fbba4de0bc", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "752", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "d94bb70809a1a2495e70f7fbba4de0bc", + "x-ms-request-id": [ + "9671de4d-de3c-4b30-bce8-ba7517975e30", + "9671de4d-de3c-4b30-bce8-ba7517975e30" + ] + }, + "ResponseBody": { + "name": "Synapse Credential User", + "description": "Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B", + "id": "5eb298b4-692c-4241-9cf0-f58a3b42bb25", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/linkedServices/useSecret/action", + "Microsoft.Synapse/workspaces/credentials/useSecret/action" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}", + "workspaces/{workspaceName}/linkedServices/{linkedServiceName}", + "workspaces/{workspaceName}/credentials/{credentialName}" + ], + "availabilityStatus": "Available" + } + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/2a385764-43e8-416c-9825-7b18d05a2c4b?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-d87ec81a6aca5f4590dbf6a5d72524af-4449380e863bbf47-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "af47aa80c3b9c084cee79323a8e5487e", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "874", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "af47aa80c3b9c084cee79323a8e5487e", + "x-ms-request-id": [ + "193905d6-afbd-4d63-b6d1-3b949c205697", + "193905d6-afbd-4d63-b6d1-3b949c205697" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/c3a6d2f1-a26f-4810-9b0f-591308d5cbf1?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-f8ed8e147a44444882759436648f6d28-d1de973c0cd34645-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "dc511b2cfeb051280fbf5c81b54e3b74", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "1410", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "dc511b2cfeb051280fbf5c81b54e3b74", + "x-ms-request-id": [ + "db467bca-b75f-450f-b8f9-ccd7fd302564", + "db467bca-b75f-450f-b8f9-ccd7fd302564" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/7af0c69a-a548-47d6-aea3-d00e69bd83aa?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-f32975181fd49749b506b4512b92403d-5f8cd5873a467247-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "59c05585ab92457d338a0bba7625fa78", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "962", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:42 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "59c05585ab92457d338a0bba7625fa78", + "x-ms-request-id": [ + "31921001-632e-4fa1-970a-c2d8baeb0ff8", + "31921001-632e-4fa1-970a-c2d8baeb0ff8" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/876f2d4c-0a19-4e6e-8a2e-f15fd30beba0?api-version=2020-08-01-preview", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-c5f740480283f94b9fbd0a7ad01b842a-572cc1ce05902646-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "9ecf782804fc810c82f59ffa66020a80", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:38 GMT", + "Date": "Wed, 03 Feb 2021 15:40:43 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "x-ms-client-request-id": "56de186dba894c265886525993fbd8c9", - "x-ms-request-id": "6201bae6-cc29-4282-a907-1b834bde6193" + "x-ms-client-request-id": "9ecf782804fc810c82f59ffa66020a80", + "x-ms-request-id": "22de8809-9e9c-4ab6-8820-2d8a186a9c61" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignmentsAsync.json b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignmentsAsync.json index 4c217dc76a0df..a51676677e05f 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignmentsAsync.json +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/SessionRecords/AccessControlClientLiveTests/ListRoleAssignmentsAsync.json @@ -1,15 +1,18 @@ { "Entries": [ { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-08c3193c50819c45aed66c5422f7abfa-00453e36f0b9544f-00", + "traceparent": "00-1fbdb2eeb8eaba4cbdfc24cdf39130d1-16967925efcd2747-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "c113db38b0c06d60440b4a7205647985", "x-ms-return-client-request-id": "true" @@ -17,9 +20,9 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "356", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:40:43 GMT", "Server": [ "Microsoft-HTTPAPI/2.0", "Microsoft-HTTPAPI/2.0" @@ -27,81 +30,66 @@ "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "c113db38b0c06d60440b4a7205647985", "x-ms-request-id": [ - "6a4ee7f5-59ad-495e-ad20-1e48867d9919", - "6a4ee7f5-59ad-495e-ad20-1e48867d9919" + "e412dc18-659f-4f3e-8efb-a4751f749821", + "e412dc18-659f-4f3e-8efb-a4751f749821" ] }, - "ResponseBody": { - "value": [ - { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "name": "Workspace Admin", - "isBuiltIn": true - }, - { - "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1", - "name": "Apache Spark Admin", - "isBuiltIn": true - }, - { - "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa", - "name": "Sql Admin", - "isBuiltIn": true - }, - { - "id": "24fa9e0a-d130-4536-9f92-8b976b16986b", - "name": "Scope Admin", - "isBuiltIn": true - } - ] - } + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", - "RequestMethod": "POST", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/a567ea28-b118-4e6b-b710-700002e31076?api-version=2020-08-01-preview", + "RequestMethod": "PUT", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "Content-Length": "102", + "Content-Length": "146", "Content-Type": "application/json", - "traceparent": "00-dc36828add621d4ea7824b7c3f245906-393ceeb06847854d-00", + "traceparent": "00-be84c0c0e5b98f418efcf0001dd0550d-df3b3ef15b8a884c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "b723c56f2c8bb4fbaeca21d8d29fa1a5", "x-ms-return-client-request-id": "true" }, "RequestBody": { "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "d70cd59c-e4fb-eefe-69e2-719493a4e55a" + "principalId": "d70cd59c-e4fb-eefe-69e2-719493a4e55a", + "scope": "workspaces/workspacechhamosynapse" }, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "200", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", + "Date": "Wed, 03 Feb 2021 15:40:43 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "b723c56f2c8bb4fbaeca21d8d29fa1a5", - "x-ms-request-id": "0bf80255-fdc3-4913-b877-1b29edbe8a8e" + "x-ms-request-id": "14c64c1e-020b-41f8-81e0-7f50a8b88ca2" }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d70cd59c-e4fb-eefe-69e2-719493a4e55a", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "d70cd59c-e4fb-eefe-69e2-719493a4e55a" + "id": "a567ea28-b118-4e6b-b710-700002e31076", + "roleDefinitionId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", + "principalId": "d70cd59c-e4fb-eefe-69e2-719493a4e55a", + "scope": "workspaces/workspacechhamosynapse" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-2d9cfbd220bcaf4b925cb0f9ecbfdb76-09e93eedaad42349-00", + "traceparent": "00-1edec45099c58549a10331b35aad7238-c0c4e917c048a442-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "291b214d870454dddc2457de3fcbda9f", "x-ms-return-client-request-id": "true" @@ -109,27 +97,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "626", + "Content-Length": "13543", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:43 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "291b214d870454dddc2457de3fcbda9f", - "x-ms-continuation": "", - "x-ms-request-id": "cd04dc7f-8580-412d-948f-c01c05f72684" + "x-ms-request-id": [ + "f95f18bf-9fdf-4ed1-8a70-157bdef2bd74", + "f95f18bf-9fdf-4ed1-8a70-157bdef2bd74" + ] }, - "ResponseBody": "[{\u0022id\u0022:\u0022dbed89e9-88b2-4968-b719-87c5c7fbb2ce\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u0022e6a55cd1-b0db-4fc9-b3e3-88507ceda553\u0022},{\u0022id\u0022:\u00228c8d0f88-2e26-464e-ac55-eef9e2fc0d7e\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u0022412137cd-bce6-42cd-952a-92a3ce9130ee\u0022},{\u0022id\u0022:\u00229bffc76b-e4a2-4527-a2fe-0ebff3524b1a\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u002200b81593-6414-45e8-98bf-c0396b2972ee\u0022},{\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d70cd59c-e4fb-eefe-69e2-719493a4e55a\u0022,\u0022roleId\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022principalId\u0022:\u0022d70cd59c-e4fb-eefe-69e2-719493a4e55a\u0022}]" + "ResponseBody": "[{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Linked Data Manager\u0022,\u0022description\u0022:\u0022Creation and management of managed private endpoints, linked services, and credentials.\u200B\u0022,\u0022id\u0022:\u0022dd665582-e433-40ca-b183-1b1b33e73375\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Artifact User\u0022,\u0022description\u0022:\u0022Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B\u0022,\u0022id\u0022:\u002253faaa0e-40b6-40c8-a2ff-e38f2d388875\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse Credential User\u0022,\u0022description\u0022:\u0022Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B\u0022,\u0022id\u0022:\u00225eb298b4-692c-4241-9cf0-f58a3b42bb25\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022},{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}]" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/dbed89e9-88b2-4968-b719-87c5c7fbb2ce?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-329feec36f91dd41bccb98c2feb18663-e80b5f37bd208f43-00", + "traceparent": "00-f66a1d20c779e04b89bab6d98237a0ab-61e05c799d654f4e-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "3f03ef25c24070f9da572930c3251bca", "x-ms-return-client-request-id": "true" @@ -137,30 +133,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "2958", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "3f03ef25c24070f9da572930c3251bca", - "x-ms-request-id": "a3587b4a-bab6-4abf-8420-a8ca2c954536" + "x-ms-request-id": [ + "3b67331a-0140-48a2-948f-932df6bc74bf", + "3b67331a-0140-48a2-948f-932df6bc74bf" + ] }, - "ResponseBody": { - "id": "dbed89e9-88b2-4968-b719-87c5c7fbb2ce", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "e6a55cd1-b0db-4fc9-b3e3-88507ceda553" - } + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools and Integration runtimes.\u00A0 Includes create, read, update and delete access to all published code artifacts.\u00A0 Includes Compute Operator, Linked Data Manager, and Credential User permissions on the workspace system identity credential.\u00A0 Includes granting access.\u00A0 Azure permissions are required to create, delete, or manage compute resources.\u200B\u0022,\u0022id\u0022:\u00226e4bf58a-b8e1-4cc3-bbf9-d73143322b78\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/write\u0022,\u0022Microsoft.Synapse/workspaces/roleAssignments/delete\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/write\u0022,\u0022Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/credentials/useSecret/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/8c8d0f88-2e26-464e-ac55-eef9e2fc0d7e?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/dd665582-e433-40ca-b183-1b1b33e73375?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-c67301b437339b4680c81b69d07df3c7-25e6ed4f6e992b43-00", + "traceparent": "00-ac39a3517d56a74c90a19fae01394b63-5d475c72b9ca3049-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "7246cc41bc89e755e7cfda66d51d75e2", "x-ms-return-client-request-id": "true" @@ -168,30 +169,60 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "725", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:40 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "7246cc41bc89e755e7cfda66d51d75e2", - "x-ms-request-id": "baa5b621-2b3c-4fd4-999e-c14652784a49" + "x-ms-request-id": [ + "d3c5949c-5ba6-4848-92ca-c1fb27b3a8b8", + "d3c5949c-5ba6-4848-92ca-c1fb27b3a8b8" + ] }, "ResponseBody": { - "id": "8c8d0f88-2e26-464e-ac55-eef9e2fc0d7e", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "412137cd-bce6-42cd-952a-92a3ce9130ee" + "name": "Synapse Linked Data Manager", + "description": "Creation and management of managed private endpoints, linked services, and credentials.\u200B", + "id": "dd665582-e433-40ca-b183-1b1b33e73375", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/managedPrivateEndpoints/write", + "Microsoft.Synapse/workspaces/managedPrivateEndpoints/delete", + "Microsoft.Synapse/workspaces/linkedServices/write", + "Microsoft.Synapse/workspaces/credentials/write", + "Microsoft.Synapse/workspaces/linkedServices/delete", + "Microsoft.Synapse/workspaces/credentials/delete" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}" + ], + "availabilityStatus": "Available" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/9bffc76b-e4a2-4527-a2fe-0ebff3524b1a?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/7572bffe-f453-4b66-912a-46cc5ef38fda?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-e0208ae4e6783c478393145b1dd1c211-3a79c30500bac049-00", + "traceparent": "00-4c3b0f3770824b45aa793584c4391958-b20078b5d742ca4c-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "e3b281f0619b8b6427aa4fac5ead91b7", "x-ms-return-client-request-id": "true" @@ -199,30 +230,35 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "146", + "Content-Length": "2445", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:41 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "e3b281f0619b8b6427aa4fac5ead91b7", - "x-ms-request-id": "de7aada1-146a-451a-bfaf-1e18d6ea3f81" + "x-ms-request-id": [ + "6bc01e19-bbab-4189-8532-979509ffcd83", + "6bc01e19-bbab-4189-8532-979509ffcd83" + ] }, - "ResponseBody": { - "id": "9bffc76b-e4a2-4527-a2fe-0ebff3524b1a", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "00b81593-6414-45e8-98bf-c0396b2972ee" - } + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Contributor\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools, Apache Spark pools, Integration runtimes.\u00A0 Includes create, read, update, and delete access to all published code artifacts and their outputs, including credentials and linked services.\u00A0 Includes compute operator permissions. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u00227572bffe-f453-4b66-912a-46cc5ef38fda\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d70cd59c-e4fb-eefe-69e2-719493a4e55a?api-version=2020-02-01-preview", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/05930f57-09a3-4c0d-9fa9-6d1eb91c178b?api-version=2020-08-01-preview", "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-c3dadeaecd206943a9794586ba906878-bb03ba8d8108ff47-00", + "traceparent": "00-6c85a58931d5744e87acb89deb69d9b7-b7fccff3775a2d4f-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], "x-ms-client-request-id": "739c8c0967846915991b5870e7929bbc", "x-ms-return-client-request-id": "true" @@ -230,43 +266,309 @@ "RequestBody": null, "StatusCode": 200, "ResponseHeaders": { - "Content-Length": "183", + "Content-Length": "1620", "Content-Type": "application/json; charset=utf-8", - "Date": "Fri, 15 Jan 2021 16:32:41 GMT", - "Server": "Microsoft-HTTPAPI/2.0", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "x-ms-client-request-id": "739c8c0967846915991b5870e7929bbc", - "x-ms-request-id": "c9320cc2-563e-4a73-bc3a-f4edbefd338e" + "x-ms-request-id": [ + "1968f542-aa33-4a0c-8b0a-829af25f4941", + "1968f542-aa33-4a0c-8b0a-829af25f4941" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Artifact Publisher\u0022,\u0022description\u0022:\u0022Create, read, update, and delete access to published code artifacts and their outputs. Does not include permission to run code or pipelines, or to grant access.\u00A0\u200B\u0022,\u0022id\u0022:\u002205930f57-09a3-4c0d-9fa9-6d1eb91c178b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/write\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/write\u0022,\u0022Microsoft.Synapse/workspaces/triggers/write\u0022,\u0022Microsoft.Synapse/workspaces/datasets/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/dataFlows/delete\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/delete\u0022,\u0022Microsoft.Synapse/workspaces/triggers/delete\u0022,\u0022Microsoft.Synapse/workspaces/datasets/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/pipelines/viewOutputs/action\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/53faaa0e-40b6-40c8-a2ff-e38f2d388875?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-2e13b6c487f14445a2d1a91c9b7de82b-aa4a8bd6e898ab48-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "414046e23872df2e67bb4bdf6ca9883a", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "625", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "414046e23872df2e67bb4bdf6ca9883a", + "x-ms-request-id": [ + "0bfcb502-57dc-4750-85b3-619336200813", + "0bfcb502-57dc-4750-85b3-619336200813" + ] }, "ResponseBody": { - "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d70cd59c-e4fb-eefe-69e2-719493a4e55a", - "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78", - "principalId": "d70cd59c-e4fb-eefe-69e2-719493a4e55a" + "name": "Synapse Artifact User", + "description": "Read access to published code artifacts and their outputs. Can create new artifacts but cannot publish changes or run code without additional permissions.\u200B", + "id": "53faaa0e-40b6-40c8-a2ff-e38f2d388875", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/artifacts/read", + "Microsoft.Synapse/workspaces/notebooks/viewOutputs/action", + "Microsoft.Synapse/workspaces/pipelines/viewOutputs/action" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}" + ], + "availabilityStatus": "Available" } }, { - "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/rbac/roleAssignments/6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-d70cd59c-e4fb-eefe-69e2-719493a4e55a?api-version=2020-02-01-preview", - "RequestMethod": "DELETE", + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/e3844cc7-4670-42cb-9349-9bdac1ee7881?api-version=2020-08-01-preview", + "RequestMethod": "GET", "RequestHeaders": { - "Accept": "application/json", + "Accept": [ + "application/json", + "text/json" + ], "Authorization": "Sanitized", - "traceparent": "00-028d670f6414c4438f8b1ded19511c62-b953ab27fe352047-00", + "traceparent": "00-d54630d336d3a641a517cbd7bd0995d5-416f46b5eeaffe4d-00", "User-Agent": [ - "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210115.1", - "(.NET 5.0.0; Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64)" + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" ], - "x-ms-client-request-id": "414046e23872df2e67bb4bdf6ca9883a", + "x-ms-client-request-id": "485d233e0280895e6b48498009f4a494", "x-ms-return-client-request-id": "true" }, "RequestBody": null, "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "1161", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "485d233e0280895e6b48498009f4a494", + "x-ms-request-id": [ + "f1093dff-cc69-47aa-a5e1-619e11952f95", + "f1093dff-cc69-47aa-a5e1-619e11952f95" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse Compute Operator\u0022,\u0022description\u0022:\u0022Submit Spark jobs and notebooks and view logs.\u00A0 Includes canceling Spark jobs submitted by any user. Requires additional credential use permissions on the workspace system identity to run pipelines, view pipeline runs and outputs.\u200B\u0022,\u0022id\u0022:\u0022e3844cc7-4670-42cb-9349-9bdac1ee7881\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/scopePools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/integrationRuntimes/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/cancelPipelineRun/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/5eb298b4-692c-4241-9cf0-f58a3b42bb25?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-f1fc1ed164b12f40844d3f19268fc4cd-22f68c25b6a2e74d-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "17ca920f4f6cd0455dbd0bc91c36fdf0", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "752", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "17ca920f4f6cd0455dbd0bc91c36fdf0", + "x-ms-request-id": [ + "d7004cd4-2e10-4dae-9979-f01246a59355", + "d7004cd4-2e10-4dae-9979-f01246a59355" + ] + }, + "ResponseBody": { + "name": "Synapse Credential User", + "description": "Runtime and configuration-time use of secrets within credentials and linked services in activities like pipeline runs. To run pipelines, this role is required, scoped to the workspace system identity.\u200B", + "id": "5eb298b4-692c-4241-9cf0-f58a3b42bb25", + "isBuiltIn": true, + "permissions": [ + { + "actions": [], + "notActions": [], + "dataActions": [ + "Microsoft.Synapse/workspaces/read", + "Microsoft.Synapse/workspaces/linkedServices/useSecret/action", + "Microsoft.Synapse/workspaces/credentials/useSecret/action" + ], + "notDataActions": [] + } + ], + "scopes": [ + "workspaces/{workspaceName}", + "workspaces/{workspaceName}/linkedServices/{linkedServiceName}", + "workspaces/{workspaceName}/credentials/{credentialName}" + ], + "availabilityStatus": "Available" + } + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/2a385764-43e8-416c-9825-7b18d05a2c4b?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-87ddc94bc7131c4bae43a0975a539e27-55be45b6c4e9de4b-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "c4321d925234df3ce8b6d629eeaed672", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "874", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "c4321d925234df3ce8b6d629eeaed672", + "x-ms-request-id": [ + "ecb10591-41b6-4f9d-a705-71c43a3d7a86", + "ecb10591-41b6-4f9d-a705-71c43a3d7a86" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse User\u0022,\u0022description\u0022:\u0022List and view details of SQL pools, Apache Spark pools, Integration runtimes, and published linked services and credentials.\u00A0 Does not include other published code artifacts.\u00A0 Can create new artifacts but cannot run or publish without additional permissions.\u00A0\u00A0\u00A0\u200B\u0022,\u0022id\u0022:\u00222a385764-43e8-416c-9825-7b18d05a2c4b\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022,\u0022workspaces/{workspaceName}/bigDataPools/{bigDataPoolName}\u0022,\u0022workspaces/{workspaceName}/scopePools/{scopePoolName}\u0022,\u0022workspaces/{workspaceName}/integrationRuntimes/{integrationRuntimeName}\u0022,\u0022workspaces/{workspaceName}/linkedServices/{linkedServiceName}\u0022,\u0022workspaces/{workspaceName}/credentials/{credentialName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/c3a6d2f1-a26f-4810-9b0f-591308d5cbf1?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-a1ba51eca855f043a475d658dc807e1a-26b3e557de7f8c45-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "dacfb61671deeecdde8ceac3f6946c34", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "1410", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "dacfb61671deeecdde8ceac3f6946c34", + "x-ms-request-id": [ + "07bb74cf-c61a-46d2-847a-2a067e5c63d5", + "07bb74cf-c61a-46d2-847a-2a067e5c63d5" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Apache Spark Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to Apache Spark Pools.\u00A0 Create, read, update, and delete access to published Spark job definitions, notebooks, and their outputs, and to libraries, linked services and credentials.\u00A0 Includes read access to all other published code artifacts. Does not include permission to use credentials and run pipelines. Does not include granting access.\u200B\u0022,\u0022id\u0022:\u0022c3a6d2f1-a26f-4810-9b0f-591308d5cbf1\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/useCompute/action\u0022,\u0022Microsoft.Synapse/workspaces/bigDataPools/viewLogs/action\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/write\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/delete\u0022,\u0022Microsoft.Synapse/workspaces/sparkJobDefinitions/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/delete\u0022,\u0022Microsoft.Synapse/workspaces/libraries/write\u0022,\u0022Microsoft.Synapse/workspaces/notebooks/viewOutputs/action\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleDefinitions/7af0c69a-a548-47d6-aea3-d00e69bd83aa?api-version=2020-08-01-preview", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-b9c3caf5389868439bc847986bed665c-99a0e1171682f54b-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "eced594be0c1bc5f55ea2fb6781be2af", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "962", + "Content-Type": "application/json; charset=utf-8", + "Date": "Wed, 03 Feb 2021 15:40:44 GMT", + "Server": [ + "Microsoft-HTTPAPI/2.0", + "Microsoft-HTTPAPI/2.0" + ], + "Strict-Transport-Security": "max-age=31536000; includeSubDomains", + "x-ms-client-request-id": "eced594be0c1bc5f55ea2fb6781be2af", + "x-ms-request-id": [ + "a2832fb0-43cf-4516-94db-5162bb39b071", + "a2832fb0-43cf-4516-94db-5162bb39b071" + ] + }, + "ResponseBody": "{\u0022name\u0022:\u0022Synapse SQL Administrator\u0022,\u0022description\u0022:\u0022Full Synapse access to serverless SQL pools.\u00A0 Create, read, update, and delete access to published SQL scripts, credentials and linked services.\u00A0 Includes read access to all other published code artifacts.\u00A0 Does not include permission to use credentials and run pipelines. Does not include granting access.\u0022,\u0022id\u0022:\u00227af0c69a-a548-47d6-aea3-d00e69bd83aa\u0022,\u0022isBuiltIn\u0022:true,\u0022permissions\u0022:[{\u0022actions\u0022:[],\u0022notActions\u0022:[],\u0022dataActions\u0022:[\u0022Microsoft.Synapse/workspaces/read\u0022,\u0022Microsoft.Synapse/workspaces/artifacts/read\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/write\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/write\u0022,\u0022Microsoft.Synapse/workspaces/credentials/write\u0022,\u0022Microsoft.Synapse/workspaces/sqlScripts/delete\u0022,\u0022Microsoft.Synapse/workspaces/linkedServices/delete\u0022,\u0022Microsoft.Synapse/workspaces/credentials/delete\u0022],\u0022notDataActions\u0022:[]}],\u0022scopes\u0022:[\u0022workspaces/{workspaceName}\u0022],\u0022availabilityStatus\u0022:\u0022Available\u0022}" + }, + { + "RequestUri": "https://workspacechhamosynapse.dev.azuresynapse.net/roleAssignments/a567ea28-b118-4e6b-b710-700002e31076?api-version=2020-08-01-preview", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": [ + "application/json", + "text/json" + ], + "Authorization": "Sanitized", + "traceparent": "00-6dfed61cb29c0b4299abb4dcb6b0cba3-067082b272d2ea4b-00", + "User-Agent": [ + "azsdk-net-Analytics.Synapse.AccessControl/1.0.0-alpha.20210203.1", + "(.NET 5.0.2; Microsoft Windows 10.0.19042)" + ], + "x-ms-client-request-id": "65b298e6226721124f43e6a86878e953", + "x-ms-return-client-request-id": "true" + }, + "RequestBody": null, + "StatusCode": 204, "ResponseHeaders": { "Content-Length": "0", - "Date": "Fri, 15 Jan 2021 16:32:41 GMT", + "Date": "Wed, 03 Feb 2021 15:40:45 GMT", "Server": "Microsoft-HTTPAPI/2.0", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", - "x-ms-client-request-id": "414046e23872df2e67bb4bdf6ca9883a", - "x-ms-request-id": "ffeb9761-5ef7-4b37-8a98-8870fbb76e04" + "x-ms-client-request-id": "65b298e6226721124f43e6a86878e953", + "x-ms-request-id": "1b0d96ca-4b37-45dc-be70-023788269613" }, "ResponseBody": [] } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/samples/Sample1_HelloWorld.cs b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/samples/Sample1_HelloWorld.cs index d42a42ea3d8db..da9dd475443ad 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/samples/Sample1_HelloWorld.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.AccessControl/tests/samples/Sample1_HelloWorld.cs @@ -27,40 +27,47 @@ public void AddAndRemoveRoleAssignmentSync() string endpoint = ""; /*@@*/endpoint = TestEnvironment.EndpointUrl; - AccessControlClient client = new AccessControlClient(new Uri(endpoint), new DefaultAzureCredential()); + RoleAssignmentsClient roleAssignmentsClient = new RoleAssignmentsClient(new Uri(endpoint), new DefaultAzureCredential()); + RoleDefinitionsClient definitionsClient = new RoleDefinitionsClient(new Uri(endpoint), new DefaultAzureCredential()); #endregion #region Snippet:PrepCreateRoleAssignment - Pageable roles = client.GetRoleDefinitions(); - SynapseRole role = roles.Single(role => role.Name == "Workspace Admin"); - string roleID = role.Id; + Response> roles = definitionsClient.ListRoleDefinitions(); + SynapseRoleDefinition role = roles.Value.Single(role => role.Name == "Workspace Admin"); + Guid roleId = role.Id.Value; + + string assignedScope = "workspaces/"; + /*@@*/assignedScope = "workspaces/workspacechhamosynapse"; // Replace the string below with the ID you'd like to assign the role. - string principalId = ""; - /*@@*/principalId = Guid.NewGuid().ToString(); + Guid principalId = Guid.Parse(""); + /*@@*/principalId = Guid.NewGuid(); + + // Replace the string below with the ID of the assignment you'd like to use. + string assignmentId = ""; + /*@@*/assignmentId = Guid.NewGuid().ToString(); #endregion #region Snippet:CreateRoleAssignment - RoleAssignmentOptions request = new RoleAssignmentOptions(roleID, principalId); - Response response = client.CreateRoleAssignment(request); + Response response = roleAssignmentsClient.CreateRoleAssignment (assignmentId, roleId, principalId, assignedScope); RoleAssignmentDetails roleAssignmentAdded = response.Value; #endregion #region Snippet:RetrieveRoleAssignment - RoleAssignmentDetails roleAssignment = client.GetRoleAssignmentById(roleAssignmentAdded.Id); - Console.WriteLine($"Role {roleAssignment.RoleId} is assigned to {roleAssignment.PrincipalId}."); + RoleAssignmentDetails roleAssignment = roleAssignmentsClient.GetRoleAssignmentById(roleAssignmentAdded.Id); + Console.WriteLine($"Role {roleAssignment.RoleDefinitionId} is assigned to {roleAssignment.PrincipalId}."); #endregion #region Snippet:ListRoleAssignments - Response> roleAssignments = client.GetRoleAssignments(); - foreach (RoleAssignmentDetails assignment in roleAssignments.Value) + Response> roleAssignments = definitionsClient.ListRoleDefinitions(); + foreach (SynapseRoleDefinition assignment in roleAssignments.Value) { Console.WriteLine(assignment.Id); } #endregion #region Snippet:DeleteRoleAssignment - client.DeleteRoleAssignmentById(roleAssignment.Id); + roleAssignmentsClient.DeleteRoleAssignmentById(roleAssignment.Id); #endregion } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/api/Azure.Analytics.Synapse.Artifacts.netstandard2.0.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/api/Azure.Analytics.Synapse.Artifacts.netstandard2.0.cs index 45018b4a5deb8..0367ee8d22c26 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/api/Azure.Analytics.Synapse.Artifacts.netstandard2.0.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/api/Azure.Analytics.Synapse.Artifacts.netstandard2.0.cs @@ -180,6 +180,63 @@ public IntegrationRuntimesClient(System.Uri endpoint, Azure.Core.TokenCredential public virtual Azure.Response List(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } public virtual System.Threading.Tasks.Task> ListAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } } + public partial class LibraryClient + { + protected LibraryClient() { } + public LibraryClient(System.Uri endpoint, Azure.Core.TokenCredential credential) { } + public LibraryClient(System.Uri endpoint, Azure.Core.TokenCredential credential, Azure.Analytics.Synapse.Artifacts.ArtifactsClientOptions options) { } + public virtual Azure.Response Get(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> GetAsync(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response GetOperationResult(string operationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> GetOperationResultAsync(string operationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Pageable List(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.AsyncPageable ListAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Analytics.Synapse.Artifacts.LibraryCreateOrAppendOperation StartCreateOrAppend(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = default(long?), System.IO.Stream content = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task StartCreateOrAppendAsync(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = default(long?), System.IO.Stream content = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Analytics.Synapse.Artifacts.LibraryDeleteOperation StartDelete(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task StartDeleteAsync(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Analytics.Synapse.Artifacts.LibraryFlushOperation StartFlush(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task StartFlushAsync(string libraryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + } + public partial class LibraryCreateOrAppendOperation : Azure.Operation + { + internal LibraryCreateOrAppendOperation() { } + public override bool HasCompleted { get { throw null; } } + public override bool HasValue { get { throw null; } } + public override string Id { get { throw null; } } + public override Azure.Response Value { get { throw null; } } + public override Azure.Response GetRawResponse() { throw null; } + public override Azure.Response UpdateStatus(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask UpdateStatusAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + } + public partial class LibraryDeleteOperation : Azure.Operation + { + internal LibraryDeleteOperation() { } + public override bool HasCompleted { get { throw null; } } + public override bool HasValue { get { throw null; } } + public override string Id { get { throw null; } } + public override Azure.Response Value { get { throw null; } } + public override Azure.Response GetRawResponse() { throw null; } + public override Azure.Response UpdateStatus(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask UpdateStatusAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + } + public partial class LibraryFlushOperation : Azure.Operation + { + internal LibraryFlushOperation() { } + public override bool HasCompleted { get { throw null; } } + public override bool HasValue { get { throw null; } } + public override string Id { get { throw null; } } + public override Azure.Response Value { get { throw null; } } + public override Azure.Response GetRawResponse() { throw null; } + public override Azure.Response UpdateStatus(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask UpdateStatusAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public override System.Threading.Tasks.ValueTask> WaitForCompletionAsync(System.TimeSpan pollingInterval, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + } public partial class LinkedServiceClient { protected LinkedServiceClient() { } @@ -1628,6 +1685,14 @@ public ChainingTrigger(Azure.Analytics.Synapse.Artifacts.Models.TriggerPipelineR public Azure.Analytics.Synapse.Artifacts.Models.TriggerPipelineReference Pipeline { get { throw null; } set { } } public string RunDimension { get { throw null; } set { } } } + public partial class CloudErrorAutoGenerated + { + internal CloudErrorAutoGenerated() { } + public string Code { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Details { get { throw null; } } + public string Message { get { throw null; } } + public string Target { get { throw null; } } + } public partial class CommonDataServiceForAppsEntityDataset : Azure.Analytics.Synapse.Artifacts.Models.Dataset { public CommonDataServiceForAppsEntityDataset(Azure.Analytics.Synapse.Artifacts.Models.LinkedServiceReference linkedServiceName) : base (default(Azure.Analytics.Synapse.Artifacts.Models.LinkedServiceReference)) { } @@ -3863,6 +3928,12 @@ public partial class JsonWriteSettings : Azure.Analytics.Synapse.Artifacts.Model public JsonWriteSettings() { } public Azure.Analytics.Synapse.Artifacts.Models.JsonWriteFilePattern? FilePattern { get { throw null; } set { } } } + public partial class LibraryListResponse + { + internal LibraryListResponse() { } + public string NextLink { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Value { get { throw null; } } + } public partial class LibraryRequirements { public LibraryRequirements() { } @@ -3870,6 +3941,35 @@ public LibraryRequirements() { } public string Filename { get { throw null; } set { } } public System.DateTimeOffset? Time { get { throw null; } } } + public partial class LibraryResource : Azure.Analytics.Synapse.Artifacts.Models.SubResource + { + public LibraryResource(Azure.Analytics.Synapse.Artifacts.Models.LibraryResourceProperties properties) { } + public Azure.Analytics.Synapse.Artifacts.Models.LibraryResourceProperties Properties { get { throw null; } set { } } + } + public partial class LibraryResourceInfo + { + internal LibraryResourceInfo() { } + public string ArtifactId { get { throw null; } } + public string Changed { get { throw null; } } + public string Created { get { throw null; } } + public string Id { get { throw null; } } + public string Name { get { throw null; } } + public string OperationId { get { throw null; } } + public int? RecordId { get { throw null; } } + public string State { get { throw null; } } + public string Type { get { throw null; } } + } + public partial class LibraryResourceProperties + { + public LibraryResourceProperties() { } + public string ContainerName { get { throw null; } } + public string CreatorId { get { throw null; } } + public string Name { get { throw null; } } + public string Path { get { throw null; } } + public string ProvisioningStatus { get { throw null; } } + public string Type { get { throw null; } } + public string UploadedTimestamp { get { throw null; } } + } public partial class LinkedIntegrationRuntimeKeyAuthorization : Azure.Analytics.Synapse.Artifacts.Models.LinkedIntegrationRuntimeType { public LinkedIntegrationRuntimeKeyAuthorization(Azure.Analytics.Synapse.Artifacts.Models.SecureString key) { } @@ -4551,6 +4651,15 @@ public Office365Source() { } public object StartTime { get { throw null; } set { } } public object UserScopeFilterUri { get { throw null; } set { } } } + public partial class OperationResult + { + internal OperationResult() { } + public string Code { get { throw null; } } + public System.Collections.Generic.IReadOnlyList Details { get { throw null; } } + public string Message { get { throw null; } } + public string Status { get { throw null; } } + public string Target { get { throw null; } } + } public partial class OracleLinkedService : Azure.Analytics.Synapse.Artifacts.Models.LinkedService { public OracleLinkedService(object connectionString) { } diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Customization/LibraryClient.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Customization/LibraryClient.cs new file mode 100644 index 0000000000000..55844e726f9f0 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Customization/LibraryClient.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + public partial class LibraryClient + { + /// + /// Initializes a new instance of the . + /// + public LibraryClient(Uri endpoint, TokenCredential credential) + : this(endpoint, credential, ArtifactsClientOptions.Default) + { + } + + /// + /// Initializes a new instance of the . + /// + public LibraryClient(Uri endpoint, TokenCredential credential, ArtifactsClientOptions options) + : this(new ClientDiagnostics(options), + SynapseClientPipeline.Build(options, credential), + endpoint.ToString(), + options.VersionString) + { + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryClient.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryClient.cs new file mode 100644 index 0000000000000..7358be34d079c --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryClient.cs @@ -0,0 +1,343 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Analytics.Synapse.Artifacts.Models; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + /// The Library service client. + public partial class LibraryClient + { + private readonly ClientDiagnostics _clientDiagnostics; + private readonly HttpPipeline _pipeline; + internal LibraryRestClient RestClient { get; } + /// Initializes a new instance of LibraryClient for mocking. + protected LibraryClient() + { + } + /// Initializes a new instance of LibraryClient. + /// The handler for diagnostic messaging in the client. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. + /// Api Version. + internal LibraryClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2019-06-01-preview") + { + RestClient = new LibraryRestClient(clientDiagnostics, pipeline, endpoint, apiVersion); + _clientDiagnostics = clientDiagnostics; + _pipeline = pipeline; + } + + /// Get Operation result for Library. + /// operation id for which status is requested. + /// The cancellation token to use. + public virtual async Task> GetOperationResultAsync(string operationId, CancellationToken cancellationToken = default) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.GetOperationResult"); + scope.Start(); + try + { + return await RestClient.GetOperationResultAsync(operationId, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Get Operation result for Library. + /// operation id for which status is requested. + /// The cancellation token to use. + public virtual Response GetOperationResult(string operationId, CancellationToken cancellationToken = default) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.GetOperationResult"); + scope.Start(); + try + { + return RestClient.GetOperationResult(operationId, cancellationToken); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Get Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + public virtual async Task> GetAsync(string libraryName, CancellationToken cancellationToken = default) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.Get"); + scope.Start(); + try + { + return await RestClient.GetAsync(libraryName, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Get Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + public virtual Response Get(string libraryName, CancellationToken cancellationToken = default) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.Get"); + scope.Start(); + try + { + return RestClient.Get(libraryName, cancellationToken); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Lists Library. + /// The cancellation token to use. + public virtual AsyncPageable ListAsync(CancellationToken cancellationToken = default) + { + async Task> FirstPageFunc(int? pageSizeHint) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.List"); + scope.Start(); + try + { + var response = await RestClient.ListAsync(cancellationToken).ConfigureAwait(false); + return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + async Task> NextPageFunc(string nextLink, int? pageSizeHint) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.List"); + scope.Start(); + try + { + var response = await RestClient.ListNextPageAsync(nextLink, cancellationToken).ConfigureAwait(false); + return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + return PageableHelpers.CreateAsyncEnumerable(FirstPageFunc, NextPageFunc); + } + + /// Lists Library. + /// The cancellation token to use. + public virtual Pageable List(CancellationToken cancellationToken = default) + { + Page FirstPageFunc(int? pageSizeHint) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.List"); + scope.Start(); + try + { + var response = RestClient.List(cancellationToken); + return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + Page NextPageFunc(string nextLink, int? pageSizeHint) + { + using var scope = _clientDiagnostics.CreateScope("LibraryClient.List"); + scope.Start(); + try + { + var response = RestClient.ListNextPage(nextLink, cancellationToken); + return Page.FromValues(response.Value.Value, response.Value.NextLink, response.GetRawResponse()); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + return PageableHelpers.CreateEnumerable(FirstPageFunc, NextPageFunc); + } + + /// Flush Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public virtual async Task StartFlushAsync(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartFlush"); + scope.Start(); + try + { + var originalResponse = await RestClient.FlushAsync(libraryName, cancellationToken).ConfigureAwait(false); + return new LibraryFlushOperation(_clientDiagnostics, _pipeline, RestClient.CreateFlushRequest(libraryName).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Flush Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public virtual LibraryFlushOperation StartFlush(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartFlush"); + scope.Start(); + try + { + var originalResponse = RestClient.Flush(libraryName, cancellationToken); + return new LibraryFlushOperation(_clientDiagnostics, _pipeline, RestClient.CreateFlushRequest(libraryName).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Delete Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public virtual async Task StartDeleteAsync(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartDelete"); + scope.Start(); + try + { + var originalResponse = await RestClient.DeleteAsync(libraryName, cancellationToken).ConfigureAwait(false); + return new LibraryDeleteOperation(_clientDiagnostics, _pipeline, RestClient.CreateDeleteRequest(libraryName).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Delete Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public virtual LibraryDeleteOperation StartDelete(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartDelete"); + scope.Start(); + try + { + var originalResponse = RestClient.Delete(libraryName, cancellationToken); + return new LibraryDeleteOperation(_clientDiagnostics, _pipeline, RestClient.CreateDeleteRequest(libraryName).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Creates a library with the library name. Use query param 'comp=appendblock' to append the data to the library resource created using the create operation. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// If this param is specified with value appendblock, the api will append the data chunk provided in body to the library created. + /// Set this header to a byte offset at which the block is expected to be appended. The request succeeds only if the current offset matches this value. Otherwise, the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed). + /// Library file chunk. Use this content in with append operation. + /// The cancellation token to use. + /// is null. + public virtual async Task StartCreateOrAppendAsync(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = null, Stream content = null, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartCreateOrAppend"); + scope.Start(); + try + { + var originalResponse = await RestClient.CreateOrAppendAsync(libraryName, comp, xMsBlobConditionAppendpos, content, cancellationToken).ConfigureAwait(false); + return new LibraryCreateOrAppendOperation(_clientDiagnostics, _pipeline, RestClient.CreateCreateOrAppendRequest(libraryName, comp, xMsBlobConditionAppendpos, content).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + + /// Creates a library with the library name. Use query param 'comp=appendblock' to append the data to the library resource created using the create operation. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// If this param is specified with value appendblock, the api will append the data chunk provided in body to the library created. + /// Set this header to a byte offset at which the block is expected to be appended. The request succeeds only if the current offset matches this value. Otherwise, the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed). + /// Library file chunk. Use this content in with append operation. + /// The cancellation token to use. + /// is null. + public virtual LibraryCreateOrAppendOperation StartCreateOrAppend(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = null, Stream content = null, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var scope = _clientDiagnostics.CreateScope("LibraryClient.StartCreateOrAppend"); + scope.Start(); + try + { + var originalResponse = RestClient.CreateOrAppend(libraryName, comp, xMsBlobConditionAppendpos, content, cancellationToken); + return new LibraryCreateOrAppendOperation(_clientDiagnostics, _pipeline, RestClient.CreateCreateOrAppendRequest(libraryName, comp, xMsBlobConditionAppendpos, content).Request, originalResponse); + } + catch (Exception e) + { + scope.Failed(e); + throw; + } + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryCreateOrAppendOperation.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryCreateOrAppendOperation.cs new file mode 100644 index 0000000000000..14020ebad8e2d --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryCreateOrAppendOperation.cs @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + /// Creates a library with the library name. Use query param 'comp=appendblock' to append the data to the library resource created using the create operation. + public partial class LibraryCreateOrAppendOperation : Operation, IOperationSource + { + private readonly ArmOperationHelpers _operation; + internal LibraryCreateOrAppendOperation(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Request request, Response response) + { + _operation = new ArmOperationHelpers(this, clientDiagnostics, pipeline, request, response, OperationFinalStateVia.Location, "LibraryCreateOrAppendOperation"); + } + /// + public override string Id => _operation.Id; + + /// + public override Response Value => _operation.Value; + + /// + public override bool HasCompleted => _operation.HasCompleted; + + /// + public override bool HasValue => _operation.HasValue; + + /// + public override Response GetRawResponse() => _operation.GetRawResponse(); + + /// + public override Response UpdateStatus(CancellationToken cancellationToken = default) => _operation.UpdateStatus(cancellationToken); + + /// + public override ValueTask UpdateStatusAsync(CancellationToken cancellationToken = default) => _operation.UpdateStatusAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(TimeSpan pollingInterval, CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(pollingInterval, cancellationToken); + + Response IOperationSource.CreateResult(Response response, CancellationToken cancellationToken) + { + return response; + } + + async ValueTask IOperationSource.CreateResultAsync(Response response, CancellationToken cancellationToken) + { + return await new ValueTask(response).ConfigureAwait(false); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryDeleteOperation.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryDeleteOperation.cs new file mode 100644 index 0000000000000..681ef86a51c8a --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryDeleteOperation.cs @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + /// Delete Library. + public partial class LibraryDeleteOperation : Operation, IOperationSource + { + private readonly ArmOperationHelpers _operation; + internal LibraryDeleteOperation(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Request request, Response response) + { + _operation = new ArmOperationHelpers(this, clientDiagnostics, pipeline, request, response, OperationFinalStateVia.Location, "LibraryDeleteOperation"); + } + /// + public override string Id => _operation.Id; + + /// + public override Response Value => _operation.Value; + + /// + public override bool HasCompleted => _operation.HasCompleted; + + /// + public override bool HasValue => _operation.HasValue; + + /// + public override Response GetRawResponse() => _operation.GetRawResponse(); + + /// + public override Response UpdateStatus(CancellationToken cancellationToken = default) => _operation.UpdateStatus(cancellationToken); + + /// + public override ValueTask UpdateStatusAsync(CancellationToken cancellationToken = default) => _operation.UpdateStatusAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(TimeSpan pollingInterval, CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(pollingInterval, cancellationToken); + + Response IOperationSource.CreateResult(Response response, CancellationToken cancellationToken) + { + return response; + } + + async ValueTask IOperationSource.CreateResultAsync(Response response, CancellationToken cancellationToken) + { + return await new ValueTask(response).ConfigureAwait(false); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryFlushOperation.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryFlushOperation.cs new file mode 100644 index 0000000000000..ee1f8737bd1e3 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryFlushOperation.cs @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + /// Flush Library. + public partial class LibraryFlushOperation : Operation, IOperationSource + { + private readonly ArmOperationHelpers _operation; + internal LibraryFlushOperation(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Request request, Response response) + { + _operation = new ArmOperationHelpers(this, clientDiagnostics, pipeline, request, response, OperationFinalStateVia.Location, "LibraryFlushOperation"); + } + /// + public override string Id => _operation.Id; + + /// + public override Response Value => _operation.Value; + + /// + public override bool HasCompleted => _operation.HasCompleted; + + /// + public override bool HasValue => _operation.HasValue; + + /// + public override Response GetRawResponse() => _operation.GetRawResponse(); + + /// + public override Response UpdateStatus(CancellationToken cancellationToken = default) => _operation.UpdateStatus(cancellationToken); + + /// + public override ValueTask UpdateStatusAsync(CancellationToken cancellationToken = default) => _operation.UpdateStatusAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(cancellationToken); + + /// + public override ValueTask> WaitForCompletionAsync(TimeSpan pollingInterval, CancellationToken cancellationToken = default) => _operation.WaitForCompletionAsync(pollingInterval, cancellationToken); + + Response IOperationSource.CreateResult(Response response, CancellationToken cancellationToken) + { + return response; + } + + async ValueTask IOperationSource.CreateResultAsync(Response response, CancellationToken cancellationToken) + { + return await new ValueTask(response).ConfigureAwait(false); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryRestClient.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryRestClient.cs new file mode 100644 index 0000000000000..d9579448e59ea --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/LibraryRestClient.cs @@ -0,0 +1,536 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.IO; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; +using Azure; +using Azure.Analytics.Synapse.Artifacts.Models; +using Azure.Core; +using Azure.Core.Pipeline; + +namespace Azure.Analytics.Synapse.Artifacts +{ + internal partial class LibraryRestClient + { + private string endpoint; + private string apiVersion; + private ClientDiagnostics _clientDiagnostics; + private HttpPipeline _pipeline; + + /// Initializes a new instance of LibraryRestClient. + /// The handler for diagnostic messaging in the client. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// The workspace development endpoint, for example https://myworkspace.dev.azuresynapse.net. + /// Api Version. + /// or is null. + public LibraryRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, string endpoint, string apiVersion = "2019-06-01-preview") + { + if (endpoint == null) + { + throw new ArgumentNullException(nameof(endpoint)); + } + if (apiVersion == null) + { + throw new ArgumentNullException(nameof(apiVersion)); + } + + this.endpoint = endpoint; + this.apiVersion = apiVersion; + _clientDiagnostics = clientDiagnostics; + _pipeline = pipeline; + } + + internal HttpMessage CreateListRequest() + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraries", false); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Lists Library. + /// The cancellation token to use. + public async Task> ListAsync(CancellationToken cancellationToken = default) + { + using var message = CreateListRequest(); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + LibraryListResponse value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = LibraryListResponse.DeserializeLibraryListResponse(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Lists Library. + /// The cancellation token to use. + public Response List(CancellationToken cancellationToken = default) + { + using var message = CreateListRequest(); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + LibraryListResponse value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = LibraryListResponse.DeserializeLibraryListResponse(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateFlushRequest(string libraryName) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Post; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraries/", false); + uri.AppendPath(libraryName, true); + uri.AppendPath("/flush", false); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Flush Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public async Task FlushAsync(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateFlushRequest(libraryName); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + case 202: + return message.Response; + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Flush Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public Response Flush(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateFlushRequest(libraryName); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + case 202: + return message.Response; + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateGetOperationResultRequest(string operationId) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraryOperationResults/", false); + uri.AppendPath(operationId, true); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Get Operation result for Library. + /// operation id for which status is requested. + /// The cancellation token to use. + /// is null. + public async Task> GetOperationResultAsync(string operationId, CancellationToken cancellationToken = default) + { + if (operationId == null) + { + throw new ArgumentNullException(nameof(operationId)); + } + + using var message = CreateGetOperationResultRequest(operationId); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + LibraryResource value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = LibraryResource.DeserializeLibraryResource(document.RootElement); + return Response.FromValue(value, message.Response); + } + case 202: + { + OperationResult value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = OperationResult.DeserializeOperationResult(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Get Operation result for Library. + /// operation id for which status is requested. + /// The cancellation token to use. + /// is null. + public Response GetOperationResult(string operationId, CancellationToken cancellationToken = default) + { + if (operationId == null) + { + throw new ArgumentNullException(nameof(operationId)); + } + + using var message = CreateGetOperationResultRequest(operationId); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + LibraryResource value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = LibraryResource.DeserializeLibraryResource(document.RootElement); + return Response.FromValue(value, message.Response); + } + case 202: + { + OperationResult value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = OperationResult.DeserializeOperationResult(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateDeleteRequest(string libraryName) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Delete; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraries/", false); + uri.AppendPath(libraryName, true); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Delete Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public async Task DeleteAsync(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateDeleteRequest(libraryName); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + case 202: + case 409: + return message.Response; + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Delete Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public Response Delete(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateDeleteRequest(libraryName); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + case 202: + case 409: + return message.Response; + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateGetRequest(string libraryName) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraries/", false); + uri.AppendPath(libraryName, true); + uri.AppendQuery("api-version", apiVersion, true); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Get Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public async Task> GetAsync(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateGetRequest(libraryName); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + LibraryResource value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = LibraryResource.DeserializeLibraryResource(document.RootElement); + return Response.FromValue(value, message.Response); + } + case 304: + return Response.FromValue(null, message.Response); + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Get Library. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// The cancellation token to use. + /// is null. + public Response Get(string libraryName, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateGetRequest(libraryName); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + LibraryResource value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = LibraryResource.DeserializeLibraryResource(document.RootElement); + return Response.FromValue(value, message.Response); + } + case 304: + return Response.FromValue(null, message.Response); + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateCreateOrAppendRequest(string libraryName, string comp, long? xMsBlobConditionAppendpos, Stream content) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Put; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendPath("/libraries/", false); + uri.AppendPath(libraryName, true); + uri.AppendQuery("api-version", apiVersion, true); + if (comp != null) + { + uri.AppendQuery("comp", comp, true); + } + request.Uri = uri; + if (xMsBlobConditionAppendpos != null) + { + request.Headers.Add("x-ms-blob-condition-appendpos", xMsBlobConditionAppendpos.Value); + } + request.Headers.Add("Accept", "application/json"); + if (content != null) + { + request.Headers.Add("Content-Type", "application/octet-stream"); + request.Content = RequestContent.Create(content); + } + return message; + } + + /// Creates a library with the library name. Use query param 'comp=appendblock' to append the data to the library resource created using the create operation. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// If this param is specified with value appendblock, the api will append the data chunk provided in body to the library created. + /// Set this header to a byte offset at which the block is expected to be appended. The request succeeds only if the current offset matches this value. Otherwise, the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed). + /// Library file chunk. Use this content in with append operation. + /// The cancellation token to use. + /// is null. + public async Task CreateOrAppendAsync(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = null, Stream content = null, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateCreateOrAppendRequest(libraryName, comp, xMsBlobConditionAppendpos, content); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + case 201: + case 202: + case 412: + return message.Response; + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Creates a library with the library name. Use query param 'comp=appendblock' to append the data to the library resource created using the create operation. + /// file name to upload. Minimum length of the filename should be 1 excluding the extension length. + /// If this param is specified with value appendblock, the api will append the data chunk provided in body to the library created. + /// Set this header to a byte offset at which the block is expected to be appended. The request succeeds only if the current offset matches this value. Otherwise, the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed). + /// Library file chunk. Use this content in with append operation. + /// The cancellation token to use. + /// is null. + public Response CreateOrAppend(string libraryName, string comp = null, long? xMsBlobConditionAppendpos = null, Stream content = null, CancellationToken cancellationToken = default) + { + if (libraryName == null) + { + throw new ArgumentNullException(nameof(libraryName)); + } + + using var message = CreateCreateOrAppendRequest(libraryName, comp, xMsBlobConditionAppendpos, content); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + case 201: + case 202: + case 412: + return message.Response; + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + + internal HttpMessage CreateListNextPageRequest(string nextLink) + { + var message = _pipeline.CreateMessage(); + var request = message.Request; + request.Method = RequestMethod.Get; + var uri = new RawRequestUriBuilder(); + uri.AppendRaw(endpoint, false); + uri.AppendRawNextLink(nextLink, false); + request.Uri = uri; + request.Headers.Add("Accept", "application/json"); + return message; + } + + /// Lists Library. + /// The URL to the next page of results. + /// The cancellation token to use. + /// is null. + public async Task> ListNextPageAsync(string nextLink, CancellationToken cancellationToken = default) + { + if (nextLink == null) + { + throw new ArgumentNullException(nameof(nextLink)); + } + + using var message = CreateListNextPageRequest(nextLink); + await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); + switch (message.Response.Status) + { + case 200: + { + LibraryListResponse value = default; + using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); + value = LibraryListResponse.DeserializeLibraryListResponse(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); + } + } + + /// Lists Library. + /// The URL to the next page of results. + /// The cancellation token to use. + /// is null. + public Response ListNextPage(string nextLink, CancellationToken cancellationToken = default) + { + if (nextLink == null) + { + throw new ArgumentNullException(nameof(nextLink)); + } + + using var message = CreateListNextPageRequest(nextLink); + _pipeline.Send(message, cancellationToken); + switch (message.Response.Status) + { + case 200: + { + LibraryListResponse value = default; + using var document = JsonDocument.Parse(message.Response.ContentStream); + value = LibraryListResponse.DeserializeLibraryListResponse(document.RootElement); + return Response.FromValue(value, message.Response); + } + default: + throw _clientDiagnostics.CreateRequestFailedException(message.Response); + } + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.Serialization.cs new file mode 100644 index 0000000000000..6c60e0af9750d --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.Serialization.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + public partial class CloudErrorAutoGenerated + { + internal static CloudErrorAutoGenerated DeserializeCloudErrorAutoGenerated(JsonElement element) + { + string code = default; + string message = default; + Optional target = default; + Optional> details = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("error")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + foreach (var property0 in property.Value.EnumerateObject()) + { + if (property0.NameEquals("code")) + { + code = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("message")) + { + message = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("target")) + { + target = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("details")) + { + if (property0.Value.ValueKind == JsonValueKind.Null) + { + property0.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property0.Value.EnumerateArray()) + { + array.Add(DeserializeCloudErrorAutoGenerated(item)); + } + details = array; + continue; + } + } + continue; + } + } + return new CloudErrorAutoGenerated(code, message, target.Value, Optional.ToList(details)); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.cs new file mode 100644 index 0000000000000..135147da40c6d --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/CloudErrorAutoGenerated.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + /// The object that defines the structure of an Azure Synapse error response. + public partial class CloudErrorAutoGenerated + { + /// Initializes a new instance of CloudErrorAutoGenerated. + /// Error code. + /// Error message. + /// or is null. + internal CloudErrorAutoGenerated(string code, string message) + { + if (code == null) + { + throw new ArgumentNullException(nameof(code)); + } + if (message == null) + { + throw new ArgumentNullException(nameof(message)); + } + + Code = code; + Message = message; + Details = new ChangeTrackingList(); + } + + /// Initializes a new instance of CloudErrorAutoGenerated. + /// Error code. + /// Error message. + /// Property name/path in request associated with error. + /// Array with additional error details. + internal CloudErrorAutoGenerated(string code, string message, string target, IReadOnlyList details) + { + Code = code; + Message = message; + Target = target; + Details = details; + } + + /// Error code. + public string Code { get; } + /// Error message. + public string Message { get; } + /// Property name/path in request associated with error. + public string Target { get; } + /// Array with additional error details. + public IReadOnlyList Details { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.Serialization.cs similarity index 63% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.Serialization.cs rename to sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.Serialization.cs index d6f72ff4e556f..3884698f0a0c4 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.Serialization.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.Serialization.cs @@ -9,22 +9,22 @@ using System.Text.Json; using Azure.Core; -namespace Azure.Analytics.Synapse.AccessControl.Models +namespace Azure.Analytics.Synapse.Artifacts.Models { - public partial class RolesListResponse + public partial class LibraryListResponse { - internal static RolesListResponse DeserializeRolesListResponse(JsonElement element) + internal static LibraryListResponse DeserializeLibraryListResponse(JsonElement element) { - IReadOnlyList value = default; + IReadOnlyList value = default; Optional nextLink = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("value")) { - List array = new List(); + List array = new List(); foreach (var item in property.Value.EnumerateArray()) { - array.Add(SynapseRole.DeserializeSynapseRole(item)); + array.Add(LibraryResource.DeserializeLibraryResource(item)); } value = array; continue; @@ -35,7 +35,7 @@ internal static RolesListResponse DeserializeRolesListResponse(JsonElement eleme continue; } } - return new RolesListResponse(value, nextLink.Value); + return new LibraryListResponse(value, nextLink.Value); } } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.cs similarity index 53% rename from sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.cs rename to sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.cs index cd2e0eb05a93b..a5dd61a0111d9 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.AccessControl/src/Generated/Models/RolesListResponse.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryListResponse.cs @@ -9,15 +9,15 @@ using System.Collections.Generic; using System.Linq; -namespace Azure.Analytics.Synapse.AccessControl.Models +namespace Azure.Analytics.Synapse.Artifacts.Models { - /// A list of Synapse roles available. - public partial class RolesListResponse + /// A list of Library resources. + public partial class LibraryListResponse { - /// Initializes a new instance of RolesListResponse. - /// List of Synapse roles. + /// Initializes a new instance of LibraryListResponse. + /// List of Library. /// is null. - internal RolesListResponse(IEnumerable value) + internal LibraryListResponse(IEnumerable value) { if (value == null) { @@ -27,17 +27,17 @@ internal RolesListResponse(IEnumerable value) Value = value.ToList(); } - /// Initializes a new instance of RolesListResponse. - /// List of Synapse roles. + /// Initializes a new instance of LibraryListResponse. + /// List of Library. /// The link to the next page of results, if any remaining results exist. - internal RolesListResponse(IReadOnlyList value, string nextLink) + internal LibraryListResponse(IReadOnlyList value, string nextLink) { Value = value; NextLink = nextLink; } - /// List of Synapse roles. - public IReadOnlyList Value { get; } + /// List of Library. + public IReadOnlyList Value { get; } /// The link to the next page of results, if any remaining results exist. public string NextLink { get; } } diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.Serialization.cs new file mode 100644 index 0000000000000..aa1ece79919cc --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.Serialization.cs @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + public partial class LibraryResource : IUtf8JsonSerializable + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) + { + writer.WriteStartObject(); + writer.WritePropertyName("properties"); + writer.WriteObjectValue(Properties); + writer.WriteEndObject(); + } + + internal static LibraryResource DeserializeLibraryResource(JsonElement element) + { + LibraryResourceProperties properties = default; + Optional etag = default; + Optional id = default; + Optional name = default; + Optional type = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("properties")) + { + properties = LibraryResourceProperties.DeserializeLibraryResourceProperties(property.Value); + continue; + } + if (property.NameEquals("etag")) + { + etag = property.Value.GetString(); + continue; + } + if (property.NameEquals("id")) + { + id = property.Value.GetString(); + continue; + } + if (property.NameEquals("name")) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("type")) + { + type = property.Value.GetString(); + continue; + } + } + return new LibraryResource(id.Value, name.Value, type.Value, etag.Value, properties); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.cs new file mode 100644 index 0000000000000..d57c233061c8a --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResource.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + /// Library response details. + public partial class LibraryResource : SubResource + { + /// Initializes a new instance of LibraryResource. + /// Library/package properties. + /// is null. + public LibraryResource(LibraryResourceProperties properties) + { + if (properties == null) + { + throw new ArgumentNullException(nameof(properties)); + } + + Properties = properties; + } + + /// Initializes a new instance of LibraryResource. + /// Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /// The name of the resource. + /// The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts". + /// Resource Etag. + /// Library/package properties. + internal LibraryResource(string id, string name, string type, string etag, LibraryResourceProperties properties) : base(id, name, type, etag) + { + Properties = properties; + } + + /// Library/package properties. + public LibraryResourceProperties Properties { get; set; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.Serialization.cs new file mode 100644 index 0000000000000..a5bbef1a46cb9 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.Serialization.cs @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + public partial class LibraryResourceInfo + { + internal static LibraryResourceInfo DeserializeLibraryResourceInfo(JsonElement element) + { + Optional id = default; + Optional recordId = default; + Optional state = default; + Optional created = default; + Optional changed = default; + Optional type = default; + Optional name = default; + Optional operationId = default; + Optional artifactId = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("id")) + { + id = property.Value.GetString(); + continue; + } + if (property.NameEquals("recordId")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + recordId = property.Value.GetInt32(); + continue; + } + if (property.NameEquals("state")) + { + state = property.Value.GetString(); + continue; + } + if (property.NameEquals("created")) + { + created = property.Value.GetString(); + continue; + } + if (property.NameEquals("changed")) + { + changed = property.Value.GetString(); + continue; + } + if (property.NameEquals("type")) + { + type = property.Value.GetString(); + continue; + } + if (property.NameEquals("name")) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("operationId")) + { + operationId = property.Value.GetString(); + continue; + } + if (property.NameEquals("artifactId")) + { + artifactId = property.Value.GetString(); + continue; + } + } + return new LibraryResourceInfo(id.Value, Optional.ToNullable(recordId), state.Value, created.Value, changed.Value, type.Value, name.Value, operationId.Value, artifactId.Value); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.cs new file mode 100644 index 0000000000000..deae21fd06dee --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceInfo.cs @@ -0,0 +1,60 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + /// Library resource info. + public partial class LibraryResourceInfo + { + /// Initializes a new instance of LibraryResourceInfo. + internal LibraryResourceInfo() + { + } + + /// Initializes a new instance of LibraryResourceInfo. + /// Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /// record Id of the library/package. + /// Provisioning status of the library/package. + /// The creation time of the library/package. + /// The last updated time of the library/package. + /// The type of the resource. E.g. LibraryArtifact. + /// Name of the library/package. + /// Operation Id of the operation performed on library/package. + /// artifact Id of the library/package. + internal LibraryResourceInfo(string id, int? recordId, string state, string created, string changed, string type, string name, string operationId, string artifactId) + { + Id = id; + RecordId = recordId; + State = state; + Created = created; + Changed = changed; + Type = type; + Name = name; + OperationId = operationId; + ArtifactId = artifactId; + } + + /// Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + public string Id { get; } + /// record Id of the library/package. + public int? RecordId { get; } + /// Provisioning status of the library/package. + public string State { get; } + /// The creation time of the library/package. + public string Created { get; } + /// The last updated time of the library/package. + public string Changed { get; } + /// The type of the resource. E.g. LibraryArtifact. + public string Type { get; } + /// Name of the library/package. + public string Name { get; } + /// Operation Id of the operation performed on library/package. + public string OperationId { get; } + /// artifact Id of the library/package. + public string ArtifactId { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.Serialization.cs new file mode 100644 index 0000000000000..4d0285912dd60 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.Serialization.cs @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + public partial class LibraryResourceProperties : IUtf8JsonSerializable + { + void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) + { + writer.WriteStartObject(); + writer.WriteEndObject(); + } + + internal static LibraryResourceProperties DeserializeLibraryResourceProperties(JsonElement element) + { + Optional name = default; + Optional path = default; + Optional containerName = default; + Optional uploadedTimestamp = default; + Optional type = default; + Optional provisioningStatus = default; + Optional creatorId = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("name")) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("path")) + { + path = property.Value.GetString(); + continue; + } + if (property.NameEquals("containerName")) + { + containerName = property.Value.GetString(); + continue; + } + if (property.NameEquals("uploadedTimestamp")) + { + uploadedTimestamp = property.Value.GetString(); + continue; + } + if (property.NameEquals("type")) + { + type = property.Value.GetString(); + continue; + } + if (property.NameEquals("provisioningStatus")) + { + provisioningStatus = property.Value.GetString(); + continue; + } + if (property.NameEquals("creatorId")) + { + creatorId = property.Value.GetString(); + continue; + } + } + return new LibraryResourceProperties(name.Value, path.Value, containerName.Value, uploadedTimestamp.Value, type.Value, provisioningStatus.Value, creatorId.Value); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.cs new file mode 100644 index 0000000000000..58371fdaa19e8 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/LibraryResourceProperties.cs @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + /// Library/package properties. + public partial class LibraryResourceProperties + { + /// Initializes a new instance of LibraryResourceProperties. + public LibraryResourceProperties() + { + } + + /// Initializes a new instance of LibraryResourceProperties. + /// Name of the library/package. + /// Location of library/package in storage account. + /// Container name of the library/package. + /// The last update time of the library/package. + /// Type of the library/package. + /// Provisioning status of the library/package. + /// Creator Id of the library/package. + internal LibraryResourceProperties(string name, string path, string containerName, string uploadedTimestamp, string type, string provisioningStatus, string creatorId) + { + Name = name; + Path = path; + ContainerName = containerName; + UploadedTimestamp = uploadedTimestamp; + Type = type; + ProvisioningStatus = provisioningStatus; + CreatorId = creatorId; + } + + /// Name of the library/package. + public string Name { get; } + /// Location of library/package in storage account. + public string Path { get; } + /// Container name of the library/package. + public string ContainerName { get; } + /// The last update time of the library/package. + public string UploadedTimestamp { get; } + /// Type of the library/package. + public string Type { get; } + /// Provisioning status of the library/package. + public string ProvisioningStatus { get; } + /// Creator Id of the library/package. + public string CreatorId { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.Serialization.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.Serialization.cs new file mode 100644 index 0000000000000..f3a2287ffc6fe --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.Serialization.cs @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using System.Text.Json; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + public partial class OperationResult + { + internal static OperationResult DeserializeOperationResult(JsonElement element) + { + Optional status = default; + Optional code = default; + Optional message = default; + Optional target = default; + Optional> details = default; + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("status")) + { + status = property.Value.GetString(); + continue; + } + if (property.NameEquals("error")) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + property.ThrowNonNullablePropertyIsNull(); + continue; + } + foreach (var property0 in property.Value.EnumerateObject()) + { + if (property0.NameEquals("code")) + { + code = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("message")) + { + message = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("target")) + { + target = property0.Value.GetString(); + continue; + } + if (property0.NameEquals("details")) + { + if (property0.Value.ValueKind == JsonValueKind.Null) + { + property0.ThrowNonNullablePropertyIsNull(); + continue; + } + List array = new List(); + foreach (var item in property0.Value.EnumerateArray()) + { + array.Add(CloudErrorAutoGenerated.DeserializeCloudErrorAutoGenerated(item)); + } + details = array; + continue; + } + } + continue; + } + } + return new OperationResult(status.Value, code.Value, message.Value, target.Value, Optional.ToList(details)); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.cs new file mode 100644 index 0000000000000..fbb35c1fd09f3 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/Generated/Models/OperationResult.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Collections.Generic; +using Azure.Core; + +namespace Azure.Analytics.Synapse.Artifacts.Models +{ + /// Operation status for the operation. + public partial class OperationResult + { + /// Initializes a new instance of OperationResult. + internal OperationResult() + { + Details = new ChangeTrackingList(); + } + + /// Initializes a new instance of OperationResult. + /// Operation status. + /// Error code. + /// Error message. + /// Property name/path in request associated with error. + /// Array with additional error details. + internal OperationResult(string status, string code, string message, string target, IReadOnlyList details) + { + Status = status; + Code = code; + Message = message; + Target = target; + Details = details; + } + + /// Operation status. + public string Status { get; } + /// Error code. + public string Code { get; } + /// Error message. + public string Message { get; } + /// Property name/path in request associated with error. + public string Target { get; } + /// Array with additional error details. + public IReadOnlyList Details { get; } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/autorest.md b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/autorest.md index 420bd8676179f..ac7b6427e5959 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/autorest.md +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/src/autorest.md @@ -6,7 +6,7 @@ Run `dotnet build /t:GenerateCode` to generate code. > see https://aka.ms/autorest ```yaml -repo: https://github.com/Azure/azure-rest-api-specs/blob/b9fbfae938a0ec0e8a696b450a917b47bea1f2e3 +repo: https://github.com/Azure/azure-rest-api-specs/blob/aa19725fe79aea2a9dc580f3c66f77f89cc34563 ``` ``` yaml @@ -26,6 +26,7 @@ input-file: - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/bigDataPools.json - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/gitintegration.json - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/integrationRuntimes.json + - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/library.json - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/sqlPools.json - $(repo)/specification/synapse/data-plane/Microsoft.Synapse/preview/2019-06-01-preview/workspace.json ``` diff --git a/sdk/synapse/Azure.Analytics.Synapse.Artifacts/tests/LibraryClientLiveTests.cs b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/tests/LibraryClientLiveTests.cs new file mode 100644 index 0000000000000..bc8eb69086b46 --- /dev/null +++ b/sdk/synapse/Azure.Analytics.Synapse.Artifacts/tests/LibraryClientLiveTests.cs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using Azure.Analytics.Synapse.Artifacts; +using Azure.Analytics.Synapse.Artifacts.Models; +using Azure.Analytics.Synapse.Tests; +using Azure.Core.TestFramework; +using NUnit.Framework; + +namespace Azure.Analytics.Synapse.Artifacts.Tests +{ + /// + /// The suite of tests for the class. + /// + /// + /// These tests have a dependency on live Azure services and may incur costs for the associated + /// Azure subscription. + /// + public class LibraryClientLiveTests : RecordedTestBase + { + public LibraryClientLiveTests(bool isAsync) : base(isAsync) + { + } + + private LibraryClient CreateClient() + { + return InstrumentClient(new LibraryClient( + new Uri(TestEnvironment.EndpointUrl), + TestEnvironment.Credential, + InstrumentClientOptions(new ArtifactsClientOptions()) + )); + } + } +} diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/README.md b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/README.md index 194d419b48588..18c96d04b975c 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/README.md +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/README.md @@ -71,7 +71,7 @@ string managedPrivateEndpointName = "myPrivateEndpoint"; string fakedStorageAccountName = "myStorageAccount"; string privateLinkResourceId = $"/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.Storage/accounts/{fakedStorageAccountName}"; string groupId = "blob"; -client.Create(managedVnetName, managedPrivateEndpointName, new ManagedPrivateEndpoint +client.Create(managedVnetName, new ManagedPrivateEndpoint { Properties = new ManagedPrivateEndpointProperties { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/api/Azure.Analytics.Synapse.ManagedPrivateEndpoints.netstandard2.0.cs b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/api/Azure.Analytics.Synapse.ManagedPrivateEndpoints.netstandard2.0.cs index 209112c62ff93..8e58129f3670f 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/api/Azure.Analytics.Synapse.ManagedPrivateEndpoints.netstandard2.0.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/api/Azure.Analytics.Synapse.ManagedPrivateEndpoints.netstandard2.0.cs @@ -5,14 +5,14 @@ public partial class ManagedPrivateEndpointsClient protected ManagedPrivateEndpointsClient() { } public ManagedPrivateEndpointsClient(System.Uri endpoint, Azure.Core.TokenCredential credential) { } public ManagedPrivateEndpointsClient(System.Uri endpoint, Azure.Core.TokenCredential credential, Azure.Analytics.Synapse.ManagedPrivateEndpoints.ManagedPrivateEndpointsClientOptions options) { } - public virtual Azure.Response Create(string managedVirtualNetworkName, string managedPrivateEndpointName, Azure.Analytics.Synapse.ManagedPrivateEndpoints.Models.ManagedPrivateEndpoint managedPrivateEndpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task> CreateAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, Azure.Analytics.Synapse.ManagedPrivateEndpoints.Models.ManagedPrivateEndpoint managedPrivateEndpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response Delete(string managedVirtualNetworkName, string managedPrivateEndpointName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task DeleteAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Response Get(string managedVirtualNetworkName, string managedPrivateEndpointName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual System.Threading.Tasks.Task> GetAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.Pageable List(string managedVirtualNetworkName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } - public virtual Azure.AsyncPageable ListAsync(string managedVirtualNetworkName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response Create(string managedPrivateEndpointName, Azure.Analytics.Synapse.ManagedPrivateEndpoints.Models.ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> CreateAsync(string managedPrivateEndpointName, Azure.Analytics.Synapse.ManagedPrivateEndpoints.Models.ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response Delete(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task DeleteAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Response Get(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual System.Threading.Tasks.Task> GetAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.Pageable List(string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } + public virtual Azure.AsyncPageable ListAsync(string managedVirtualNetworkName = "default", System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } } public partial class ManagedPrivateEndpointsClientOptions : Azure.Core.ClientOptions { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/samples/Sample1_HelloManangedPrivateEndpoint.md b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/samples/Sample1_HelloManangedPrivateEndpoint.md index cf1a2f90942d7..bfcda0fbce835 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/samples/Sample1_HelloManangedPrivateEndpoint.md +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/samples/Sample1_HelloManangedPrivateEndpoint.md @@ -10,7 +10,7 @@ string managedPrivateEndpointName = "myPrivateEndpoint"; string fakedStorageAccountName = "myStorageAccount"; string privateLinkResourceId = $"/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.Storage/accounts/{fakedStorageAccountName}"; string groupId = "blob"; -client.Create(managedVnetName, managedPrivateEndpointName, new ManagedPrivateEndpoint +client.Create(managedVnetName, new ManagedPrivateEndpoint { Properties = new ManagedPrivateEndpointProperties { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsClient.cs b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsClient.cs index 4dd1f429812f9..5beeb028d9a71 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsClient.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsClient.cs @@ -38,16 +38,16 @@ internal ManagedPrivateEndpointsClient(ClientDiagnostics clientDiagnostics, Http } /// Get Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - public virtual async Task> GetAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + public virtual async Task> GetAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Get"); scope.Start(); try { - return await RestClient.GetAsync(managedVirtualNetworkName, managedPrivateEndpointName, cancellationToken).ConfigureAwait(false); + return await RestClient.GetAsync(managedPrivateEndpointName, managedVirtualNetworkName, cancellationToken).ConfigureAwait(false); } catch (Exception e) { @@ -57,16 +57,16 @@ public virtual async Task> GetAsync(string mana } /// Get Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - public virtual Response Get(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + public virtual Response Get(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Get"); scope.Start(); try { - return RestClient.Get(managedVirtualNetworkName, managedPrivateEndpointName, cancellationToken); + return RestClient.Get(managedPrivateEndpointName, managedVirtualNetworkName, cancellationToken); } catch (Exception e) { @@ -76,17 +76,17 @@ public virtual Response Get(string managedVirtualNetwork } /// Create Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. /// Managed private endpoint properties. + /// Managed virtual network name. /// The cancellation token to use. - public virtual async Task> CreateAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, CancellationToken cancellationToken = default) + public virtual async Task> CreateAsync(string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Create"); scope.Start(); try { - return await RestClient.CreateAsync(managedVirtualNetworkName, managedPrivateEndpointName, managedPrivateEndpoint, cancellationToken).ConfigureAwait(false); + return await RestClient.CreateAsync(managedPrivateEndpointName, managedPrivateEndpoint, managedVirtualNetworkName, cancellationToken).ConfigureAwait(false); } catch (Exception e) { @@ -96,17 +96,17 @@ public virtual async Task> CreateAsync(string m } /// Create Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. /// Managed private endpoint properties. + /// Managed virtual network name. /// The cancellation token to use. - public virtual Response Create(string managedVirtualNetworkName, string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, CancellationToken cancellationToken = default) + public virtual Response Create(string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Create"); scope.Start(); try { - return RestClient.Create(managedVirtualNetworkName, managedPrivateEndpointName, managedPrivateEndpoint, cancellationToken); + return RestClient.Create(managedPrivateEndpointName, managedPrivateEndpoint, managedVirtualNetworkName, cancellationToken); } catch (Exception e) { @@ -116,16 +116,16 @@ public virtual Response Create(string managedVirtualNetw } /// Delete Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - public virtual async Task DeleteAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + public virtual async Task DeleteAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Delete"); scope.Start(); try { - return await RestClient.DeleteAsync(managedVirtualNetworkName, managedPrivateEndpointName, cancellationToken).ConfigureAwait(false); + return await RestClient.DeleteAsync(managedPrivateEndpointName, managedVirtualNetworkName, cancellationToken).ConfigureAwait(false); } catch (Exception e) { @@ -135,16 +135,16 @@ public virtual async Task DeleteAsync(string managedVirtualNetworkName } /// Delete Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - public virtual Response Delete(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + public virtual Response Delete(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("ManagedPrivateEndpointsClient.Delete"); scope.Start(); try { - return RestClient.Delete(managedVirtualNetworkName, managedPrivateEndpointName, cancellationToken); + return RestClient.Delete(managedPrivateEndpointName, managedVirtualNetworkName, cancellationToken); } catch (Exception e) { @@ -157,7 +157,7 @@ public virtual Response Delete(string managedVirtualNetworkName, string managedP /// Managed virtual network name. /// The cancellation token to use. /// is null. - public virtual AsyncPageable ListAsync(string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public virtual AsyncPageable ListAsync(string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (managedVirtualNetworkName == null) { @@ -201,7 +201,7 @@ async Task> NextPageFunc(string nextLink, int? page /// Managed virtual network name. /// The cancellation token to use. /// is null. - public virtual Pageable List(string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public virtual Pageable List(string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (managedVirtualNetworkName == null) { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsRestClient.cs b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsRestClient.cs index 453c02e8d4219..94e327a059a76 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsRestClient.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/Generated/ManagedPrivateEndpointsRestClient.cs @@ -46,7 +46,7 @@ public ManagedPrivateEndpointsRestClient(ClientDiagnostics clientDiagnostics, Ht _pipeline = pipeline; } - internal HttpMessage CreateGetRequest(string managedVirtualNetworkName, string managedPrivateEndpointName) + internal HttpMessage CreateGetRequest(string managedPrivateEndpointName, string managedVirtualNetworkName) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -64,22 +64,22 @@ internal HttpMessage CreateGetRequest(string managedVirtualNetworkName, string m } /// Get Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - /// or is null. - public async Task> GetAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + /// or is null. + public async Task> GetAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateGetRequest(managedVirtualNetworkName, managedPrivateEndpointName); + using var message = CreateGetRequest(managedPrivateEndpointName, managedVirtualNetworkName); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -96,22 +96,22 @@ public async Task> GetAsync(string managedVirtu } /// Get Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - /// or is null. - public Response Get(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + /// or is null. + public Response Get(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateGetRequest(managedVirtualNetworkName, managedPrivateEndpointName); + using var message = CreateGetRequest(managedPrivateEndpointName, managedVirtualNetworkName); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -127,7 +127,7 @@ public Response Get(string managedVirtualNetworkName, st } } - internal HttpMessage CreateCreateRequest(string managedVirtualNetworkName, string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint) + internal HttpMessage CreateCreateRequest(string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -149,17 +149,13 @@ internal HttpMessage CreateCreateRequest(string managedVirtualNetworkName, strin } /// Create Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. /// Managed private endpoint properties. + /// Managed virtual network name. /// The cancellation token to use. - /// , , or is null. - public async Task> CreateAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, CancellationToken cancellationToken = default) + /// , , or is null. + public async Task> CreateAsync(string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); @@ -168,8 +164,12 @@ public async Task> CreateAsync(string managedVi { throw new ArgumentNullException(nameof(managedPrivateEndpoint)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateCreateRequest(managedVirtualNetworkName, managedPrivateEndpointName, managedPrivateEndpoint); + using var message = CreateCreateRequest(managedPrivateEndpointName, managedPrivateEndpoint, managedVirtualNetworkName); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -186,17 +186,13 @@ public async Task> CreateAsync(string managedVi } /// Create Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. /// Managed private endpoint properties. + /// Managed virtual network name. /// The cancellation token to use. - /// , , or is null. - public Response Create(string managedVirtualNetworkName, string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, CancellationToken cancellationToken = default) + /// , , or is null. + public Response Create(string managedPrivateEndpointName, ManagedPrivateEndpoint managedPrivateEndpoint, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); @@ -205,8 +201,12 @@ public Response Create(string managedVirtualNetworkName, { throw new ArgumentNullException(nameof(managedPrivateEndpoint)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateCreateRequest(managedVirtualNetworkName, managedPrivateEndpointName, managedPrivateEndpoint); + using var message = CreateCreateRequest(managedPrivateEndpointName, managedPrivateEndpoint, managedVirtualNetworkName); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -222,7 +222,7 @@ public Response Create(string managedVirtualNetworkName, } } - internal HttpMessage CreateDeleteRequest(string managedVirtualNetworkName, string managedPrivateEndpointName) + internal HttpMessage CreateDeleteRequest(string managedPrivateEndpointName, string managedVirtualNetworkName) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -239,22 +239,22 @@ internal HttpMessage CreateDeleteRequest(string managedVirtualNetworkName, strin } /// Delete Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - /// or is null. - public async Task DeleteAsync(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + /// or is null. + public async Task DeleteAsync(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateDeleteRequest(managedVirtualNetworkName, managedPrivateEndpointName); + using var message = CreateDeleteRequest(managedPrivateEndpointName, managedVirtualNetworkName); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -267,22 +267,22 @@ public async Task DeleteAsync(string managedVirtualNetworkName, string } /// Delete Managed Private Endpoints. - /// Managed virtual network name. /// Managed private endpoint name. + /// Managed virtual network name. /// The cancellation token to use. - /// or is null. - public Response Delete(string managedVirtualNetworkName, string managedPrivateEndpointName, CancellationToken cancellationToken = default) + /// or is null. + public Response Delete(string managedPrivateEndpointName, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { - if (managedVirtualNetworkName == null) - { - throw new ArgumentNullException(nameof(managedVirtualNetworkName)); - } if (managedPrivateEndpointName == null) { throw new ArgumentNullException(nameof(managedPrivateEndpointName)); } + if (managedVirtualNetworkName == null) + { + throw new ArgumentNullException(nameof(managedVirtualNetworkName)); + } - using var message = CreateDeleteRequest(managedVirtualNetworkName, managedPrivateEndpointName); + using var message = CreateDeleteRequest(managedPrivateEndpointName, managedVirtualNetworkName); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -314,7 +314,7 @@ internal HttpMessage CreateListRequest(string managedVirtualNetworkName) /// Managed virtual network name. /// The cancellation token to use. /// is null. - public async Task> ListAsync(string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public async Task> ListAsync(string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (managedVirtualNetworkName == null) { @@ -341,7 +341,7 @@ public async Task> ListAsync(string /// Managed virtual network name. /// The cancellation token to use. /// is null. - public Response List(string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public Response List(string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (managedVirtualNetworkName == null) { @@ -382,7 +382,7 @@ internal HttpMessage CreateListNextPageRequest(string nextLink, string managedVi /// Managed virtual network name. /// The cancellation token to use. /// or is null. - public async Task> ListNextPageAsync(string nextLink, string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public async Task> ListNextPageAsync(string nextLink, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (nextLink == null) { @@ -414,7 +414,7 @@ public async Task> ListNextPageAsyn /// Managed virtual network name. /// The cancellation token to use. /// or is null. - public Response ListNextPage(string nextLink, string managedVirtualNetworkName, CancellationToken cancellationToken = default) + public Response ListNextPage(string nextLink, string managedVirtualNetworkName = "default", CancellationToken cancellationToken = default) { if (nextLink == null) { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/autorest.md b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/autorest.md index 79c4d14a2b42e..1276df15684d2 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/autorest.md +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/src/autorest.md @@ -6,7 +6,7 @@ Run `dotnet msbuild /t:GenerateCode` to generate code. > see https://aka.ms/autorest ```yaml -repo: https://github.com/Azure/azure-rest-api-specs/blob/b9fbfae938a0ec0e8a696b450a917b47bea1f2e3 +repo: https://github.com/Azure/azure-rest-api-specs/blob/aa19725fe79aea2a9dc580f3c66f77f89cc34563 ``` ``` yaml diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/ManagedPrivateEndpointsClientLiveTests.cs b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/ManagedPrivateEndpointsClientLiveTests.cs index 97d8976083ad6..cd92b237a1934 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/ManagedPrivateEndpointsClientLiveTests.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/ManagedPrivateEndpointsClientLiveTests.cs @@ -47,7 +47,7 @@ public async Task TestManagedPrivateEndpoints() string fakedStorageAccountName = Recording.GenerateId("myStorageAccount", 21); string privateLinkResourceId = $"/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.Storage/accounts/{fakedStorageAccountName}"; string groupId = "blob"; - ManagedPrivateEndpoint managedPrivateEndpoint = await client.CreateAsync(managedVnetName, managedPrivateEndpointName, new ManagedPrivateEndpoint + ManagedPrivateEndpoint managedPrivateEndpoint = await client.CreateAsync(managedVnetName, new ManagedPrivateEndpoint { Properties = new ManagedPrivateEndpointProperties { diff --git a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/samples/Sample1_HelloManangedPrivateEndpoint.cs b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/samples/Sample1_HelloManangedPrivateEndpoint.cs index 1467fb803aa64..cd4b016151c3d 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/samples/Sample1_HelloManangedPrivateEndpoint.cs +++ b/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/tests/samples/Sample1_HelloManangedPrivateEndpoint.cs @@ -31,7 +31,7 @@ public void TestManagedPrivateEndpoint() string fakedStorageAccountName = "myStorageAccount"; string privateLinkResourceId = $"/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.Storage/accounts/{fakedStorageAccountName}"; string groupId = "blob"; - client.Create(managedVnetName, managedPrivateEndpointName, new ManagedPrivateEndpoint + client.Create(managedVnetName, new ManagedPrivateEndpoint { Properties = new ManagedPrivateEndpointProperties { diff --git a/sdk/synapse/Azure.Analytics.Synapse.Monitoring/src/autorest.md b/sdk/synapse/Azure.Analytics.Synapse.Monitoring/src/autorest.md index a7a1aae9f2bda..55ebf9e0833c8 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.Monitoring/src/autorest.md +++ b/sdk/synapse/Azure.Analytics.Synapse.Monitoring/src/autorest.md @@ -6,7 +6,7 @@ Run `dotnet msbuild /t:GenerateCode` to generate code. > see https://aka.ms/autorest ```yaml -repo: https://github.com/Azure/azure-rest-api-specs/blob/b9fbfae938a0ec0e8a696b450a917b47bea1f2e3 +repo: https://github.com/Azure/azure-rest-api-specs/blob/aa19725fe79aea2a9dc580f3c66f77f89cc34563 ``` ``` yaml diff --git a/sdk/synapse/Azure.Analytics.Synapse.Spark/src/autorest.md b/sdk/synapse/Azure.Analytics.Synapse.Spark/src/autorest.md index 44b6d904d79f1..374fb018a777a 100644 --- a/sdk/synapse/Azure.Analytics.Synapse.Spark/src/autorest.md +++ b/sdk/synapse/Azure.Analytics.Synapse.Spark/src/autorest.md @@ -6,7 +6,7 @@ Run `dotnet build /t:GenerateCode` to generate code. > see https://aka.ms/autorest ```yaml -repo: https://github.com/Azure/azure-rest-api-specs/blob/b9fbfae938a0ec0e8a696b450a917b47bea1f2e3 +repo: https://github.com/Azure/azure-rest-api-specs/blob/aa19725fe79aea2a9dc580f3c66f77f89cc34563 ``` ``` yaml