diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/containerregistry.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/containerregistry.json index e13102c59bb0..491a8e628d7e 100644 --- a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/containerregistry.json +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/containerregistry.json @@ -134,6 +134,178 @@ } } }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/privateEndpointConnections/{privateEndpointConnectionName}": { + "get": { + "tags": [ + "PrivateEndpointConnections" + ], + "description": "Get the specified private endpoint connection associated with the container registry.", + "operationId": "PrivateEndpointConnections_Get", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/RegistryNameParameter" + }, + { + "$ref": "#/parameters/PrivateEndpointConnectionNameParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + } + }, + "x-ms-examples": { + "PrivateEndpointConnectionGet": { + "$ref": "./examples/PrivateEndpointConnectionGet.json" + } + } + }, + "put": { + "tags": [ + "PrivateEndpointConnections" + ], + "description": "Update the state of specified private endpoint connection associated with the container registry.", + "operationId": "PrivateEndpointConnections_CreateOrUpdate", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/RegistryNameParameter" + }, + { + "$ref": "#/parameters/PrivateEndpointConnectionNameParameter" + }, + { + "name": "privateEndpointConnection", + "in": "body", + "description": "The parameters for creating a private endpoint connection.", + "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; the operation will complete asynchronously.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + } + }, + "x-ms-examples": { + "PrivateEndpointConnectionCreateOrUpdate": { + "$ref": "./examples/PrivateEndpointConnectionCreateOrUpdate.json" + } + }, + "x-ms-long-running-operation": true + }, + "delete": { + "tags": [ + "PrivateEndpointConnections" + ], + "description": "Deletes the specified private endpoint connection associated with the container registry.", + "operationId": "PrivateEndpointConnections_Delete", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/RegistryNameParameter" + }, + { + "$ref": "#/parameters/PrivateEndpointConnectionNameParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly." + }, + "202": { + "description": "The request was successful; the operation will complete asynchronously." + }, + "204": { + "description": "The private endpoint connection does not exist in the subscription." + } + }, + "x-ms-examples": { + "PrivateEndpointConnectionDelete": { + "$ref": "./examples/PrivateEndpointConnectionDelete.json" + } + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/privateEndpointConnections": { + "get": { + "tags": [ + "PrivateEndpointConnections" + ], + "description": "List all private endpoint connections in a container registry.", + "operationId": "PrivateEndpointConnections_List", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/RegistryNameParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the request was well-formed and received properly.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnectionListResult" + } + } + }, + "x-ms-examples": { + "PrivateEndpointConnectionList": { + "$ref": "./examples/PrivateEndpointConnectionList.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}": { "get": { "tags": [ @@ -494,6 +666,45 @@ } } }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/privateLinkResources": { + "get": { + "tags": [ + "Registries" + ], + "description": "Lists the private link resources for a container registry.", + "operationId": "Registries_ListPrivateLinkResources", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupParameter" + }, + { + "$ref": "#/parameters/RegistryNameParameter" + } + ], + "responses": { + "200": { + "description": "The request was successful; the private link resources were retrieved and returned successfully.", + "schema": { + "$ref": "#/definitions/PrivateLinkResourceListResult" + } + } + }, + "x-ms-examples": { + "RegistryListPrivateLinkResources": { + "$ref": "./examples/RegistryListPrivateLinkResources.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName}": { "get": { "tags": [ @@ -1306,6 +1517,124 @@ } } }, + "PrivateEndpointConnection": { + "description": "An object that represents a private endpoint connection for a container registry.", + "type": "object", + "properties": { + "type": { + "description": "The resource type is private endpoint connection.", + "type": "string", + "readOnly": true + }, + "id": { + "description": "The resource ID.", + "type": "string" + }, + "name": { + "description": "The name of the resource.", + "type": "string" + }, + "properties": { + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "The properties of a private endpoint connection.", + "x-ms-client-flatten": true + } + } + }, + "PrivateEndpointConnectionProperties": { + "description": "The properties of a private endpoint connection.", + "type": "object", + "properties": { + "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." + }, + "provisioningState": { + "description": "The provisioning state of private endpoint connection resource.", + "enum": [ + "Creating", + "Updating", + "Deleting", + "Succeeded", + "Failed", + "Canceled" + ], + "type": "string", + "readOnly": true, + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true + } + } + } + }, + "PrivateEndpoint": { + "description": "The Private Endpoint resource.", + "type": "object", + "properties": { + "id": { + "description": "This is private endpoint resource created with Microsoft.Network resource provider.", + "type": "string" + } + } + }, + "PrivateLinkServiceConnectionState": { + "description": "The state of a private link service connection.", + "type": "object", + "properties": { + "status": { + "description": "The private link service connection status.", + "enum": [ + "Approved", + "Pending", + "Rejected", + "Disconnected" + ], + "type": "string", + "x-ms-enum": { + "name": "Status", + "modelAsString": true + } + }, + "description": { + "description": "The description for connection status. For example if connection is rejected it can indicate reason for rejection.", + "type": "string" + }, + "actionsRequired": { + "description": "A message indicating if changes on the service provider require any updates on the consumer.", + "enum": [ + "None", + "Recreate" + ], + "type": "string", + "x-ms-enum": { + "name": "ActionsRequired", + "modelAsString": true + } + } + } + }, + "PrivateEndpointConnectionListResult": { + "description": "The result of a request to list private endpoint connections for a container registry.", + "type": "object", + "properties": { + "value": { + "description": "The list of private endpoint connections. Since this list may be incomplete, the nextLink field should be used to request the next list of private endpoint connections.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "nextLink": { + "description": "The URI that can be used to request the next list of private endpoint connections.", + "type": "string" + } + } + }, "Registry": { "description": "An object that represents a container registry.", "required": [ @@ -1463,6 +1792,14 @@ "encryption": { "$ref": "#/definitions/EncryptionProperty", "description": "The encryption settings of container registry." + }, + "privateEndpointConnections": { + "description": "List of private endpoint connections for a container registry.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + }, + "readOnly": true } } }, @@ -1905,6 +2242,71 @@ } } }, + "PrivateLinkResourceListResult": { + "description": "The result of a request to list private link resources for a container registry.", + "type": "object", + "properties": { + "value": { + "description": "The list of private link resources. Since this list may be incomplete, the nextLink field should be used to request the next list of private link resources.", + "type": "array", + "items": { + "$ref": "#/definitions/PrivateLinkResource" + } + }, + "nextLink": { + "description": "The URI that can be used to request the next list of private link resources.", + "type": "string" + } + } + }, + "PrivateLinkResource": { + "description": "A resource that supports private link capabilities.", + "type": "object", + "properties": { + "type": { + "description": "The resource type is private link resource.", + "type": "string", + "readOnly": true + }, + "id": { + "description": "The resource ID.", + "type": "string" + }, + "name": { + "description": "The name of the resource.", + "type": "string" + }, + "properties": { + "$ref": "#/definitions/PrivateLinkResourceProperties", + "description": "A resource that supports private link capabilities.", + "x-ms-client-flatten": true + } + } + }, + "PrivateLinkResourceProperties": { + "description": "The properties of a private link resource.", + "type": "object", + "properties": { + "groupId": { + "description": "The private link resource group id.", + "type": "string" + }, + "requiredMembers": { + "description": "The private link resource required member names.", + "type": "array", + "items": { + "type": "string" + } + }, + "requiredZoneNames": { + "description": "The private link resource Private link DNS zone name.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, "Replication": { "description": "An object that represents a replication for a container registry.", "type": "object", @@ -2570,6 +2972,14 @@ "minLength": 5, "pattern": "^[a-zA-Z0-9]*$", "x-ms-parameter-location": "method" + }, + "PrivateEndpointConnectionNameParameter": { + "name": "privateEndpointConnectionName", + "in": "path", + "description": "The name of the private endpoint connection.", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" } }, "securityDefinitions": { diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionCreateOrUpdate.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionCreateOrUpdate.json new file mode 100644 index 000000000000..7876bcefb8dd --- /dev/null +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionCreateOrUpdate.json @@ -0,0 +1,55 @@ +{ + "parameters": { + "api-version": "2019-12-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "registryName": "myRegistry", + "privateEndpointConnectionName": "myConnection", + "privateEndpointConnection": { + "properties": { + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved" + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.ContainerRegistry/registries/privateEndpointConnections", + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/peexample01" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.ContainerRegistry/registries/privateEndpointConnections", + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/peexample01" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + } + } +} diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionDelete.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionDelete.json new file mode 100644 index 000000000000..57f841e85111 --- /dev/null +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionDelete.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "api-version": "2019-12-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "registryName": "myRegistry", + "privateEndpointConnectionName": "myConnection" + }, + "responses": { + "200": {}, + "202": {}, + "204": {} + } +} diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionGet.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionGet.json new file mode 100644 index 000000000000..8fd0c455459e --- /dev/null +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionGet.json @@ -0,0 +1,29 @@ +{ + "parameters": { + "api-version": "2019-12-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "registryName": "myRegistry", + "privateEndpointConnectionName": "myConnection" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.ContainerRegistry/registries/privateEndpointConnections", + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/peexample01" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + } + } +} diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionList.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionList.json new file mode 100644 index 000000000000..e90e234ba87f --- /dev/null +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/PrivateEndpointConnectionList.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "api-version": "2019-12-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "registryName": "myRegistry" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry/privateEndpointConnections/myConnection", + "name": "myConnection", + "type": "Microsoft.ContainerRegistry/registries/privateEndpointConnections", + "properties": { + "provisioningState": "Succeeded", + "privateEndpoint": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/privateEndpoints/peexample01" + }, + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + ] + } + } + } +} diff --git a/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/RegistryListPrivateLinkResources.json b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/RegistryListPrivateLinkResources.json new file mode 100644 index 000000000000..3f12f3184785 --- /dev/null +++ b/specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/preview/2019-12-01-preview/examples/RegistryListPrivateLinkResources.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2019-12-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "registryName": "myRegistry" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry/privateLinkResources/registry", + "name": "registry", + "type": "Microsoft.ContainerRegistry/registries/privateLinkResources", + "properties": { + "groupId": "registry", + "requiredMembers": [ + "registry", + "registry_data_myregion" + ], + "requiredZoneNames": [ + "privatelink.azurecr.io" + ] + } + } + ] + } + } + } +}