diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props
index dd274ab8d63e..a902ea995311 100644
--- a/eng/Packages.Data.props
+++ b/eng/Packages.Data.props
@@ -144,7 +144,8 @@
-
+
+
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/CHANGELOG.md b/sdk/provisioning/Azure.Provisioning.WebPubSub/CHANGELOG.md
new file mode 100644
index 000000000000..75713709e7d2
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/CHANGELOG.md
@@ -0,0 +1,7 @@
+# Release History
+
+## 0.1.0-beta.1 (2024-05-10)
+
+### Features Added
+
+- Initial beta release of Azure.Provisioning.WebPubSub.
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/README.md b/sdk/provisioning/Azure.Provisioning.WebPubSub/README.md
new file mode 100644
index 000000000000..438df373bb06
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/README.md
@@ -0,0 +1,84 @@
+# Azure Provisioning client library for .NET
+
+Azure.Provisioning.WebPubSub simplifies declarative resource provisioning in .NET for Azure Web PubSub.
+
+## Getting started
+
+### Install the package
+
+Install the client library for .NET with [NuGet](https://www.nuget.org/ ):
+
+```dotnetcli
+dotnet add package Azure.Provisioning.WebPubSub --prerelease
+```
+
+### Prerequisites
+
+> You must have an [Azure subscription](https://azure.microsoft.com/free/dotnet/).
+
+### Authenticate the Client
+
+## Key concepts
+
+This library allows you to specify your infrastructure in a declarative style using dotnet. You can then use azd to deploy your infrastructure to Azure diretly without needing to write or maintain bicep or arm templates.
+
+## Examples
+
+Here is a simple example which creates a KeyVault.
+
+First create your Infrastructure class.
+
+```C# Snippet:SampleInfrastructure
+public class SampleInfrastructure : Infrastructure
+{
+ public SampleInfrastructure() : base(envName: "Sample", tenantId: Guid.Empty, subscriptionId: Guid.Empty, configuration: new Configuration { UseInteractiveMode = true })
+ {
+ }
+}
+```
+
+Next add your resources into your infrastructure and then Build.
+
+```C# Snippet:KeyVaultOnly
+// Create a new infrastructure
+var infrastructure = new SampleInfrastructure();
+
+// Add a new key vault
+var keyVault = infrastructure.AddKeyVault();
+
+// You can call Build to convert the infrastructure into bicep files.
+infrastructure.Build();
+```
+
+## Troubleshooting
+
+- File an issue via [GitHub Issues](https://github.com/Azure/azure-sdk-for-net/issues).
+- Check [previous questions](https://stackoverflow.com/questions/tagged/azure+.net) or ask new ones on Stack Overflow using Azure and .NET tags.
+
+## Next steps
+
+## Contributing
+
+For details on contributing to this repository, see the [contributing
+guide][cg].
+
+This project welcomes contributions and suggestions. Most contributions
+require you to agree to a Contributor License Agreement (CLA) declaring
+that you have the right to, and actually do, grant us the rights to use
+your contribution. For details, visit .
+
+When you submit a pull request, a CLA-bot will automatically determine
+whether you need to provide a CLA and decorate the PR appropriately
+(for example, label, comment). Follow the instructions provided by the
+bot. You'll only need to do this action once across all repositories
+using our CLA.
+
+This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For
+more information, see the [Code of Conduct FAQ][coc_faq] or contact
+ with any other questions or comments.
+
+
+[cg]: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/resourcemanager/Azure.ResourceManager/docs/CONTRIBUTING.md
+[coc]: https://opensource.microsoft.com/codeofconduct/
+[coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/
+
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/api/Azure.Provisioning.WebPubSub.netstandard2.0.cs b/sdk/provisioning/Azure.Provisioning.WebPubSub/api/Azure.Provisioning.WebPubSub.netstandard2.0.cs
new file mode 100644
index 000000000000..b8af4abe56e9
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/api/Azure.Provisioning.WebPubSub.netstandard2.0.cs
@@ -0,0 +1,15 @@
+namespace Azure.Provisioning.WebPubSub
+{
+ public partial class WebPubSubHub : Azure.Provisioning.Resource
+ {
+ public WebPubSubHub(Azure.Provisioning.IConstruct scope, Azure.ResourceManager.WebPubSub.Models.WebPubSubHubProperties properties, Azure.Provisioning.WebPubSub.WebPubSubService? parent = null, string name = "hub", string version = "2021-10-01") : base (default(Azure.Provisioning.IConstruct), default(Azure.Provisioning.Resource), default(string), default(Azure.Core.ResourceType), default(string), default(System.Func), default(bool)) { }
+ protected override Azure.Provisioning.Resource? FindParentInScope(Azure.Provisioning.IConstruct scope) { throw null; }
+ public static Azure.Provisioning.WebPubSub.WebPubSubHub FromExisting(Azure.Provisioning.IConstruct scope, string name, Azure.Provisioning.WebPubSub.WebPubSubService? parent = null) { throw null; }
+ }
+ public partial class WebPubSubService : Azure.Provisioning.Resource
+ {
+ public WebPubSubService(Azure.Provisioning.IConstruct scope, Azure.ResourceManager.WebPubSub.Models.BillingInfoSku? sku = null, Azure.Provisioning.ResourceManager.ResourceGroup? parent = null, string name = "webpubsub", string version = "2021-10-01", Azure.Core.AzureLocation? location = default(Azure.Core.AzureLocation?)) : base (default(Azure.Provisioning.IConstruct), default(Azure.Provisioning.Resource), default(string), default(Azure.Core.ResourceType), default(string), default(System.Func), default(bool)) { }
+ public static Azure.Provisioning.WebPubSub.WebPubSubService FromExisting(Azure.Provisioning.IConstruct scope, string name, Azure.Provisioning.ResourceManager.ResourceGroup? parent = null) { throw null; }
+ protected override string GetAzureName(Azure.Provisioning.IConstruct scope, string resourceName) { throw null; }
+ }
+}
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/assets.json b/sdk/provisioning/Azure.Provisioning.WebPubSub/assets.json
new file mode 100644
index 000000000000..81f5b60480e2
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/assets.json
@@ -0,0 +1,6 @@
+{
+ "AssetsRepo": "Azure/azure-sdk-assets",
+ "AssetsRepoPrefixPath": "net",
+ "TagPrefix": "net/provisioning/Azure.Provisioning.WebPubSub",
+ "Tag": "net/provisioning/Azure.Provisioning.WebPubSub_ee1c01a8d9"
+}
\ No newline at end of file
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Azure.Provisioning.WebPubSub.csproj b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Azure.Provisioning.WebPubSub.csproj
new file mode 100644
index 000000000000..29b011d81e12
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Azure.Provisioning.WebPubSub.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Azure.Provisioning.WebPubSub simplifies declarative resource provisioning in .NET for Azure Web PubSub.
+ 0.1.0-beta.1
+ $(RequiredTargetFrameworks)
+ $(NoWarn);AZC0001
+
+
+
+
+
+
+
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Properties/AssemblyInfo.cs b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000000..15a940a47a16
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/Properties/AssemblyInfo.cs
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: Experimental("AZPROVISION001")]
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubHub.cs b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubHub.cs
new file mode 100644
index 000000000000..1c8f39b67fd7
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubHub.cs
@@ -0,0 +1,66 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using Azure.ResourceManager.WebPubSub;
+using Azure.ResourceManager.WebPubSub.Models;
+
+namespace Azure.Provisioning.WebPubSub
+{
+ ///
+ /// Represents a hub setting for WebPubSub.
+ ///
+ public class WebPubSubHub : Resource
+ {
+ // https://learn.microsoft.com/azure/templates/microsoft.signalrservice/2023-02-01/webPubSub/hubs?pivots=deployment-language-bicep
+ private const string ResourceTypeName = "Microsoft.SignalRService/webPubSub/hubs";
+
+ private static WebPubSubHubData Empty(string name) => ArmWebPubSubModelFactory.WebPubSubHubData();
+
+ ///
+ /// Creates a new instance of the class.
+ ///
+ /// The scope.
+ /// The properties of the hub settings.
+ /// The parent.
+ /// The name.
+ /// The version.
+ public WebPubSubHub(IConstruct scope,
+ WebPubSubHubProperties properties,
+ WebPubSubService? parent = null,
+ string name = "hub",
+ string version = WebPubSubService.DefaultVersion)
+ : this(scope, parent, name, version, false, (name) => ArmWebPubSubModelFactory.WebPubSubHubData(
+ name: name,
+ properties: properties))
+ {
+ }
+
+ private WebPubSubHub(
+ IConstruct scope,
+ WebPubSubService? parent,
+ string name,
+ string version = WebPubSubService.DefaultVersion,
+ bool isExisting = false,
+ Func? creator = null)
+ : base(scope, parent, name, ResourceTypeName, version, creator ?? Empty, isExisting)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class referencing an existing instance.
+ ///
+ /// The scope.
+ /// The resource name.
+ /// The resource group.
+ /// The WebPubSub service instance.
+ public static WebPubSubHub FromExisting(IConstruct scope, string name, WebPubSubService? parent = null)
+ => new WebPubSubHub(scope, parent: parent, name: name, isExisting: true);
+
+ ///
+ protected override Resource? FindParentInScope(IConstruct scope)
+ {
+ return scope.GetSingleResource() ?? new WebPubSubService(scope);
+ }
+ }
+}
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubService.cs b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubService.cs
new file mode 100644
index 000000000000..98671498c9e3
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/src/WebPubSubService.cs
@@ -0,0 +1,72 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using Azure.Core;
+using Azure.Provisioning.ResourceManager;
+using Azure.ResourceManager.WebPubSub;
+using Azure.ResourceManager.WebPubSub.Models;
+
+namespace Azure.Provisioning.WebPubSub
+{
+ ///
+ /// Represents a WebPubSub.
+ ///
+ public class WebPubSubService : Resource
+ {
+ // https://learn.microsoft.com/azure/templates/microsoft.signalrservice/2023-02-01/webPubSub?pivots=deployment-language-bicep
+ private const string ResourceTypeName = "Microsoft.SignalRService/webPubSub";
+ // https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/webpubsub/Azure.ResourceManager.WebPubSub/src/Generated/RestOperations/WebPubSubRestOperations.cs#L36
+ internal const string DefaultVersion = "2021-10-01";
+
+ private static WebPubSubData Empty(string name) => ArmWebPubSubModelFactory.WebPubSubData();
+
+ ///
+ /// Creates a new instance of the class.
+ ///
+ /// The scope.
+ /// The SKU.
+ /// The parent.
+ /// The name.
+ /// The version.
+ /// The location.
+ public WebPubSubService(
+ IConstruct scope,
+ BillingInfoSku? sku = default,
+ ResourceGroup? parent = default,
+ string name = "webpubsub",
+ string version = DefaultVersion,
+ AzureLocation? location = default)
+ : this(scope, parent, name, version, false, (name) => ArmWebPubSubModelFactory.WebPubSubData(
+ name: name,
+ location: location ?? Environment.GetEnvironmentVariable("AZURE_LOCATION") ?? AzureLocation.WestUS,
+ sku: sku ?? new BillingInfoSku("Free_F1") { Capacity = 1 }))
+ {
+ AssignProperty(data => data.Name, GetAzureName(scope, name));
+ }
+
+ private WebPubSubService(
+ IConstruct scope,
+ ResourceGroup? parent,
+ string name,
+ string version = DefaultVersion,
+ bool isExisting = false,
+ Func? creator = null)
+ : base(scope, parent, name, ResourceTypeName, version, creator ?? Empty, isExisting)
+ {
+ }
+
+ ///
+ /// Creates a new instance of the class referencing an existing instance.
+ ///
+ /// The scope.
+ /// The resource name.
+ /// The resource group.
+ /// The WebPubSub service instance.
+ public static WebPubSubService FromExisting(IConstruct scope, string name, ResourceGroup? parent = null)
+ => new WebPubSubService(scope, parent: parent, name: name, isExisting: true);
+
+ ///
+ protected override string GetAzureName(IConstruct scope, string resourceName) => GetGloballyUniqueName(resourceName);
+ }
+}
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Azure.Provisioning.WebPubSub.Tests.csproj b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Azure.Provisioning.WebPubSub.Tests.csproj
new file mode 100644
index 000000000000..b4677b92e932
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Azure.Provisioning.WebPubSub.Tests.csproj
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/main.bicep b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/main.bicep
new file mode 100644
index 000000000000..136bc7020567
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/main.bicep
@@ -0,0 +1,15 @@
+targetScope = 'subscription'
+
+
+resource resourceGroup_I6QNkoPsb 'Microsoft.Resources/resourceGroups@2023-07-01' = {
+ name: 'rg-TEST'
+ location: 'westus'
+ tags: {
+ 'azd-env-name': 'TEST'
+ }
+}
+
+module rg_TEST_module './resources/rg_TEST_module/rg_TEST_module.bicep' = {
+ name: 'rg_TEST_module'
+ scope: resourceGroup_I6QNkoPsb
+}
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/resources/rg_TEST_module/rg_TEST_module.bicep b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/resources/rg_TEST_module/rg_TEST_module.bicep
new file mode 100644
index 000000000000..30e8a98512f1
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/ExistingWebPubSubResources/resources/rg_TEST_module/rg_TEST_module.bicep
@@ -0,0 +1,4 @@
+
+resource webPubSubService_f0nsipxGj 'Microsoft.SignalRService/webPubSub@2021-10-01' existing = {
+ name: 'existingWebPubSub'
+}
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSub/main.bicep b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSub/main.bicep
new file mode 100644
index 000000000000..a2a5554476ea
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSub/main.bicep
@@ -0,0 +1,40 @@
+targetScope = 'resourceGroup'
+
+@description('')
+param location string = resourceGroup().location
+
+
+resource webPubSubService_EAdO6ICWi 'Microsoft.SignalRService/webPubSub@2021-10-01' = {
+ name: toLower(take('webpubsub${uniqueString(resourceGroup().id)}', 24))
+ location: location
+ sku: {
+ name: 'Standard_S1'
+ }
+ properties: {
+ }
+}
+
+resource roleAssignment_eQVZzvRPP 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
+ scope: webPubSubService_EAdO6ICWi
+ name: guid(webPubSubService_EAdO6ICWi.id, '00000000-0000-0000-0000-000000000000', subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '12cf5a90-567b-43ae-8102-96cf46c7d9b4'))
+ properties: {
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '12cf5a90-567b-43ae-8102-96cf46c7d9b4')
+ principalId: '00000000-0000-0000-0000-000000000000'
+ principalType: 'ServicePrincipal'
+ }
+}
+
+resource webPubSubHub_tKhq1vFqb 'Microsoft.SignalRService/webPubSub/hubs@2021-10-01' = {
+ parent: webPubSubService_EAdO6ICWi
+ name: 'hub'
+ properties: {
+ eventHandlers: [
+ {
+ urlTemplate: 'tunnel:///eventhandler'
+ userEventPattern: '*'
+ }
+ ]
+ }
+}
+
+output hostName string = webPubSubService_EAdO6ICWi.properties.hostName
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSubResources/main.bicep b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSubResources/main.bicep
new file mode 100644
index 000000000000..a098516a8380
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/Infrastructure/WebPubSubResources/main.bicep
@@ -0,0 +1,38 @@
+targetScope = 'resourceGroup'
+
+@description('')
+param location string = resourceGroup().location
+
+
+resource signalRService_TvD5y8AYq 'Microsoft.SignalRService/signalR@2022-02-01' = {
+ name: toLower(take('signalr${uniqueString(resourceGroup().id)}', 24))
+ location: location
+ sku: {
+ name: 'Standard_S1'
+ }
+ properties: {
+ features: [
+ {
+ flag: 'ServiceMode'
+ value: 'Serverless'
+ }
+ ]
+ cors: {
+ allowedOrigins: [
+ '*'
+ ]
+ }
+ }
+}
+
+resource roleAssignment_hFSNN5tl8 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
+ scope: signalRService_TvD5y8AYq
+ name: guid(signalRService_TvD5y8AYq.id, '00000000-0000-0000-0000-000000000000', subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '420fcaa2-552c-430f-98ca-3264be4806c7'))
+ properties: {
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '420fcaa2-552c-430f-98ca-3264be4806c7')
+ principalId: '00000000-0000-0000-0000-000000000000'
+ principalType: 'ServicePrincipal'
+ }
+}
+
+output hostName string = signalRService_TvD5y8AYq.properties.hostName
diff --git a/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/WebPubSubTests.cs b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/WebPubSubTests.cs
new file mode 100644
index 000000000000..26d2ecf82e1a
--- /dev/null
+++ b/sdk/provisioning/Azure.Provisioning.WebPubSub/tests/WebPubSubTests.cs
@@ -0,0 +1,46 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Threading.Tasks;
+using Azure.Core.TestFramework;
+using Azure.Provisioning.ResourceManager;
+using Azure.Provisioning.Tests;
+using Azure.ResourceManager.WebPubSub.Models;
+
+namespace Azure.Provisioning.WebPubSub.Tests
+{
+ public class WebPubSubTests : ProvisioningTestBase
+ {
+ public WebPubSubTests(bool isAsync) : base(isAsync)
+ {
+ }
+
+ [RecordedTest]
+ public async Task WebPubSub()
+ {
+ TestInfrastructure infrastructure = new TestInfrastructure(configuration: new Configuration { UseInteractiveMode = true });
+ var wps = new WebPubSubService(infrastructure, sku: new BillingInfoSku("Standard_S1"));
+ wps.AssignRole(RoleDefinition.WebPubSubServiceOwner, Guid.Empty);
+ var properties = new WebPubSubHubProperties();
+ properties.EventHandlers.Add(new WebPubSubEventHandler("tunnel:///eventhandler") { UserEventPattern = "*" });
+ _ = new WebPubSubHub(infrastructure, properties, parent: wps);
+ wps.AddOutput("hostName", data => data.HostName);
+ infrastructure.Build(GetOutputPath());
+
+ await ValidateBicepAsync(interactiveMode: true);
+ }
+
+ [RecordedTest]
+ public async Task ExistingWebPubSubResources()
+ {
+ var infra = new TestInfrastructure();
+ var rg = infra.AddResourceGroup();
+ infra.AddResource(WebPubSubService.FromExisting(infra, "'existingWebPubSub'", rg));
+
+ infra.Build(GetOutputPath());
+
+ await ValidateBicepAsync();
+ }
+ }
+}
diff --git a/sdk/provisioning/Azure.Provisioning.sln b/sdk/provisioning/Azure.Provisioning.sln
index 0cca2265a50f..19b53d56f5a5 100644
--- a/sdk/provisioning/Azure.Provisioning.sln
+++ b/sdk/provisioning/Azure.Provisioning.sln
@@ -69,6 +69,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Provisioning.Storage.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Core.TestFramework", "..\core\Azure.Core.TestFramework\src\Azure.Core.TestFramework.csproj", "{C2778320-ADC6-4EEE-A1D8-98590CD1223D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Provisioning.WebPubSub", "Azure.Provisioning.WebPubSub\src\Azure.Provisioning.WebPubSub.csproj", "{1ABD7C57-D9A1-4CB5-BE6F-9E9F02E2886D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Provisioning.WebPubSub.Tests", "Azure.Provisioning.WebPubSub\tests\Azure.Provisioning.WebPubSub.Tests.csproj", "{AF6AAD6F-FD2D-4480-8194-0CB5E0083065}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{822797CC-9E24-4BB1-AF93-2F2716C3C274}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
@@ -212,6 +216,14 @@ Global
{C2778320-ADC6-4EEE-A1D8-98590CD1223D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2778320-ADC6-4EEE-A1D8-98590CD1223D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2778320-ADC6-4EEE-A1D8-98590CD1223D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1ABD7C57-D9A1-4CB5-BE6F-9E9F02E2886D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1ABD7C57-D9A1-4CB5-BE6F-9E9F02E2886D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1ABD7C57-D9A1-4CB5-BE6F-9E9F02E2886D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1ABD7C57-D9A1-4CB5-BE6F-9E9F02E2886D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF6AAD6F-FD2D-4480-8194-0CB5E0083065}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF6AAD6F-FD2D-4480-8194-0CB5E0083065}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF6AAD6F-FD2D-4480-8194-0CB5E0083065}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF6AAD6F-FD2D-4480-8194-0CB5E0083065}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/sdk/provisioning/Azure.Provisioning/api/Azure.Provisioning.net461.cs b/sdk/provisioning/Azure.Provisioning/api/Azure.Provisioning.net461.cs
index e58830d0a27c..47109581fd8b 100644
--- a/sdk/provisioning/Azure.Provisioning/api/Azure.Provisioning.net461.cs
+++ b/sdk/provisioning/Azure.Provisioning/api/Azure.Provisioning.net461.cs
@@ -161,6 +161,7 @@ public partial class RoleAssignment : Azure.Provisioning.Resource
public static RoleDefinition SignalRAppServer { get; } = new RoleDefinition("420fcaa2-552c-430f-98ca-3264be4806c7");
+ ///
+ /// Web PubSub Service Owner - Full access to Azure Web PubSub Service REST APIs
+ ///
+ public static RoleDefinition WebPubSubServiceOwner { get; } = new RoleDefinition("12cf5a90-567b-43ae-8102-96cf46c7d9b4");
+
/// Converts a string to a .
public static implicit operator RoleDefinition(string value) => new RoleDefinition(value);