diff --git a/custom-words.txt b/custom-words.txt index 84736b8ac152..4295be7e3cf8 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -1143,6 +1143,7 @@ RAGZRS randint Rankable ravbhatnagar +rawwebsockets rawxml rbac rdbms @@ -1223,6 +1224,7 @@ resourcename resourceregion resourcetype Responsys +RESTAPI restoreheartbeat Restproxy resumable diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/Operations_List.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/Operations_List.json index 2d82aa54b0d8..b19764878022 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/Operations_List.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/Operations_List.json @@ -8,6 +8,7 @@ "value": [ { "name": "Microsoft.SignalRService/SignalR/read", + "isDataAction": false, "display": { "provider": "Microsoft.SignalRService", "resource": "SignalR", diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Create.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Create.json new file mode 100644 index 000000000000..ca317cd0e0bd --- /dev/null +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Create.json @@ -0,0 +1,62 @@ +{ + "parameters": { + "parameters": { + "properties": { + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + } + }, + "api-version": "2018-10-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "resourceName": "mySignalRService", + "privateEndpointConnectionName": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e" + }, + "responses": { + "200": { + "body": { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + }, + "201": { + "body": { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + }, + "headers": { + "Location": "https://management.azure.com/subscriptions/subid/providers/Microsoft.SignalRService/...pathToOperationResult..." + } + } + } +} diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Delete.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Delete.json new file mode 100644 index 000000000000..09f4acbe23a8 --- /dev/null +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Delete.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "api-version": "2018-10-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "resourceName": "mySignalRService", + "privateEndpointConnectionName": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/subscriptions/subid/providers/Microsoft.SignalRService/...pathToOperationResult..." + } + }, + "204": {} + } +} diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Get.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Get.json new file mode 100644 index 000000000000..43b18968d7c2 --- /dev/null +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateEndpointConnections_Get.json @@ -0,0 +1,29 @@ +{ + "parameters": { + "api-version": "2018-10-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "resourceName": "mySignalRService", + "privateEndpointConnectionName": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e" + }, + "responses": { + "200": { + "body": { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + } + } +} diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateLinkResources_List.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateLinkResources_List.json new file mode 100644 index 000000000000..a1ee62d79f57 --- /dev/null +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalRPrivateLinkResources_List.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2018-10-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "resourceName": "mySignalRService" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "groupId": "signalr", + "requiredMembers": [ + "signalr" + ], + "requiredZoneNames": [ + "privatelink.service.signalr.net" + ] + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/privateLinkResources", + "name": "signalr", + "type": "privateLinkResources" + } + ], + "nextLink": "https://management.azure.com/subscriptions/subid/providers/Microsoft.SignalRService/...pathToMoreResults..." + } + } + } +} diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_CreateOrUpdate.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_CreateOrUpdate.json index 41b4661df3f1..2f08c8c83ced 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_CreateOrUpdate.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_CreateOrUpdate.json @@ -2,6 +2,7 @@ "parameters": { "parameters": { "location": "eastus", + "kind": "SignalR", "tags": { "key1": "value1" }, @@ -17,6 +18,16 @@ "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -24,6 +35,34 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": "*", + "eventPattern": "connect,disconnect", + "categoryPattern": "*", + "urlTemplate": "https://example.com/chat/api/connect" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } } }, @@ -48,12 +87,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -61,8 +128,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" @@ -70,9 +166,6 @@ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService", "name": "mySignalRService", "type": "Microsoft.SignalRService/SignalR" - }, - "headers": { - "Location": "https://management.azure.com/subscriptions/subid/providers/Microsoft.SignalRService/...pathToOperationResult..." } }, "201": { @@ -90,12 +183,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -103,8 +224,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Get.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Get.json index 7b12b1707fd7..f5fff6318561 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Get.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Get.json @@ -21,12 +21,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -34,8 +62,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListByResourceGroup.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListByResourceGroup.json index e00efbbcf0b3..fff748e3bae5 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListByResourceGroup.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListByResourceGroup.json @@ -22,12 +22,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -35,8 +63,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListBySubscription.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListBySubscription.json index fc404f3efb29..abd2f94e0e71 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListBySubscription.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_ListBySubscription.json @@ -21,12 +21,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -34,8 +62,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Update.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Update.json index 7e58532bccfe..38b08e4db41e 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Update.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/examples/SignalR_Update.json @@ -16,6 +16,16 @@ "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -23,6 +33,25 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": null, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } } }, @@ -47,12 +76,40 @@ "publicPort": 443, "serverPort": 443, "version": "1.0", + "privateEndpointConnections": [ + { + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/myPrivateEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": null, + "actionsRequired": "None" + } + }, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/mySignalRService/privateEndpointConnections/mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "type": "Microsoft.SignalRService/SignalR/privateEndpointConnections" + } + ], "hostNamePrefix": null, "features": [ { "flag": "ServiceMode", "value": "Serverless", "properties": {} + }, + { + "flag": "EnableConnectivityLogs", + "value": "True", + "properties": {} + }, + { + "flag": "EnableMessagingLogs", + "value": "False", + "properties": {} } ], "cors": { @@ -60,8 +117,37 @@ "https://foo.com", "https://bar.com" ] + }, + "upstream": { + "templates": [ + { + "hubPattern": null, + "eventPattern": null, + "categoryPattern": null, + "urlTemplate": "http://foo.com" + } + ] + }, + "networkACLs": { + "defaultAction": "Deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ], + "deny": null + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ], + "deny": null + } + ] } }, + "kind": "SignalR", "location": "eastus", "tags": { "key1": "value1" diff --git a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/signalr.json b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/signalr.json index 6586824eca21..57b44a092523 100644 --- a/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/signalr.json +++ b/specification/signalr/resource-manager/Microsoft.SignalRService/stable/2018-10-01/signalr.json @@ -185,7 +185,212 @@ } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}/listKeys": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/privateEndpointConnections/{privateEndpointConnectionName}": { + "get": { + "tags": [ + "SignalR" + ], + "description": "Get the specified private endpoint connection associated with a SignalR resource.", + "operationId": "SignalRPrivateEndpointConnections_Get", + "parameters": [ + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "The name of the private endpoint connection associated with the SignalR resource.", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/SignalRServiceName" + } + ], + "responses": { + "200": { + "description": "Success. The response describes a list of private link resources.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "default": { + "description": "An unexpected error occurred during the operation.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "SignalRPrivateEndpointConnections_Get": { + "$ref": "./examples/SignalRPrivateEndpointConnections_Get.json" + } + } + }, + "put": { + "tags": [ + "SignalR" + ], + "description": "Update the state of specified private endpoint connection associated with a SignalR resource.", + "operationId": "SignalRPrivateEndpointConnections_Create", + "parameters": [ + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "The name of the private endpoint connection associated with the SignalR resource.", + "required": true, + "type": "string" + }, + { + "name": "parameters", + "in": "body", + "description": "The resource of private endpoint and its properties.", + "required": false, + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/SignalRServiceName" + } + ], + "responses": { + "200": { + "description": "OK. The response indicates the private endpoint connection is updated successfully.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "201": { + "description": "Created. The response indicates the private endpoint connection is now updating and contains a Location header to query the operation result.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "default": { + "description": "An unexpected error occurred during the operation.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "SignalRPrivateEndpointConnections_Create": { + "$ref": "./examples/SignalRPrivateEndpointConnections_Create.json" + } + } + }, + "delete": { + "tags": [ + "SignalR" + ], + "description": "Delete the specified private endpoint connection associated with a SignalR resource.", + "operationId": "SignalRPrivateEndpointConnections_Delete", + "parameters": [ + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "The name of the private endpoint connection associated with the SignalR resource.", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/SignalRServiceName" + } + ], + "responses": { + "202": { + "description": "Success" + }, + "204": { + "description": "Success. The response indicates the private endpoint connection is already deleted." + }, + "default": { + "description": "An unexpected error occurred during the operation.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "SignalRPrivateEndpointConnections_Delete": { + "$ref": "./examples/SignalRPrivateEndpointConnections_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/privateLinkResources": { + "get": { + "tags": [ + "SignalR" + ], + "description": "Get the private link resources that need to be created for a SignalR resource.", + "operationId": "SignalRPrivateLinkResources_List", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/SignalRServiceName" + } + ], + "responses": { + "200": { + "description": "Success. The response describes a list of private link resources.", + "schema": { + "$ref": "#/definitions/PrivateLinkResourceList" + } + }, + "default": { + "description": "An unexpected error occurred during the operation.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "SignalRPrivateLinkResources_List": { + "$ref": "./examples/SignalRPrivateLinkResources_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/listKeys": { "post": { "tags": [ "SignalR" @@ -227,7 +432,7 @@ } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}/regenerateKey": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/regenerateKey": { "post": { "tags": [ "SignalR" @@ -596,6 +801,10 @@ "description": "Name of the operation with format: {provider}/{resource}/{operation}", "type": "string" }, + "isDataAction": { + "description": "If the operation is a data action. (for data plane rbac)", + "type": "boolean" + }, "display": { "$ref": "#/definitions/OperationDisplay", "description": "The object that describes the operation." @@ -850,6 +1059,19 @@ "description": "The properties of the service.", "x-ms-client-flatten": true }, + "kind": { + "description": "The kind of the service - e.g. \"SignalR\", or \"RawWebSockets\" for \"Microsoft.SignalRService/SignalR\"", + "enum": [ + "SignalR", + "RawWebSockets" + ], + "type": "string", + "x-ms-enum": { + "name": "ServiceKind", + "modelAsString": true + }, + "readOnly": true + }, "id": { "description": "Fully qualified resource Id for the resource.", "type": "string", @@ -861,7 +1083,7 @@ "readOnly": true }, "type": { - "description": "The type of the service - e.g. \"Microsoft.SignalRService/SignalR\"", + "description": "The type of the resource - e.g. \"Microsoft.SignalRService/SignalR\", \"Microsoft.SignalRService/SignalR/PrivateEndpointConnections\"", "type": "string", "readOnly": true } @@ -913,7 +1135,7 @@ "readOnly": true }, "type": { - "description": "The type of the service - e.g. \"Microsoft.SignalRService/SignalR\"", + "description": "The type of the resource - e.g. \"Microsoft.SignalRService/SignalR\", \"Microsoft.SignalRService/SignalR/PrivateEndpointConnections\"", "type": "string", "readOnly": true } @@ -1014,6 +1236,13 @@ "version": { "description": "Version of the SignalR resource. Probably you need the same or higher version of client SDKs.", "type": "string" + }, + "privateEndpointConnections": { + "description": "Private endpoint connections to the SignalR resource.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + } } } }, @@ -1035,6 +1264,14 @@ "cors": { "$ref": "#/definitions/SignalRCorsSettings", "description": "Cross-Origin Resource Sharing (CORS) settings." + }, + "upstream": { + "$ref": "#/definitions/ServerlessUpstreamSettings", + "description": "Upstream settings when the Azure SignalR is in server-less mode." + }, + "networkACLs": { + "$ref": "#/definitions/SignalRNetworkACLs", + "description": "Network ACLs" } } }, @@ -1050,7 +1287,8 @@ "description": "FeatureFlags is the supported features of Azure SignalR service.\r\n- ServiceMode: Flag for backend server for SignalR service. Values allowed: \"Default\": have your own backend server; \"Serverless\": your application doesn't have a backend server; \"Classic\": for backward compatibility. Support both Default and Serverless mode but not recommended; \"PredefinedOnly\": for future use.\r\n- EnableConnectivityLogs: \"true\"/\"false\", to enable/disable the connectivity log category respectively.", "enum": [ "ServiceMode", - "EnableConnectivityLogs" + "EnableConnectivityLogs", + "EnableMessagingLogs" ], "type": "string", "x-ms-enum": { @@ -1059,7 +1297,7 @@ } }, "value": { - "description": "Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/azure/azure-signalr/ for allowed values.", + "description": "Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/en-us/azure/azure-signalr/ for allowed values.", "maxLength": 128, "minLength": 1, "type": "string" @@ -1086,6 +1324,307 @@ } } }, + "ServerlessUpstreamSettings": { + "description": "The settings for the Upstream when the Azure SignalR is in server-less mode.", + "type": "object", + "properties": { + "templates": { + "description": "Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects.", + "type": "array", + "items": { + "$ref": "#/definitions/UpstreamTemplate" + } + } + } + }, + "SignalRNetworkACLs": { + "description": "Network ACLs for SignalR", + "type": "object", + "properties": { + "defaultAction": { + "description": "Default action when no other rule matches", + "enum": [ + "Allow", + "Deny" + ], + "type": "string", + "x-ms-enum": { + "name": "ACLAction", + "modelAsString": true + } + }, + "publicNetwork": { + "$ref": "#/definitions/NetworkACL", + "description": "ACL for requests from public network" + }, + "privateEndpoints": { + "description": "ACLs for requests from private endpoints", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointACL" + } + } + } + }, + "UpstreamTemplate": { + "description": "Upstream template item settings. It defines the Upstream URL of the incoming requests.\r\nThe template defines the pattern of the event, the hub or the category of the incoming request that matches current URL template.", + "required": [ + "urlTemplate" + ], + "type": "object", + "properties": { + "hubPattern": { + "description": "Gets or sets the matching pattern for hub names. If not set, it matches any hub.\r\nThere are 3 kind of patterns supported:\r\n 1. \"*\", it to matches any hub name\r\n 2. Combine multiple hubs with \",\", for example \"hub1,hub2\", it matches \"hub1\" and \"hub2\"\r\n 3. The single hub name, for example, \"hub1\", it matches \"hub1\"", + "type": "string" + }, + "eventPattern": { + "description": "Gets or sets the matching pattern for event names. If not set, it matches any event.\r\nThere are 3 kind of patterns supported:\r\n 1. \"*\", it to matches any event name\r\n 2. Combine multiple events with \",\", for example \"connect,disconnect\", it matches event \"connect\" and \"disconnect\"\r\n 3. The single event name, for example, \"connect\", it matches \"connect\"", + "type": "string" + }, + "categoryPattern": { + "description": "Gets or sets the matching pattern for category names. If not set, it matches any category.\r\nThere are 3 kind of patterns supported:\r\n 1. \"*\", it to matches any category name\r\n 2. Combine multiple categories with \",\", for example \"connections,messages\", it matches category \"connections\" and \"messages\"\r\n 3. The single category name, for example, \"connections\", it matches the category \"connections\"", + "type": "string" + }, + "urlTemplate": { + "description": "Gets or sets the Upstream URL template. You can use 3 predefined parameters {hub}, {category} {event} inside the template, the value of the Upstream URL is dynamically calculated when the client request comes in.\r\nFor example, if the urlTemplate is `http://example.com/{hub}/api/{event}`, with a client request from hub `chat` connects, it will first POST to this URL: `http://example.com/chat/api/connect`.", + "type": "string" + } + } + }, + "NetworkACL": { + "description": "Network ACL", + "type": "object", + "properties": { + "allow": { + "description": "Allowed request types. The value can be: ClientConnection, ServerConnection, RESTAPI.", + "type": "array", + "items": { + "type": "string" + } + }, + "deny": { + "description": "Denied request types. The value can be: ClientConnection, ServerConnection, RESTAPI.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PrivateEndpointACL": { + "description": "ACL for a private endpoint", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "description": "Name of the private endpoint connection", + "type": "string" + }, + "allow": { + "description": "Allowed request types. The value can be: ClientConnection, ServerConnection, RESTAPI.", + "type": "array", + "items": { + "type": "string" + } + }, + "deny": { + "description": "Denied request types. The value can be: ClientConnection, ServerConnection, RESTAPI.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PrivateEndpointConnection": { + "description": "A private endpoint connection to SignalR resource", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ProxyResource" + } + ], + "properties": { + "properties": { + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "Properties of the private endpoint connection", + "x-ms-client-flatten": true + }, + "id": { + "description": "Fully qualified resource Id for the resource.", + "type": "string", + "readOnly": true + }, + "name": { + "description": "The name of the resource.", + "type": "string", + "readOnly": true + }, + "type": { + "description": "The type of the resource - e.g. \"Microsoft.SignalRService/SignalR\", \"Microsoft.SignalRService/SignalR/PrivateEndpointConnections\"", + "type": "string", + "readOnly": true + } + }, + "x-ms-azure-resource": true + }, + "ProxyResource": { + "description": "The resource model definition for a ARM proxy resource. It will have everything other than required location and tags", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/Resource" + } + ], + "properties": {} + }, + "PrivateEndpointConnectionProperties": { + "description": "Private endpoint connection properties", + "type": "object", + "properties": { + "provisioningState": { + "description": "Provisioning state of the private endpoint connection", + "enum": [ + "Unknown", + "Succeeded", + "Failed", + "Canceled", + "Running", + "Creating", + "Updating", + "Deleting", + "Moving" + ], + "type": "string", + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true + }, + "readOnly": true + }, + "privateEndpoint": { + "$ref": "#/definitions/PrivateEndpoint", + "description": "Private endpoint associated with the private endpoint connection" + }, + "privateLinkServiceConnectionState": { + "$ref": "#/definitions/PrivateLinkServiceConnectionState", + "description": "Connection state" + } + } + }, + "PrivateEndpoint": { + "description": "Private endpoint", + "type": "object", + "properties": { + "id": { + "description": "Full qualified Id of the private endpoint", + "type": "string" + } + } + }, + "PrivateLinkServiceConnectionState": { + "description": "Connection state of the private endpoint connection", + "type": "object", + "properties": { + "status": { + "description": "Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.", + "enum": [ + "Pending", + "Approved", + "Rejected", + "Disconnected" + ], + "type": "string", + "x-ms-enum": { + "name": "PrivateLinkServiceConnectionStatus", + "modelAsString": true + } + }, + "description": { + "description": "The reason for approval/rejection of the connection.", + "type": "string" + }, + "actionsRequired": { + "description": "A message indicating if changes on the service provider require any updates on the consumer.", + "type": "string" + } + } + }, + "PrivateLinkResourceList": { + "description": "Contains a list of AzSignalR.Models.Response.PrivateLink.PrivateLinkResource and a possible link to query more results", + "type": "object", + "properties": { + "value": { + "description": "List of PrivateLinkResource", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateLinkResource" + } + }, + "nextLink": { + "description": "The URL the client should use to fetch the next page (per server side paging).\r\nIt's null for now, added for future use.", + "type": "string" + } + } + }, + "PrivateLinkResource": { + "description": "Private link resource", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ProxyResource" + } + ], + "properties": { + "properties": { + "$ref": "#/definitions/PrivateLinkResourceProperties", + "description": "Properties of a private link resource", + "x-ms-client-flatten": true + }, + "id": { + "description": "Fully qualified resource Id for the resource.", + "type": "string", + "readOnly": true + }, + "name": { + "description": "The name of the resource.", + "type": "string", + "readOnly": true + }, + "type": { + "description": "The type of the resource - e.g. \"Microsoft.SignalRService/SignalR\", \"Microsoft.SignalRService/SignalR/PrivateEndpointConnections\"", + "type": "string", + "readOnly": true + } + }, + "x-ms-azure-resource": true + }, + "PrivateLinkResourceProperties": { + "description": "Private link resource properties", + "type": "object", + "properties": { + "groupId": { + "description": "Group Id of the private link resource", + "type": "string" + }, + "requiredMembers": { + "description": "Required members of the private link resource", + "type": "array", + "items": { + "type": "string" + } + }, + "requiredZoneNames": { + "description": "Required private DNS zone names", + "type": "array", + "items": { + "type": "string" + } + } + } + }, "SignalRKeys": { "description": "A class represents the access keys of SignalR service.", "type": "object", @@ -1141,6 +1680,18 @@ "location": { "description": "Azure GEO region: e.g. West US | East US | North Central US | South Central US | West Europe | North Europe | East Asia | Southeast Asia | etc. \r\nThe geo region of a resource never changes after it is created.", "type": "string" + }, + "kind": { + "description": "The kind of the service. (e.g. signalr vs. rawwebsockets)", + "enum": [ + "SignalR", + "RawWebSockets" + ], + "type": "string", + "x-ms-enum": { + "name": "ServiceKind", + "modelAsString": true + } } } }, diff --git a/specification/signalr/resource-manager/readme.md b/specification/signalr/resource-manager/readme.md index 356ff90245d8..c500080ae1d1 100644 --- a/specification/signalr/resource-manager/readme.md +++ b/specification/signalr/resource-manager/readme.md @@ -41,10 +41,22 @@ directive: from: signalr.json where: $.definitions.Dimension.properties.toBeExportedForShoebox reason: The boolean properties 'toBeExportedForShoebox' is defined by Geneva metrics + - suppress: EnumInsteadOfBoolean + from: signalr.json + where: $.definitions.Operation.properties.isDataAction + reason: The boolean properties 'isDataAction' is a standard property for Azuer Operatoins. - suppress: PutRequestResponseScheme from: signalr.json where: $.paths["/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}"].put reason: The schema of the PUT request body is a superset of the GET response body, we have a PATCH operation to make the resource updatable + - suppress: TrackedResourceListByImmediateParent + reason: Another list APIs naming approach is used over the specs + - suppress: AvoidNestedProperties + from: signalr.json + where: + - $.definitions.SignalRFeature.properties.properties + - $.definitions.PrivateEndpointConnection.properties.properties + reason: The 'properties' is a user-defined dictionary, cannot be flattened. ``` ### Tag: package-2018-10-01