diff --git a/custom-words.txt b/custom-words.txt index 82e96c96d1e5..72f22a0b0799 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -1600,6 +1600,7 @@ rhel RIRs rmem Rmem +rmpl Rolledback Rollforward rollouts diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeletePrivateLinkAssociation.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeletePrivateLinkAssociation.json new file mode 100644 index 000000000000..e2f208e0ecad --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeletePrivateLinkAssociation.json @@ -0,0 +1,13 @@ +{ + "parameters": { + "plaId": "00000000-0000-0000-0000-000000000000", + "groupId": "my-management-group", + "api-version": "2020-05-01" + }, + "responses": { + "200": { + "headers": {} + }, + "204": {} + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeleteResourceManagementPrivateLink.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeleteResourceManagementPrivateLink.json new file mode 100644 index 000000000000..e1de91c0e242 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/DeleteResourceManagementPrivateLink.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "my-resource-group", + "api-version": "2020-05-01", + "rmplName": "my-rmplName" + }, + "responses": { + "200": { + "headers": {} + }, + "204": {} + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetPrivateLinkAssociation.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetPrivateLinkAssociation.json new file mode 100644 index 000000000000..89021a2e220f --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetPrivateLinkAssociation.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "groupId": "my-management-group", + "api-version": "2020-05-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "privateLink": "00000000-0000-0000-0000-000000000000", + "publicNetworkAccess": "Enabled", + "tenantID": "06b3ccb8-1384-4bcc-aec7-852f6d57161b", + "scope": "/providers/Microsoft.Management/managementGroups/my-management-group" + }, + "id": "00000000-0000-0000-0000-000000000000", + "type": "Microsoft.Authorization/privateLinkAssociations", + "name": "my-pla" + } + ] + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetResourceManagementPrivateLink.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetResourceManagementPrivateLink.json new file mode 100644 index 000000000000..0864a63291cc --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/GetResourceManagementPrivateLink.json @@ -0,0 +1,21 @@ +{ + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "my-resource-group", + "api-version": "2020-05-01", + "rmplName": "my-rmplName" + }, + "responses": { + "200": { + "body": { + "properties": { + "privateEndpointConnections": [] + }, + "id": "00000000-0000-0000-0000-000000000000", + "name": "my-pla", + "type": "Microsoft.Authorization/privateLinkAssociations", + "location": "eastus" + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/ListResourceManagementPrivateLink.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/ListResourceManagementPrivateLink.json new file mode 100644 index 000000000000..50475dd7e7d8 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/ListResourceManagementPrivateLink.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "api-version": "2020-05-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "privateEndpointConnections": [] + }, + "id": "00000000-0000-0000-0000-000000000000", + "name": "my-pla", + "type": "Microsoft.Authorization/privateLinkAssociations", + "location": "eastus" + }, + { + "properties": { + "privateEndpointConnections": [] + }, + "id": "00000000-0000-0000-0000-000000000001", + "name": "my-pla2", + "type": "Microsoft.Authorization/privateLinkAssociations", + "location": "eastus" + } + ] + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutPrivateLinkAssociation.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutPrivateLinkAssociation.json new file mode 100644 index 000000000000..44ebe70b1bce --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutPrivateLinkAssociation.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "plaId": "00000000-0000-0000-0000-000000000000", + "groupId": "my-management-group", + "api-version": "2020-05-01", + "parameters": { + "privateLink": "00000000-0000-0000-0000-000000000000", + "publicNetworkAccess": "Enabled" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "privateLink": "00000000-0000-0000-0000-000000000000", + "publicNetworkAccess": "Enabled", + "tenantID": "06b3ccb8-1384-4bcc-aec7-852f6d57161b", + "scope": "/providers/Microsoft.Management/managementGroups/my-management-group" + }, + "id": "00000000-0000-0000-0000-000000000000", + "type": "Microsoft.Authorization/privateLinkAssociations", + "name": "my-pla" + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutResourceManagementPrivateLink.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutResourceManagementPrivateLink.json new file mode 100644 index 000000000000..c4bfd6816823 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/examples/PutResourceManagementPrivateLink.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "my-resource-group", + "api-version": "2020-05-01", + "rmplName": "my-rmplName", + "parameters": { + "location": "eastus" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "privateEndpointConnections": [] + }, + "id": "00000000-0000-0000-0000-000000000000", + "name": "my-pla", + "type": "Microsoft.Authorization/privateLinkAssociations", + "location": "eastus" + } + } + } +} diff --git a/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/privateLinks.json b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/privateLinks.json new file mode 100644 index 000000000000..20bbc6b91487 --- /dev/null +++ b/specification/resources/resource-manager/Microsoft.Authorization/stable/2020-05-01/privateLinks.json @@ -0,0 +1,545 @@ +{ + "swagger": "2.0", + "info": { + "title": "PolicyClient", + "version": "2020-05-01", + "description": "To manage and control access to your resources, you can define customized policies and assign them at a scope." + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": { + "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Authorization/privateLinkAssociations/{plaId}": { + "put": { + "tags": [ + "PrivateLinkAssociation" + ], + "operationId": "PrivateLinkAssociation_Put", + "description": "Create a PrivateLinkAssociation", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/GroupIdParameter" + }, + { + "$ref": "#/parameters/PrivateLinkAssociationIdParameter" + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/PrivateLinkAssociationProperties" + }, + "description": "Parameters supplied to create the private link association." + } + ], + "responses": { + "200": { + "description": "Ok - Returns information about the new private link association.", + "schema": { + "$ref": "#/definitions/PrivateLinkAssociation" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Create a private link association, associate scope to rmpl.": { + "$ref": "./examples/PutPrivateLinkAssociation.json" + } + } + }, + "delete": { + "tags": [ + "PrivateLinkAssociation" + ], + "operationId": "PrivateLinkAssociation_Delete", + "description": "Delete a PrivateLinkAssociation", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/GroupIdParameter" + }, + { + "$ref": "#/parameters/PrivateLinkAssociationIdParameter" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "204": { + "description": "" + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Delete a private link association.": { + "$ref": "./examples/DeletePrivateLinkAssociation.json" + } + } + } + }, + "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Authorization/privateLinkAssociations": { + "get": { + "tags": [ + "PrivateLinkAssociation" + ], + "operationId": "PrivateLinkAssociation_Get", + "description": "Get a private link association for a management group scope", + "parameters": [ + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/GroupIdParameter" + } + ], + "responses": { + "200": { + "description": "Ok. The request has succeeded", + "schema": { + "$ref": "#/definitions/PrivateLinkAssociationGetResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Get a private link association for a MG scope.": { + "$ref": "./examples/GetPrivateLinkAssociation.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/resourceManagementPrivateLinks/{rmplName}": { + "put": { + "tags": [ + "ResourceManagementPrivateLink" + ], + "operationId": "ResourceManagementPrivateLink_Put", + "description": "Create a resource management group private link.", + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "name": "resourceGroupName", + "in": "path", + "required": true, + "type": "string", + "description": "The name of the resource group the template will be deployed to. The name is case insensitive.", + "minLength": 1, + "maxLength": 90 + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ResourceManagementPrivateLinkParameter" + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ResourceManagementPrivateLinkLocation" + }, + "description": "The region to create the Resource Management private link." + } + ], + "responses": { + "200": { + "description": "OK. The request has succeeded.", + "schema": { + "$ref": "#/definitions/ResourceManagementPrivateLink" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Create Resource Management Private Link.": { + "$ref": "./examples/PutResourceManagementPrivateLink.json" + } + } + }, + "get": { + "tags": [ + "ResourceManagementPrivateLink" + ], + "operationId": "ResourceManagementPrivateLink_Get", + "description": "Get a resource management private link(resource-level).", + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "name": "resourceGroupName", + "in": "path", + "required": true, + "type": "string", + "description": "The name of the resource group the template will be deployed to. The name is case insensitive.", + "minLength": 1, + "maxLength": 90 + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ResourceManagementPrivateLinkParameter" + } + ], + "responses": { + "200": { + "description": "Ok. Returns information about the resource management private link.", + "schema": { + "$ref": "#/definitions/ResourceManagementPrivateLink" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Get a Resource Management Private Link(resource-level).": { + "$ref": "./examples/GetResourceManagementPrivateLink.json" + } + } + }, + "delete": { + "tags": [ + "ResourceManagementPrivateLink" + ], + "operationId": "ResourceManagementPrivateLink_Delete", + "description": "Delete a resource management private link.", + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "name": "resourceGroupName", + "in": "path", + "required": true, + "type": "string", + "description": "The name of the resource group the template will be deployed to. The name is case insensitive.", + "minLength": 1, + "maxLength": 90 + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/ResourceManagementPrivateLinkParameter" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "204": { + "description": "" + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Delete a Resource Management Private Link.": { + "$ref": "./examples/DeleteResourceManagementPrivateLink.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/resourceManagementPrivateLinks": { + "get": { + "tags": [ + "ResourceManagementPrivateLink" + ], + "operationId": "ResourceManagementPrivateLink_List", + "description": "Get all the resource management private links in a subscription.", + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Ok - Returns an array of private links.", + "schema": { + "$ref": "#/definitions/ResourceManagementPrivateLinkListResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Delete a Resource Management Private Link.": { + "$ref": "./examples/ListResourceManagementPrivateLink.json" + } + } + } + } + }, + "definitions": { + "PrivateLinkAssociationProperties": { + "type": "object", + "properties": { + "privateLink": { + "type": "string", + "description": "The rmpl Resource ID." + }, + "publicNetworkAccess": { + "type": "string", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "publicNetworkAccessOptions", + "modelAsString": true + } + } + } + }, + "PrivateLinkAssociationGetResult": { + "description": "Result of the request to get PLA for a MG scope. ", + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/PrivateLinkAssociation" + }, + "description": "private link association information." + } + } + }, + "PrivateLinkAssociationPropertiesExpanded": { + "type": "object", + "properties": { + "privateLink": { + "type": "string", + "description": "The rmpl Resource ID." + }, + "publicNetworkAccess": { + "type": "string", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "publicNetworkAccessOptions", + "modelAsString": true + } + }, + "tenantID": { + "type": "string", + "description": "The TenantID." + }, + "scope": { + "type": "string", + "description": "The scope of the private link association." + } + }, + "description": "Private Link Association Properties." + }, + "PrivateLinkAssociation": { + "type": "object", + "properties": { + "properties": { + "$ref": "#/definitions/PrivateLinkAssociationPropertiesExpanded", + "description": "The private link association properties." + }, + "id": { + "readOnly": true, + "type": "string", + "description": "The plaResourceID." + }, + "type": { + "readOnly": true, + "type": "string", + "description": "The operation type." + }, + "name": { + "readOnly": true, + "type": "string", + "description": "The pla name." + } + }, + "x-ms-azure-resource": true + }, + "ResourceManagementPrivateLink": { + "type": "object", + "properties": { + "properties": { + "$ref": "#/definitions/ResourceManagementPrivateLinkEndpointConnections" + }, + "id": { + "readOnly": true, + "type": "string", + "description": "The rmplResourceID." + }, + "name": { + "readOnly": true, + "type": "string", + "description": "The rmpl Name." + }, + "type": { + "readOnly": true, + "type": "string", + "description": "The operation type." + }, + "location": { + "type": "string", + "description": "the region of the rmpl" + } + }, + "x-ms-azure-resource": true + }, + "ResourceManagementPrivateLinkLocation": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "the region to create private link association." + } + } + }, + "ResourceManagementPrivateLinkEndpointConnections": { + "type": "object", + "properties": { + "privateEndpointConnections": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The private endpoint connections." + } + } + }, + "ResourceManagementPrivateLinkListResult": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/ResourceManagementPrivateLink" + }, + "description": "An array of resource management private links." + } + } + }, + "CloudError": { + "x-ms-external": true, + "properties": { + "error": { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" + } + }, + "description": "An error response for a resource management request." + } + }, + "parameters": { + "ApiVersionParameter": { + "name": "api-version", + "in": "query", + "required": true, + "type": "string", + "description": "The API version to use for this operation." + }, + "GroupIdParameter": { + "name": "groupId", + "in": "path", + "required": true, + "type": "string", + "description": "The management group ID.", + "x-ms-parameter-location": "method", + "minLength": 1, + "maxLength": 90 + }, + "SubscriptionIdParameter": { + "name": "subscriptionId", + "in": "path", + "required": true, + "type": "string", + "description": "The ID of the target subscription." + }, + "PrivateLinkAssociationIdParameter": { + "name": "plaId", + "in": "path", + "required": true, + "type": "string", + "description": "The ID of the PLA", + "x-ms-parameter-location": "method" + }, + "ResourceManagementPrivateLinkParameter": { + "name": "rmplName", + "in": "path", + "required": true, + "type": "string", + "description": "The name of the resource management private link.", + "x-ms-parameter-location": "method" + } + } +} diff --git a/specification/resources/resource-manager/readme.md b/specification/resources/resource-manager/readme.md index f6354879cd2f..1c34b373b0f2 100644 --- a/specification/resources/resource-manager/readme.md +++ b/specification/resources/resource-manager/readme.md @@ -64,8 +64,20 @@ tag: package-deploymentscripts-2020-10 tag: package-templatespecs-2021-03-preview ``` + + +### Tag: package-privatelinks-2020-05 + +These settings apply only when `--tag=package-privatelinks-2020-05` is specified on the command line. + +``` yaml $(tag) == 'package-privatelinks-2020-05' +input-file: +- Microsoft.Authorization/stable/2020-05-01/privateLinks.json +``` + ### Tag: package-resources-2021-04 + These settings apply only when `--tag=package-resources-2021-04` is specified on the command line. ``` yaml $(tag) == 'package-resources-2021-04' @@ -628,6 +640,10 @@ directive: from: policyAssignments.json where: $.paths reason: operation APIs for Microsoft.Authorization are to be defined in RBAC swagger + - suppress: OperationsAPIImplementation + from: privateLinks.json + where: $.paths + reason: operation APIs for Microsoft.Authorization are to be defined in RBAC swagger - suppress: OperationsAPIImplementation from: policyDefinitions.json where: $.paths @@ -769,9 +785,15 @@ directive: - suppress: TopLevelResourcesListByResourceGroup from: policySetDefinitions.json reason: Policy set definitions are a proxy resource that is only usable on subscriptions or management groups + - suppress: RequiredReadOnlySystemData + from: privateLinks.json + reason: We do not yet support system data - from: SubscriptionFeatureRegistration.json suppress: R4009 reason: Currently systemData is not allowed + - suppress: TopLevelResourcesListByResourceGroup + from: privateLinks.json + reason: The resource is managed in a management group level (instead of inside a resource group) ``` ---