From c6493c841db7ffd0886c62e2d486c50eebc1eca5 Mon Sep 17 00:00:00 2001 From: Gary Wang <33770311+MSGaryWang@users.noreply.github.com> Date: Wed, 9 Feb 2022 01:08:26 -0800 Subject: [PATCH] Add private endpoint support (#6102) * Add private endpoint support * Fix validation issue * Fix typo * Add 202 back * Fix prettier --- .../examples/Grafana_Create.json | 3 + .../PrivateEndpointConnections_Create.json | 61 ++ .../PrivateEndpointConnections_Delete.json | 14 + .../PrivateEndpointConnections_Get.json | 32 + .../PrivateEndpointConnections_List.json | 36 ++ .../examples/PrivateLinkResources_Get.json | 27 + .../examples/PrivateLinkResources_List.json | 31 + .../preview/2021-09-01-preview/grafana.json | 584 ++++++++++++++++++ 8 files changed, 788 insertions(+) create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Create.json create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Delete.json create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Get.json create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_List.json create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_Get.json create mode 100644 specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_List.json diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/Grafana_Create.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/Grafana_Create.json index d32b526031bf..339cc97e53b7 100644 --- a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/Grafana_Create.json +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/Grafana_Create.json @@ -10,6 +10,7 @@ }, "properties": { "provisioningState": "Accepted", + "publicNetworkAccess": "Enabled", "zoneRedundancy": "Enabled" }, "identity": { @@ -32,6 +33,7 @@ }, "properties": { "provisioningState": "Succeeded", + "publicNetworkAccess": "Enabled", "grafanaVersion": "7.1", "endpoint": "my.azgrafana.io", "zoneRedundancy": "Enabled" @@ -63,6 +65,7 @@ }, "properties": { "provisioningState": "Accepted", + "publicNetworkAccess": "Enabled", "grafanaVersion": "7.1", "endpoint": "my.azgrafana.io", "zoneRedundancy": "Enabled" diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Create.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Create.json new file mode 100644 index 000000000000..e5aa16b9e9a6 --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Create.json @@ -0,0 +1,61 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace", + "privateEndpointConnectionName": "myConnection", + "privateEndpointConnection": { + "properties": { + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "test" + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.Dashboard/grafana/privateEndpointConnections", + "properties": { + "provisioningState": "Accepted", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Network/privateEndpoint/myEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "test", + "actionsRequired": "None" + }, + "groupIds": [ + "workspace" + ] + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.Dashboard/grafana/privateEndpointConnections", + "properties": { + "provisioningState": "Accepted", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Network/privateEndpoint/myEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "test", + "actionsRequired": "None" + }, + "groupIds": [ + "workspace" + ] + } + } + } + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Delete.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Delete.json new file mode 100644 index 000000000000..516e25cc9a76 --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Delete.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace", + "privateEndpointConnectionName": "myConnection" + }, + "responses": { + "200": {}, + "202": {}, + "204": {} + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Get.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Get.json new file mode 100644 index 000000000000..c5d9da4f1845 --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_Get.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace", + "privateEndpointConnectionName": "myConnection" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.Dashboard/grafana/privateEndpointConnections", + "properties": { + "provisioningState": "Accepted", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Network/privateEndpoint/myEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Pending", + "description": "string", + "actionsRequired": "None" + }, + "groupIds": [ + "workspace" + ] + } + } + } + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_List.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_List.json new file mode 100644 index 000000000000..b0ba532ed01d --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateEndpointConnections_List.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.Dashboard/grafana/privateEndpointConnections", + "properties": { + "provisioningState": "Accepted", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Network/privateEndpoint/myEndpoint" + }, + "privateLinkServiceConnectionState": { + "status": "Pending", + "description": "string", + "actionsRequired": "None" + }, + "groupIds": [ + "workspace" + ] + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_Get.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_Get.json new file mode 100644 index 000000000000..3085b2bf63fd --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_Get.json @@ -0,0 +1,27 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace", + "groupName": "workspace" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateLinkResources/workspace", + "name": "workspace", + "type": "Microsoft.Dashboard/grafana/PrivateLinkResources", + "properties": { + "groupId": "workspace", + "requiredMembers": [ + "workspace" + ], + "requiredZoneNames": [ + "azgrafana.io" + ] + } + } + } + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_List.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_List.json new file mode 100644 index 000000000000..49fdbd8106a7 --- /dev/null +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/examples/PrivateLinkResources_List.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2021-09-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "workspaceName": "myWorkspace" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/Microsoft.Dashboard/grafana/myWorkspace/privateLinkResources/workspace", + "name": "workspace", + "type": "Microsoft.Dashboard/grafana/PrivateLinkResources", + "properties": { + "groupId": "workspace", + "requiredMembers": [ + "workspace" + ], + "requiredZoneNames": [ + "azgrafana.io" + ] + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/grafana.json b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/grafana.json index 578463488f06..e201f9bd479a 100644 --- a/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/grafana.json +++ b/specification/dashboard/resource-manager/Microsoft.Dashboard/preview/2021-09-01-preview/grafana.json @@ -342,6 +342,335 @@ } } } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Dashboard/grafana/{workspaceName}/privateEndpointConnections": { + "get": { + "tags": [ + "PrivateEndpointConnection" + ], + "operationId": "PrivateEndpointConnections_List", + "summary": "Lists all private endpoint connections for grafana resource.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnectionListResponse" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "PrivateEndpointConnections_List": { + "$ref": "./examples/PrivateEndpointConnections_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Dashboard/grafana/{workspaceName}/privateEndpointConnections/{privateEndpointConnectionName}": { + "get": { + "tags": [ + "PrivateEndpointConnection" + ], + "operationId": "PrivateEndpointConnections_Get", + "summary": "Gets the specified private endpoint connection associated with the grafana resource.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "Private endpoint connection name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "PrivateEndpointConnections_Get": { + "$ref": "./examples/PrivateEndpointConnections_Get.json" + } + } + }, + "put": { + "tags": [ + "PrivateEndpointConnection" + ], + "operationId": "PrivateEndpointConnections_Create", + "summary": "Update the state of the specified private endpoint connection associated with the grafana resource.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "Private endpoint connection name", + "required": true, + "type": "string" + }, + { + "name": "privateEndpointConnection", + "in": "body", + "description": "The private endpoint connection properties.", + "required": true, + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "201": { + "description": "The request was successful starting a async operation", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "PrivateEndpointConnections_Create": { + "$ref": "./examples/PrivateEndpointConnections_Create.json" + } + } + }, + "delete": { + "tags": [ + "PrivateEndpointConnection" + ], + "summary": "Deletes a private endpoint connection.", + "operationId": "PrivateEndpointConnections_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "Private endpoint connection name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly." + }, + "202": { + "description": "The request was successful creating a async operation" + }, + "204": { + "description": "No Content - the specified resource was not found." + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "PrivateEndpointConnections_Delete": { + "$ref": "./examples/PrivateEndpointConnections_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Dashboard/grafana/{workspaceName}/privateLinkResources": { + "get": { + "tags": [ + "PrivateLinkResource" + ], + "operationId": "PrivateLinkResources_List", + "summary": "Gets the private link resources that need to be created for a grafana resource.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateLinkResourceListResponse" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "PrivateLinkResources_List": { + "$ref": "./examples/PrivateLinkResources_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Dashboard/grafana/{workspaceName}/privateLinkResources/{groupName}": { + "get": { + "tags": [ + "PrivateLinkResource" + ], + "operationId": "PrivateLinkResources_Get", + "summary": "Gets a private link resource that need to be created for a grafana resource.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/WorkspaceNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "groupName", + "in": "path", + "description": "The name of the private link resource group.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateLinkResource" + } + }, + "default": { + "description": "Error response describing why the operation failed", + "schema": { + "$ref": "#/definitions/ResourceProviderDefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "PrivateLinkResources_Get": { + "$ref": "./examples/PrivateLinkResources_Get.json" + } + } + } } }, "definitions": { @@ -461,6 +790,25 @@ }, "zoneRedundancy": { "$ref": "#/definitions/ZoneRedundancy" + }, + "publicNetworkAccess": { + "description": "Indicate the state for enable or disable traffic over the public interface.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string", + "x-ms-enum": { + "name": "PublicNetworkAccessType", + "modelAsString": true + } + }, + "privateEndpointConnections": { + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnectionBase" + }, + "readOnly": true } } }, @@ -695,6 +1043,242 @@ "readOnly": true } } + }, + "PrivateEndpointConnectionReference": { + "type": "object", + "description": "A reference to a related private endpoint connection.", + "properties": { + "id": { + "description": "The resource ID.", + "type": "string", + "readOnly": true + }, + "name": { + "description": "The name of the resource.", + "type": "string", + "readOnly": true + }, + "type": { + "description": "The type of the resource.", + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "The properties of a private endpoint connection.", + "x-ms-client-flatten": true + } + } + }, + "PrivateEndpointConnectionListResponse": { + "type": "object", + "description": "A list of private endpoint connections", + "properties": { + "value": { + "description": "The collection value.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "nextLink": { + "description": "The URI that can be used to request the next set of paged results.", + "type": "string" + } + } + }, + "PrivateEndpointConnection": { + "description": "A private endpoint connection", + "type": "object", + "properties": { + "id": { + "description": "The resource ID.", + "type": "string", + "readOnly": true + }, + "name": { + "description": "The name of the resource.", + "type": "string", + "readOnly": true + }, + "type": { + "description": "The type of the resource.", + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "The properties of a private endpoint.", + "x-ms-client-flatten": true + }, + "systemData": { + "description": "The system meta data relating to this grafana resource.", + "$ref": "#/definitions/SystemData" + } + }, + "x-ms-azure-resource": true + }, + "PrivateEndpointConnectionBase": { + "description": "A private endpoint connection for resource", + "type": "object", + "properties": { + "id": { + "description": "The resource ID.", + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "The properties of a private endpoint.", + "x-ms-client-flatten": true + } + }, + "x-ms-azure-resource": true + }, + "PrivateEndpointConnectionProperties": { + "type": "object", + "description": "Properties of a private endpoint connection.", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "privateEndpoint": { + "$ref": "#/definitions/PrivateEndpoint", + "description": "The resource of private endpoint." + }, + "privateLinkServiceConnectionState": { + "$ref": "#/definitions/PrivateLinkServiceConnectionState", + "description": "A collection of information about the state of the connection between service consumer and provider." + }, + "groupIds": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true + } + }, + "required": [ + "privateLinkServiceConnectionState" + ] + }, + "PrivateEndpoint": { + "type": "object", + "description": "Private endpoint which a connection belongs to.", + "properties": { + "id": { + "description": "The resource Id for private endpoint", + "type": "string", + "readOnly": true + } + } + }, + "PrivateLinkServiceConnectionState": { + "description": "The state of a private link service connection.", + "type": "object", + "properties": { + "status": { + "enum": [ + "Pending", + "Approved", + "Rejected", + "Disconnected" + ], + "type": "string", + "description": "The private link service connection status.", + "x-ms-enum": { + "name": "ConnectionStatus", + "modelAsString": true + } + }, + "description": { + "type": "string", + "description": "The private link service connection description." + }, + "actionsRequired": { + "enum": [ + "None", + "Recreate" + ], + "type": "string", + "readOnly": true, + "description": "Any action that is required beyond basic workflow (approve/ reject/ disconnect)", + "x-ms-enum": { + "name": "ActionsRequired", + "modelAsString": true + } + } + } + }, + "PrivateLinkResourceListResponse": { + "type": "object", + "description": "A list of private link resources.", + "properties": { + "value": { + "description": "The collection value.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateLinkResource" + } + }, + "nextLink": { + "description": "The URI that can be used to request the next set of paged results.", + "type": "string" + } + } + }, + "PrivateLinkResource": { + "type": "object", + "description": "A resource that supports private link capabilities.", + "properties": { + "id": { + "description": "The resource ID.", + "type": "string", + "readOnly": true + }, + "name": { + "description": "The name of the resource.", + "type": "string", + "readOnly": true + }, + "type": { + "description": "The type of the resource.", + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/PrivateLinkResourceProperties", + "description": "Private link resource properties.", + "x-ms-client-flatten": true + } + } + }, + "PrivateLinkResourceProperties": { + "type": "object", + "properties": { + "groupId": { + "description": "The private link resource group id.", + "type": "string", + "readOnly": true + }, + "requiredMembers": { + "description": "The private link resource required member names.", + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true + }, + "requiredZoneNames": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "The list of required DNS zone names of the private link resource." + } + }, + "description": "Properties of a private link resource." } }, "securityDefinitions": {