diff --git a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountDeleteBlobInventoryPolicy.json b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountDeleteBlobInventoryPolicy.json new file mode 100644 index 000000000000..531c3586e302 --- /dev/null +++ b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountDeleteBlobInventoryPolicy.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "subscriptionId": "{subscription-id}", + "resourceGroupName": "res6977", + "accountName": "sto2527", + "blobInventoryPolicyName": "default", + "api-version": "2019-06-01", + "monitor": "true" + }, + "responses": { + "200": {}, + "204": {} + } +} diff --git a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountGetBlobInventoryPolicy.json b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountGetBlobInventoryPolicy.json new file mode 100644 index 000000000000..1fb79a776cf3 --- /dev/null +++ b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountGetBlobInventoryPolicy.json @@ -0,0 +1,48 @@ +{ + "parameters": { + "subscriptionId": "{subscription-id}", + "resourceGroupName": "res7687", + "accountName": "sto9699", + "blobInventoryPolicyName": "default", + "api-version": "2019-06-01", + "monitor": "true" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/{subscription-id}/resourceGroups/res7687/providers/Microsoft.Storage/storageAccounts/sto9699/inventoryPolicies/default", + "name": "DefaultInventoryPolicy", + "type": "Microsoft.Storage/storageAccounts/inventoryPolicies", + "properties": { + "policy": { + "enabled": true, + "type": "Inventory", + "destination": "containerName", + "rules": [ + { + "enabled": true, + "name": "inventoryPolicyRule1", + "definition": { + "filters": { + "blobTypes": [ + "blockBlob", + "appendBlob", + "pageBlob" + ], + "prefixMatch": [ + "inventoryprefix1", + "inventoryprefix2" + ], + "includeSnapshots": true, + "includeBlobVersions": true + } + } + } + ] + }, + "lastModifiedTime": "2020-10-05T02:53:39.0932539Z" + } + } + } + } +} diff --git a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountListBlobInventoryPolicy.json b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountListBlobInventoryPolicy.json new file mode 100644 index 000000000000..5f3f6d9e8ab6 --- /dev/null +++ b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountListBlobInventoryPolicy.json @@ -0,0 +1,51 @@ +{ + "parameters": { + "subscriptionId": "{subscription-id}", + "resourceGroupName": "res7687", + "accountName": "sto9699", + "api-version": "2019-06-01", + "monitor": "true" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/{subscription-id}/resourceGroups/res7687/providers/Microsoft.Storage/storageAccounts/sto9699/inventoryPolicies/default", + "name": "DefaultInventoryPolicy", + "type": "Microsoft.Storage/storageAccounts/inventoryPolicies", + "properties": { + "policy": { + "enabled": true, + "type": "Inventory", + "destination": "containerName", + "rules": [ + { + "enabled": true, + "name": "inventoryPolicyRule1", + "definition": { + "filters": { + "blobTypes": [ + "blockBlob", + "appendBlob", + "pageBlob" + ], + "prefixMatch": [ + "inventoryprefix1", + "inventoryprefix2" + ], + "includeSnapshots": true, + "includeBlobVersions": true + } + } + } + ] + }, + "lastModifiedTime": "2020-10-05T02:53:39.0932539Z" + } + } + ] + } + } + } +} diff --git a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountSetBlobInventoryPolicy.json b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountSetBlobInventoryPolicy.json new file mode 100644 index 000000000000..e0d0bd3a1ee4 --- /dev/null +++ b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/examples/StorageAccountSetBlobInventoryPolicy.json @@ -0,0 +1,78 @@ +{ + "parameters": { + "subscriptionId": "{subscription-id}", + "resourceGroupName": "res7687", + "accountName": "sto9699", + "blobInventoryPolicyName": "default", + "api-version": "2019-06-01", + "monitor": "true", + "properties": { + "properties": { + "policy": { + "enabled": true, + "type": "Inventory", + "destination": "containerName", + "rules": [ + { + "enabled": true, + "name": "inventoryPolicyRule1", + "definition": { + "filters": { + "blobTypes": [ + "blockBlob", + "appendBlob", + "pageBlob" + ], + "prefixMatch": [ + "inventoryprefix1", + "inventoryprefix2" + ], + "includeSnapshots": true, + "includeBlobVersions": true + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/{subscription-id}/resourceGroups/res7687/providers/Microsoft.Storage/storageAccounts/sto9699/inventoryPolicies/default", + "name": "DefaultInventoryPolicy", + "type": "Microsoft.Storage/storageAccounts/inventoryPolicies", + "properties": { + "policy": { + "enabled": true, + "type": "Inventory", + "destination": "containerName", + "rules": [ + { + "enabled": true, + "name": "inventoryPolicyRule1", + "definition": { + "filters": { + "blobTypes": [ + "blockBlob", + "appendBlob", + "pageBlob" + ], + "prefixMatch": [ + "inventoryprefix1", + "inventoryprefix2" + ], + "includeSnapshots": true, + "includeBlobVersions": true + } + } + } + ] + }, + "lastModifiedTime": "2020-10-05T02:53:39.0932539Z" + } + } + } + } +} diff --git a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/storage.json b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/storage.json index 8ec6e6bdd1db..2d7566a43690 100644 --- a/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/storage.json +++ b/specification/storage/resource-manager/Microsoft.Storage/stable/2019-06-01/storage.json @@ -815,6 +815,191 @@ } } }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/inventoryPolicies/{blobInventoryPolicyName}": { + "get": { + "tags": [ + "BlobInventoryPolicies" + ], + "operationId": "BlobInventoryPolicies_Get", + "description": "Gets the blob inventory policy associated with the specified storage account.", + "x-ms-examples": { + "StorageAccountGetBlobInventoryPolicy": { + "$ref": "./examples/StorageAccountGetBlobInventoryPolicy.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupName" + }, + { + "$ref": "#/parameters/StorageAccountName" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/BlobInventoryPolicyName" + } + ], + "responses": { + "200": { + "description": "OK -- Get the blob inventory policy successfully.", + "schema": { + "$ref": "#/definitions/BlobInventoryPolicy" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "tags": [ + "BlobInventoryPolicies" + ], + "operationId": "BlobInventoryPolicies_CreateOrUpdate", + "description": "Sets the blob inventory policy to the specified storage account.", + "x-ms-examples": { + "StorageAccountSetBlobInventoryPolicy": { + "$ref": "./examples/StorageAccountSetBlobInventoryPolicy.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupName" + }, + { + "$ref": "#/parameters/StorageAccountName" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/BlobInventoryPolicyName" + }, + { + "name": "properties", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/BlobInventoryPolicy" + }, + "description": "The blob inventory policy set to a storage account." + } + ], + "responses": { + "200": { + "description": "OK -- Put blob inventory policy successfully.", + "schema": { + "$ref": "#/definitions/BlobInventoryPolicy" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "tags": [ + "BlobInventoryPolicies" + ], + "operationId": "BlobInventoryPolicies_Delete", + "description": "Deletes the blob inventory policy associated with the specified storage account.", + "x-ms-examples": { + "StorageAccountDeleteBlobInventoryPolicy": { + "$ref": "./examples/StorageAccountDeleteBlobInventoryPolicy.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupName" + }, + { + "$ref": "#/parameters/StorageAccountName" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/BlobInventoryPolicyName" + } + ], + "responses": { + "200": { + "description": "OK -- Delete the blob inventory policy successfully." + }, + "204": { + "description": "No Content -- The blob inventory policy does not exist." + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/inventoryPolicies": { + "get": { + "tags": [ + "BlobInventoryPolicies" + ], + "operationId": "BlobInventoryPolicies_List", + "description": "Gets the blob inventory policy associated with the specified storage account.", + "x-ms-examples": { + "StorageAccountGetBlobInventoryPolicy": { + "$ref": "./examples/StorageAccountListBlobInventoryPolicy.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupName" + }, + { + "$ref": "#/parameters/StorageAccountName" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "OK -- Get the blob inventory policies successfully.", + "schema": { + "$ref": "#/definitions/ListBlobInventoryPolicy" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": null + } + } + }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/privateEndpointConnections": { "get": { "tags": [ @@ -3589,7 +3774,157 @@ }, "description": "Filters limit replication to a subset of blobs within the storage account. A logical OR is performed on values in the filter. If multiple filters are defined, a logical AND is performed on all filters." }, - "ErrorResponse": { + "ListBlobInventoryPolicy": { + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/BlobInventoryPolicy" + }, + "description": "List of blob inventory policies.", + "readOnly": true + } + }, + "description": "List of blob inventory policies returned." + }, + "BlobInventoryPolicy": { + "properties": { + "properties": { + "$ref": "#/definitions/BlobInventoryPolicyProperties", + "x-ms-client-flatten": true, + "description": "Returns the storage account blob inventory policy rules." + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v2/types.json#/definitions/systemData" + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/Resource" + } + ], + "description": "The storage account blob inventory policy." + }, + "BlobInventoryPolicyProperties": { + "properties": { + "lastModifiedTime": { + "readOnly": true, + "type": "string", + "format": "date-time", + "description": "Returns the last modified date and time of the blob inventory policy." + }, + "policy": { + "$ref": "#/definitions/BlobInventoryPolicySchema", + "description": "The storage account blob inventory policy object. It is composed of policy rules." + } + }, + "required": [ + "policy" + ], + "description": "The storage account blob inventory policy properties." + }, + "BlobInventoryPolicySchema": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Policy is enabled if set to true." + }, + "destination": { + "type": "string", + "description": "Container name where blob inventory files are stored. Must be pre-created." + }, + "type": { + "type": "string", + "description": "The valid value is Inventory", + "enum": [ + "Inventory" + ], + "x-ms-enum": { + "name": "InventoryRuleType", + "modelAsString": true + } + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/definitions/BlobInventoryPolicyRule" + }, + "description": "The storage account blob inventory policy rules. The rule is applied when it is enabled." + } + }, + "required": [ + "enabled", + "destination", + "type", + "rules" + ], + "description": "The storage account blob inventory policy rules." + }, + "BlobInventoryPolicyRule": { + "properties": { + "enabled": { + "type": "boolean", + "description": "Rule is enabled when set to true." + }, + "name": { + "type": "string", + "description": "A rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy." + }, + "definition": { + "$ref": "#/definitions/BlobInventoryPolicyDefinition", + "description": "An object that defines the blob inventory policy rule." + } + }, + "required": [ + "name", + "enabled", + "definition" + ], + "description": "An object that wraps the blob inventory rule. Each rule is uniquely defined by name." + }, + "BlobInventoryPolicyDefinition": { + "properties": { + "filters": { + "$ref": "#/definitions/BlobInventoryPolicyFilter", + "description": "An object that defines the filter set." + } + }, + "required": [ + "filters" + ], + "description": "An object that defines the blob inventory rule. Each definition consists of a set of filters." + }, + "BlobInventoryPolicyFilter": { + "properties": { + "prefixMatch": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of strings for blob prefixes to be matched." + }, + "blobTypes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of predefined enum values. Valid values include blockBlob, appendBlob, pageBlob. Hns accounts does not support pageBlobs." + }, + "includeBlobVersions": { + "type": "boolean", + "description": "Includes blob versions in blob inventory when value set to true." + }, + "includeSnapshots": { + "type": "boolean", + "description": "Includes blob snapshots in blob inventory when value set to true." + } + }, + "required": [ + "blobTypes" + ], + "description": "An object that defines the blob inventory rule filter conditions." + }, + "ErrorResponseBody": { "properties": { "code": { "type": "string", @@ -3600,6 +3935,15 @@ "description": "A message describing the error, intended to be suitable for display in a user interface." } }, + "description": "Error response body contract." + }, + "ErrorResponse": { + "properties": { + "error": { + "$ref": "#/definitions/ErrorResponseBody", + "description": "Azure Storage Resource Provider error response body." + } + }, "description": "An error response from the storage resource provider." } }, @@ -3658,6 +4002,21 @@ "description": "The ID of object replication policy or 'default' if the policy ID is unknown.", "minLength": 1, "x-ms-parameter-location": "method" + }, + "BlobInventoryPolicyName": { + "name": "blobInventoryPolicyName", + "in": "path", + "required": true, + "type": "string", + "description": "The name of the storage account blob inventory policy. It should always be 'default'", + "enum": [ + "default" + ], + "x-ms-enum": { + "name": "BlobInventoryPolicyName", + "modelAsString": true + }, + "x-ms-parameter-location": "method" } }, "securityDefinitions": {