# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
from .. import _utilities, _tables

__all__ = [
    'AccountBlobPropertiesArgs',
    'AccountBlobPropertiesCorsRuleArgs',
    'AccountBlobPropertiesDeleteRetentionPolicyArgs',
    'AccountCustomDomainArgs',
    'AccountIdentityArgs',
    'AccountNetworkRulesArgs',
    'AccountQueuePropertiesArgs',
    'AccountQueuePropertiesCorsRuleArgs',
    'AccountQueuePropertiesHourMetricsArgs',
    'AccountQueuePropertiesLoggingArgs',
    'AccountQueuePropertiesMinuteMetricsArgs',
    'AccountStaticWebsiteArgs',
    'ManagementPolicyRuleArgs',
    'ManagementPolicyRuleActionsArgs',
    'ManagementPolicyRuleActionsBaseBlobArgs',
    'ManagementPolicyRuleActionsSnapshotArgs',
    'ManagementPolicyRuleFiltersArgs',
    'ShareAclArgs',
    'ShareAclAccessPolicyArgs',
    'TableAclArgs',
    'TableAclAccessPolicyArgs',
    'GetAccountBlobContainerSASPermissionsArgs',
    'GetAccountSASPermissionsArgs',
    'GetAccountSASResourceTypesArgs',
    'GetAccountSASServicesArgs',
]

@pulumi.input_type
class AccountBlobPropertiesArgs:
    def __init__(__self__, *,
                 cors_rules: Optional[pulumi.Input[List[pulumi.Input['AccountBlobPropertiesCorsRuleArgs']]]] = None,
                 delete_retention_policy: Optional[pulumi.Input['AccountBlobPropertiesDeleteRetentionPolicyArgs']] = None):
        """
        :param pulumi.Input[List[pulumi.Input['AccountBlobPropertiesCorsRuleArgs']]] cors_rules: A `cors_rule` block as defined below.
        :param pulumi.Input['AccountBlobPropertiesDeleteRetentionPolicyArgs'] delete_retention_policy: A `delete_retention_policy` block as defined below.
        """
        if cors_rules is not None:
            pulumi.set(__self__, "cors_rules", cors_rules)
        if delete_retention_policy is not None:
            pulumi.set(__self__, "delete_retention_policy", delete_retention_policy)

    @property
    @pulumi.getter(name="corsRules")
    def cors_rules(self) -> Optional[pulumi.Input[List[pulumi.Input['AccountBlobPropertiesCorsRuleArgs']]]]:
        """
        A `cors_rule` block as defined below.
        """
        return pulumi.get(self, "cors_rules")

    @cors_rules.setter
    def cors_rules(self, value: Optional[pulumi.Input[List[pulumi.Input['AccountBlobPropertiesCorsRuleArgs']]]]):
        pulumi.set(self, "cors_rules", value)

    @property
    @pulumi.getter(name="deleteRetentionPolicy")
    def delete_retention_policy(self) -> Optional[pulumi.Input['AccountBlobPropertiesDeleteRetentionPolicyArgs']]:
        """
        A `delete_retention_policy` block as defined below.
        """
        return pulumi.get(self, "delete_retention_policy")

    @delete_retention_policy.setter
    def delete_retention_policy(self, value: Optional[pulumi.Input['AccountBlobPropertiesDeleteRetentionPolicyArgs']]):
        pulumi.set(self, "delete_retention_policy", value)


@pulumi.input_type
class AccountBlobPropertiesCorsRuleArgs:
    def __init__(__self__, *,
                 allowed_headers: pulumi.Input[List[pulumi.Input[str]]],
                 allowed_methods: pulumi.Input[List[pulumi.Input[str]]],
                 allowed_origins: pulumi.Input[List[pulumi.Input[str]]],
                 exposed_headers: pulumi.Input[List[pulumi.Input[str]]],
                 max_age_in_seconds: pulumi.Input[float]):
        """
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_headers: A list of headers that are allowed to be a part of the cross-origin request.
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_methods: A list of http headers that are allowed to be executed by the origin. Valid options are
               `DELETE`, `GET`, `HEAD`, `MERGE`, `POST`, `OPTIONS`, `PUT` or `PATCH`.
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_origins: A list of origin domains that will be allowed by CORS.
        :param pulumi.Input[List[pulumi.Input[str]]] exposed_headers: A list of response headers that are exposed to CORS clients.
        :param pulumi.Input[float] max_age_in_seconds: The number of seconds the client should cache a preflight response.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of headers that are allowed to be a part of the cross-origin request.
        """
        return pulumi.get(self, "allowed_headers")

    @allowed_headers.setter
    def allowed_headers(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_headers", value)

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of http headers that are allowed to be executed by the origin. Valid options are
        `DELETE`, `GET`, `HEAD`, `MERGE`, `POST`, `OPTIONS`, `PUT` or `PATCH`.
        """
        return pulumi.get(self, "allowed_methods")

    @allowed_methods.setter
    def allowed_methods(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_methods", value)

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of origin domains that will be allowed by CORS.
        """
        return pulumi.get(self, "allowed_origins")

    @allowed_origins.setter
    def allowed_origins(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_origins", value)

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of response headers that are exposed to CORS clients.
        """
        return pulumi.get(self, "exposed_headers")

    @exposed_headers.setter
    def exposed_headers(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "exposed_headers", value)

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> pulumi.Input[float]:
        """
        The number of seconds the client should cache a preflight response.
        """
        return pulumi.get(self, "max_age_in_seconds")

    @max_age_in_seconds.setter
    def max_age_in_seconds(self, value: pulumi.Input[float]):
        pulumi.set(self, "max_age_in_seconds", value)


@pulumi.input_type
class AccountBlobPropertiesDeleteRetentionPolicyArgs:
    def __init__(__self__, *,
                 days: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[float] days: Specifies the number of days that the blob should be retained, between `1` and `365` days. Defaults to `7`.
        """
        if days is not None:
            pulumi.set(__self__, "days", days)

    @property
    @pulumi.getter
    def days(self) -> Optional[pulumi.Input[float]]:
        """
        Specifies the number of days that the blob should be retained, between `1` and `365` days. Defaults to `7`.
        """
        return pulumi.get(self, "days")

    @days.setter
    def days(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "days", value)


@pulumi.input_type
class AccountCustomDomainArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 use_subdomain: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] name: The Custom Domain Name to use for the Storage Account, which will be validated by Azure.
        :param pulumi.Input[bool] use_subdomain: Should the Custom Domain Name be validated by using indirect CNAME validation?
        """
        pulumi.set(__self__, "name", name)
        if use_subdomain is not None:
            pulumi.set(__self__, "use_subdomain", use_subdomain)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        The Custom Domain Name to use for the Storage Account, which will be validated by Azure.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="useSubdomain")
    def use_subdomain(self) -> Optional[pulumi.Input[bool]]:
        """
        Should the Custom Domain Name be validated by using indirect CNAME validation?
        """
        return pulumi.get(self, "use_subdomain")

    @use_subdomain.setter
    def use_subdomain(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "use_subdomain", value)


@pulumi.input_type
class AccountIdentityArgs:
    def __init__(__self__, *,
                 type: pulumi.Input[str],
                 principal_id: Optional[pulumi.Input[str]] = None,
                 tenant_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] type: Specifies the identity type of the Storage Account. At this time the only allowed value is `SystemAssigned`.
        :param pulumi.Input[str] principal_id: The Principal ID for the Service Principal associated with the Identity of this Storage Account.
        :param pulumi.Input[str] tenant_id: The Tenant ID for the Service Principal associated with the Identity of this Storage Account.
        """
        pulumi.set(__self__, "type", type)
        if principal_id is not None:
            pulumi.set(__self__, "principal_id", principal_id)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        """
        Specifies the identity type of the Storage Account. At this time the only allowed value is `SystemAssigned`.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[str]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter(name="principalId")
    def principal_id(self) -> Optional[pulumi.Input[str]]:
        """
        The Principal ID for the Service Principal associated with the Identity of this Storage Account.
        """
        return pulumi.get(self, "principal_id")

    @principal_id.setter
    def principal_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "principal_id", value)

    @property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> Optional[pulumi.Input[str]]:
        """
        The Tenant ID for the Service Principal associated with the Identity of this Storage Account.
        """
        return pulumi.get(self, "tenant_id")

    @tenant_id.setter
    def tenant_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tenant_id", value)


@pulumi.input_type
class AccountNetworkRulesArgs:
    def __init__(__self__, *,
                 default_action: pulumi.Input[str],
                 bypasses: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None,
                 ip_rules: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None,
                 virtual_network_subnet_ids: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[str] default_action: Specifies the default action of allow or deny when no other rules match. Valid options are `Deny` or `Allow`.
        :param pulumi.Input[List[pulumi.Input[str]]] bypasses: Specifies whether traffic is bypassed for Logging/Metrics/AzureServices. Valid options are
               any combination of `Logging`, `Metrics`, `AzureServices`, or `None`.
        :param pulumi.Input[List[pulumi.Input[str]]] ip_rules: List of public IP or IP ranges in CIDR Format. Only IPV4 addresses are allowed. Private IP address ranges (as defined in [RFC 1918](https://tools.ietf.org/html/rfc1918#section-3)) are not allowed.
        :param pulumi.Input[List[pulumi.Input[str]]] virtual_network_subnet_ids: A list of resource ids for subnets.
        """
        pulumi.set(__self__, "default_action", default_action)
        if bypasses is not None:
            pulumi.set(__self__, "bypasses", bypasses)
        if ip_rules is not None:
            pulumi.set(__self__, "ip_rules", ip_rules)
        if virtual_network_subnet_ids is not None:
            pulumi.set(__self__, "virtual_network_subnet_ids", virtual_network_subnet_ids)

    @property
    @pulumi.getter(name="defaultAction")
    def default_action(self) -> pulumi.Input[str]:
        """
        Specifies the default action of allow or deny when no other rules match. Valid options are `Deny` or `Allow`.
        """
        return pulumi.get(self, "default_action")

    @default_action.setter
    def default_action(self, value: pulumi.Input[str]):
        pulumi.set(self, "default_action", value)

    @property
    @pulumi.getter
    def bypasses(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]:
        """
        Specifies whether traffic is bypassed for Logging/Metrics/AzureServices. Valid options are
        any combination of `Logging`, `Metrics`, `AzureServices`, or `None`.
        """
        return pulumi.get(self, "bypasses")

    @bypasses.setter
    def bypasses(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]):
        pulumi.set(self, "bypasses", value)

    @property
    @pulumi.getter(name="ipRules")
    def ip_rules(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]:
        """
        List of public IP or IP ranges in CIDR Format. Only IPV4 addresses are allowed. Private IP address ranges (as defined in [RFC 1918](https://tools.ietf.org/html/rfc1918#section-3)) are not allowed.
        """
        return pulumi.get(self, "ip_rules")

    @ip_rules.setter
    def ip_rules(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]):
        pulumi.set(self, "ip_rules", value)

    @property
    @pulumi.getter(name="virtualNetworkSubnetIds")
    def virtual_network_subnet_ids(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]:
        """
        A list of resource ids for subnets.
        """
        return pulumi.get(self, "virtual_network_subnet_ids")

    @virtual_network_subnet_ids.setter
    def virtual_network_subnet_ids(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]):
        pulumi.set(self, "virtual_network_subnet_ids", value)


@pulumi.input_type
class AccountQueuePropertiesArgs:
    def __init__(__self__, *,
                 cors_rules: Optional[pulumi.Input[List[pulumi.Input['AccountQueuePropertiesCorsRuleArgs']]]] = None,
                 hour_metrics: Optional[pulumi.Input['AccountQueuePropertiesHourMetricsArgs']] = None,
                 logging: Optional[pulumi.Input['AccountQueuePropertiesLoggingArgs']] = None,
                 minute_metrics: Optional[pulumi.Input['AccountQueuePropertiesMinuteMetricsArgs']] = None):
        """
        :param pulumi.Input[List[pulumi.Input['AccountQueuePropertiesCorsRuleArgs']]] cors_rules: A `cors_rule` block as defined above.
        :param pulumi.Input['AccountQueuePropertiesHourMetricsArgs'] hour_metrics: A `hour_metrics` block as defined below.
        :param pulumi.Input['AccountQueuePropertiesLoggingArgs'] logging: A `logging` block as defined below.
        :param pulumi.Input['AccountQueuePropertiesMinuteMetricsArgs'] minute_metrics: A `minute_metrics` block as defined below.
        """
        if cors_rules is not None:
            pulumi.set(__self__, "cors_rules", cors_rules)
        if hour_metrics is not None:
            pulumi.set(__self__, "hour_metrics", hour_metrics)
        if logging is not None:
            pulumi.set(__self__, "logging", logging)
        if minute_metrics is not None:
            pulumi.set(__self__, "minute_metrics", minute_metrics)

    @property
    @pulumi.getter(name="corsRules")
    def cors_rules(self) -> Optional[pulumi.Input[List[pulumi.Input['AccountQueuePropertiesCorsRuleArgs']]]]:
        """
        A `cors_rule` block as defined above.
        """
        return pulumi.get(self, "cors_rules")

    @cors_rules.setter
    def cors_rules(self, value: Optional[pulumi.Input[List[pulumi.Input['AccountQueuePropertiesCorsRuleArgs']]]]):
        pulumi.set(self, "cors_rules", value)

    @property
    @pulumi.getter(name="hourMetrics")
    def hour_metrics(self) -> Optional[pulumi.Input['AccountQueuePropertiesHourMetricsArgs']]:
        """
        A `hour_metrics` block as defined below.
        """
        return pulumi.get(self, "hour_metrics")

    @hour_metrics.setter
    def hour_metrics(self, value: Optional[pulumi.Input['AccountQueuePropertiesHourMetricsArgs']]):
        pulumi.set(self, "hour_metrics", value)

    @property
    @pulumi.getter
    def logging(self) -> Optional[pulumi.Input['AccountQueuePropertiesLoggingArgs']]:
        """
        A `logging` block as defined below.
        """
        return pulumi.get(self, "logging")

    @logging.setter
    def logging(self, value: Optional[pulumi.Input['AccountQueuePropertiesLoggingArgs']]):
        pulumi.set(self, "logging", value)

    @property
    @pulumi.getter(name="minuteMetrics")
    def minute_metrics(self) -> Optional[pulumi.Input['AccountQueuePropertiesMinuteMetricsArgs']]:
        """
        A `minute_metrics` block as defined below.
        """
        return pulumi.get(self, "minute_metrics")

    @minute_metrics.setter
    def minute_metrics(self, value: Optional[pulumi.Input['AccountQueuePropertiesMinuteMetricsArgs']]):
        pulumi.set(self, "minute_metrics", value)


@pulumi.input_type
class AccountQueuePropertiesCorsRuleArgs:
    def __init__(__self__, *,
                 allowed_headers: pulumi.Input[List[pulumi.Input[str]]],
                 allowed_methods: pulumi.Input[List[pulumi.Input[str]]],
                 allowed_origins: pulumi.Input[List[pulumi.Input[str]]],
                 exposed_headers: pulumi.Input[List[pulumi.Input[str]]],
                 max_age_in_seconds: pulumi.Input[float]):
        """
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_headers: A list of headers that are allowed to be a part of the cross-origin request.
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_methods: A list of http headers that are allowed to be executed by the origin. Valid options are
               `DELETE`, `GET`, `HEAD`, `MERGE`, `POST`, `OPTIONS`, `PUT` or `PATCH`.
        :param pulumi.Input[List[pulumi.Input[str]]] allowed_origins: A list of origin domains that will be allowed by CORS.
        :param pulumi.Input[List[pulumi.Input[str]]] exposed_headers: A list of response headers that are exposed to CORS clients.
        :param pulumi.Input[float] max_age_in_seconds: The number of seconds the client should cache a preflight response.
        """
        pulumi.set(__self__, "allowed_headers", allowed_headers)
        pulumi.set(__self__, "allowed_methods", allowed_methods)
        pulumi.set(__self__, "allowed_origins", allowed_origins)
        pulumi.set(__self__, "exposed_headers", exposed_headers)
        pulumi.set(__self__, "max_age_in_seconds", max_age_in_seconds)

    @property
    @pulumi.getter(name="allowedHeaders")
    def allowed_headers(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of headers that are allowed to be a part of the cross-origin request.
        """
        return pulumi.get(self, "allowed_headers")

    @allowed_headers.setter
    def allowed_headers(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_headers", value)

    @property
    @pulumi.getter(name="allowedMethods")
    def allowed_methods(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of http headers that are allowed to be executed by the origin. Valid options are
        `DELETE`, `GET`, `HEAD`, `MERGE`, `POST`, `OPTIONS`, `PUT` or `PATCH`.
        """
        return pulumi.get(self, "allowed_methods")

    @allowed_methods.setter
    def allowed_methods(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_methods", value)

    @property
    @pulumi.getter(name="allowedOrigins")
    def allowed_origins(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of origin domains that will be allowed by CORS.
        """
        return pulumi.get(self, "allowed_origins")

    @allowed_origins.setter
    def allowed_origins(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "allowed_origins", value)

    @property
    @pulumi.getter(name="exposedHeaders")
    def exposed_headers(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        """
        A list of response headers that are exposed to CORS clients.
        """
        return pulumi.get(self, "exposed_headers")

    @exposed_headers.setter
    def exposed_headers(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "exposed_headers", value)

    @property
    @pulumi.getter(name="maxAgeInSeconds")
    def max_age_in_seconds(self) -> pulumi.Input[float]:
        """
        The number of seconds the client should cache a preflight response.
        """
        return pulumi.get(self, "max_age_in_seconds")

    @max_age_in_seconds.setter
    def max_age_in_seconds(self, value: pulumi.Input[float]):
        pulumi.set(self, "max_age_in_seconds", value)


@pulumi.input_type
class AccountQueuePropertiesHourMetricsArgs:
    def __init__(__self__, *,
                 enabled: pulumi.Input[bool],
                 version: pulumi.Input[str],
                 include_apis: Optional[pulumi.Input[bool]] = None,
                 retention_policy_days: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[bool] enabled: Indicates whether hour metrics are enabled for the Queue service. Changing this forces a new resource.
        :param pulumi.Input[str] version: The version of storage analytics to configure. Changing this forces a new resource.
        :param pulumi.Input[bool] include_apis: Indicates whether metrics should generate summary statistics for called API operations.
        :param pulumi.Input[float] retention_policy_days: Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "version", version)
        if include_apis is not None:
            pulumi.set(__self__, "include_apis", include_apis)
        if retention_policy_days is not None:
            pulumi.set(__self__, "retention_policy_days", retention_policy_days)

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Input[bool]:
        """
        Indicates whether hour metrics are enabled for the Queue service. Changing this forces a new resource.
        """
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: pulumi.Input[bool]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter
    def version(self) -> pulumi.Input[str]:
        """
        The version of storage analytics to configure. Changing this forces a new resource.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: pulumi.Input[str]):
        pulumi.set(self, "version", value)

    @property
    @pulumi.getter(name="includeApis")
    def include_apis(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether metrics should generate summary statistics for called API operations.
        """
        return pulumi.get(self, "include_apis")

    @include_apis.setter
    def include_apis(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "include_apis", value)

    @property
    @pulumi.getter(name="retentionPolicyDays")
    def retention_policy_days(self) -> Optional[pulumi.Input[float]]:
        """
        Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        return pulumi.get(self, "retention_policy_days")

    @retention_policy_days.setter
    def retention_policy_days(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "retention_policy_days", value)


@pulumi.input_type
class AccountQueuePropertiesLoggingArgs:
    def __init__(__self__, *,
                 delete: pulumi.Input[bool],
                 read: pulumi.Input[bool],
                 version: pulumi.Input[str],
                 write: pulumi.Input[bool],
                 retention_policy_days: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[bool] delete: Indicates whether all delete requests should be logged. Changing this forces a new resource.
        :param pulumi.Input[bool] read: Indicates whether all read requests should be logged. Changing this forces a new resource.
        :param pulumi.Input[str] version: The version of storage analytics to configure. Changing this forces a new resource.
        :param pulumi.Input[bool] write: Indicates whether all write requests should be logged. Changing this forces a new resource.
        :param pulumi.Input[float] retention_policy_days: Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        pulumi.set(__self__, "delete", delete)
        pulumi.set(__self__, "read", read)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "write", write)
        if retention_policy_days is not None:
            pulumi.set(__self__, "retention_policy_days", retention_policy_days)

    @property
    @pulumi.getter
    def delete(self) -> pulumi.Input[bool]:
        """
        Indicates whether all delete requests should be logged. Changing this forces a new resource.
        """
        return pulumi.get(self, "delete")

    @delete.setter
    def delete(self, value: pulumi.Input[bool]):
        pulumi.set(self, "delete", value)

    @property
    @pulumi.getter
    def read(self) -> pulumi.Input[bool]:
        """
        Indicates whether all read requests should be logged. Changing this forces a new resource.
        """
        return pulumi.get(self, "read")

    @read.setter
    def read(self, value: pulumi.Input[bool]):
        pulumi.set(self, "read", value)

    @property
    @pulumi.getter
    def version(self) -> pulumi.Input[str]:
        """
        The version of storage analytics to configure. Changing this forces a new resource.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: pulumi.Input[str]):
        pulumi.set(self, "version", value)

    @property
    @pulumi.getter
    def write(self) -> pulumi.Input[bool]:
        """
        Indicates whether all write requests should be logged. Changing this forces a new resource.
        """
        return pulumi.get(self, "write")

    @write.setter
    def write(self, value: pulumi.Input[bool]):
        pulumi.set(self, "write", value)

    @property
    @pulumi.getter(name="retentionPolicyDays")
    def retention_policy_days(self) -> Optional[pulumi.Input[float]]:
        """
        Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        return pulumi.get(self, "retention_policy_days")

    @retention_policy_days.setter
    def retention_policy_days(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "retention_policy_days", value)


@pulumi.input_type
class AccountQueuePropertiesMinuteMetricsArgs:
    def __init__(__self__, *,
                 enabled: pulumi.Input[bool],
                 version: pulumi.Input[str],
                 include_apis: Optional[pulumi.Input[bool]] = None,
                 retention_policy_days: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[bool] enabled: Indicates whether minute metrics are enabled for the Queue service. Changing this forces a new resource.
        :param pulumi.Input[str] version: The version of storage analytics to configure. Changing this forces a new resource.
        :param pulumi.Input[bool] include_apis: Indicates whether metrics should generate summary statistics for called API operations.
        :param pulumi.Input[float] retention_policy_days: Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "version", version)
        if include_apis is not None:
            pulumi.set(__self__, "include_apis", include_apis)
        if retention_policy_days is not None:
            pulumi.set(__self__, "retention_policy_days", retention_policy_days)

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Input[bool]:
        """
        Indicates whether minute metrics are enabled for the Queue service. Changing this forces a new resource.
        """
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: pulumi.Input[bool]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter
    def version(self) -> pulumi.Input[str]:
        """
        The version of storage analytics to configure. Changing this forces a new resource.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: pulumi.Input[str]):
        pulumi.set(self, "version", value)

    @property
    @pulumi.getter(name="includeApis")
    def include_apis(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether metrics should generate summary statistics for called API operations.
        """
        return pulumi.get(self, "include_apis")

    @include_apis.setter
    def include_apis(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "include_apis", value)

    @property
    @pulumi.getter(name="retentionPolicyDays")
    def retention_policy_days(self) -> Optional[pulumi.Input[float]]:
        """
        Specifies the number of days that logs will be retained. Changing this forces a new resource.
        """
        return pulumi.get(self, "retention_policy_days")

    @retention_policy_days.setter
    def retention_policy_days(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "retention_policy_days", value)


@pulumi.input_type
class AccountStaticWebsiteArgs:
    def __init__(__self__, *,
                 error404_document: Optional[pulumi.Input[str]] = None,
                 index_document: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] error404_document: The absolute path to a custom webpage that should be used when a request is made which does not correspond to an existing file.
        :param pulumi.Input[str] index_document: The webpage that Azure Storage serves for requests to the root of a website or any subfolder. For example, index.html. The value is case-sensitive.
        """
        if error404_document is not None:
            pulumi.set(__self__, "error404_document", error404_document)
        if index_document is not None:
            pulumi.set(__self__, "index_document", index_document)

    @property
    @pulumi.getter(name="error404Document")
    def error404_document(self) -> Optional[pulumi.Input[str]]:
        """
        The absolute path to a custom webpage that should be used when a request is made which does not correspond to an existing file.
        """
        return pulumi.get(self, "error404_document")

    @error404_document.setter
    def error404_document(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "error404_document", value)

    @property
    @pulumi.getter(name="indexDocument")
    def index_document(self) -> Optional[pulumi.Input[str]]:
        """
        The webpage that Azure Storage serves for requests to the root of a website or any subfolder. For example, index.html. The value is case-sensitive.
        """
        return pulumi.get(self, "index_document")

    @index_document.setter
    def index_document(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "index_document", value)


@pulumi.input_type
class ManagementPolicyRuleArgs:
    def __init__(__self__, *,
                 actions: pulumi.Input['ManagementPolicyRuleActionsArgs'],
                 enabled: pulumi.Input[bool],
                 name: pulumi.Input[str],
                 filters: Optional[pulumi.Input['ManagementPolicyRuleFiltersArgs']] = None):
        """
        :param pulumi.Input['ManagementPolicyRuleActionsArgs'] actions: An `actions` block as documented below.
        :param pulumi.Input[bool] enabled: Boolean to specify whether the rule is enabled.
        :param pulumi.Input[str] name: A rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.
        :param pulumi.Input['ManagementPolicyRuleFiltersArgs'] filters: A `filter` block as documented below.
        """
        pulumi.set(__self__, "actions", actions)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "name", name)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)

    @property
    @pulumi.getter
    def actions(self) -> pulumi.Input['ManagementPolicyRuleActionsArgs']:
        """
        An `actions` block as documented below.
        """
        return pulumi.get(self, "actions")

    @actions.setter
    def actions(self, value: pulumi.Input['ManagementPolicyRuleActionsArgs']):
        pulumi.set(self, "actions", value)

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Input[bool]:
        """
        Boolean to specify whether the rule is enabled.
        """
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: pulumi.Input[bool]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A rule name can contain any combination of alpha numeric characters. Rule name is case-sensitive. It must be unique within a policy.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def filters(self) -> Optional[pulumi.Input['ManagementPolicyRuleFiltersArgs']]:
        """
        A `filter` block as documented below.
        """
        return pulumi.get(self, "filters")

    @filters.setter
    def filters(self, value: Optional[pulumi.Input['ManagementPolicyRuleFiltersArgs']]):
        pulumi.set(self, "filters", value)


@pulumi.input_type
class ManagementPolicyRuleActionsArgs:
    def __init__(__self__, *,
                 base_blob: Optional[pulumi.Input['ManagementPolicyRuleActionsBaseBlobArgs']] = None,
                 snapshot: Optional[pulumi.Input['ManagementPolicyRuleActionsSnapshotArgs']] = None):
        """
        :param pulumi.Input['ManagementPolicyRuleActionsBaseBlobArgs'] base_blob: A `base_blob` block as documented below.
        :param pulumi.Input['ManagementPolicyRuleActionsSnapshotArgs'] snapshot: A `snapshot` block as documented below.
        """
        if base_blob is not None:
            pulumi.set(__self__, "base_blob", base_blob)
        if snapshot is not None:
            pulumi.set(__self__, "snapshot", snapshot)

    @property
    @pulumi.getter(name="baseBlob")
    def base_blob(self) -> Optional[pulumi.Input['ManagementPolicyRuleActionsBaseBlobArgs']]:
        """
        A `base_blob` block as documented below.
        """
        return pulumi.get(self, "base_blob")

    @base_blob.setter
    def base_blob(self, value: Optional[pulumi.Input['ManagementPolicyRuleActionsBaseBlobArgs']]):
        pulumi.set(self, "base_blob", value)

    @property
    @pulumi.getter
    def snapshot(self) -> Optional[pulumi.Input['ManagementPolicyRuleActionsSnapshotArgs']]:
        """
        A `snapshot` block as documented below.
        """
        return pulumi.get(self, "snapshot")

    @snapshot.setter
    def snapshot(self, value: Optional[pulumi.Input['ManagementPolicyRuleActionsSnapshotArgs']]):
        pulumi.set(self, "snapshot", value)


@pulumi.input_type
class ManagementPolicyRuleActionsBaseBlobArgs:
    def __init__(__self__, *,
                 delete_after_days_since_modification_greater_than: Optional[pulumi.Input[float]] = None,
                 tier_to_archive_after_days_since_modification_greater_than: Optional[pulumi.Input[float]] = None,
                 tier_to_cool_after_days_since_modification_greater_than: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[float] delete_after_days_since_modification_greater_than: The age in days after last modification to delete the blob. Must be at least 0.
        :param pulumi.Input[float] tier_to_archive_after_days_since_modification_greater_than: The age in days after last modification to tier blobs to archive storage. Supports blob currently at Hot or Cool tier. Must be at least 0.
        :param pulumi.Input[float] tier_to_cool_after_days_since_modification_greater_than: The age in days after last modification to tier blobs to cool storage. Supports blob currently at Hot tier. Must be at least 0.
        """
        if delete_after_days_since_modification_greater_than is not None:
            pulumi.set(__self__, "delete_after_days_since_modification_greater_than", delete_after_days_since_modification_greater_than)
        if tier_to_archive_after_days_since_modification_greater_than is not None:
            pulumi.set(__self__, "tier_to_archive_after_days_since_modification_greater_than", tier_to_archive_after_days_since_modification_greater_than)
        if tier_to_cool_after_days_since_modification_greater_than is not None:
            pulumi.set(__self__, "tier_to_cool_after_days_since_modification_greater_than", tier_to_cool_after_days_since_modification_greater_than)

    @property
    @pulumi.getter(name="deleteAfterDaysSinceModificationGreaterThan")
    def delete_after_days_since_modification_greater_than(self) -> Optional[pulumi.Input[float]]:
        """
        The age in days after last modification to delete the blob. Must be at least 0.
        """
        return pulumi.get(self, "delete_after_days_since_modification_greater_than")

    @delete_after_days_since_modification_greater_than.setter
    def delete_after_days_since_modification_greater_than(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "delete_after_days_since_modification_greater_than", value)

    @property
    @pulumi.getter(name="tierToArchiveAfterDaysSinceModificationGreaterThan")
    def tier_to_archive_after_days_since_modification_greater_than(self) -> Optional[pulumi.Input[float]]:
        """
        The age in days after last modification to tier blobs to archive storage. Supports blob currently at Hot or Cool tier. Must be at least 0.
        """
        return pulumi.get(self, "tier_to_archive_after_days_since_modification_greater_than")

    @tier_to_archive_after_days_since_modification_greater_than.setter
    def tier_to_archive_after_days_since_modification_greater_than(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "tier_to_archive_after_days_since_modification_greater_than", value)

    @property
    @pulumi.getter(name="tierToCoolAfterDaysSinceModificationGreaterThan")
    def tier_to_cool_after_days_since_modification_greater_than(self) -> Optional[pulumi.Input[float]]:
        """
        The age in days after last modification to tier blobs to cool storage. Supports blob currently at Hot tier. Must be at least 0.
        """
        return pulumi.get(self, "tier_to_cool_after_days_since_modification_greater_than")

    @tier_to_cool_after_days_since_modification_greater_than.setter
    def tier_to_cool_after_days_since_modification_greater_than(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "tier_to_cool_after_days_since_modification_greater_than", value)


@pulumi.input_type
class ManagementPolicyRuleActionsSnapshotArgs:
    def __init__(__self__, *,
                 delete_after_days_since_creation_greater_than: Optional[pulumi.Input[float]] = None):
        """
        :param pulumi.Input[float] delete_after_days_since_creation_greater_than: The age in days after create to delete the snaphot. Must be at least 0.
        """
        if delete_after_days_since_creation_greater_than is not None:
            pulumi.set(__self__, "delete_after_days_since_creation_greater_than", delete_after_days_since_creation_greater_than)

    @property
    @pulumi.getter(name="deleteAfterDaysSinceCreationGreaterThan")
    def delete_after_days_since_creation_greater_than(self) -> Optional[pulumi.Input[float]]:
        """
        The age in days after create to delete the snaphot. Must be at least 0.
        """
        return pulumi.get(self, "delete_after_days_since_creation_greater_than")

    @delete_after_days_since_creation_greater_than.setter
    def delete_after_days_since_creation_greater_than(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "delete_after_days_since_creation_greater_than", value)


@pulumi.input_type
class ManagementPolicyRuleFiltersArgs:
    def __init__(__self__, *,
                 blob_types: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None,
                 prefix_matches: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None):
        """
        :param pulumi.Input[List[pulumi.Input[str]]] blob_types: An array of predefined values. Only `blockBlob` is supported.
        :param pulumi.Input[List[pulumi.Input[str]]] prefix_matches: An array of strings for prefixes to be matched.
        """
        if blob_types is not None:
            pulumi.set(__self__, "blob_types", blob_types)
        if prefix_matches is not None:
            pulumi.set(__self__, "prefix_matches", prefix_matches)

    @property
    @pulumi.getter(name="blobTypes")
    def blob_types(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]:
        """
        An array of predefined values. Only `blockBlob` is supported.
        """
        return pulumi.get(self, "blob_types")

    @blob_types.setter
    def blob_types(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]):
        pulumi.set(self, "blob_types", value)

    @property
    @pulumi.getter(name="prefixMatches")
    def prefix_matches(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]:
        """
        An array of strings for prefixes to be matched.
        """
        return pulumi.get(self, "prefix_matches")

    @prefix_matches.setter
    def prefix_matches(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]):
        pulumi.set(self, "prefix_matches", value)


@pulumi.input_type
class ShareAclArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 access_policies: Optional[pulumi.Input[List[pulumi.Input['ShareAclAccessPolicyArgs']]]] = None):
        """
        :param pulumi.Input[str] id: The ID which should be used for this Shared Identifier.
        :param pulumi.Input[List[pulumi.Input['ShareAclAccessPolicyArgs']]] access_policies: An `access_policy` block as defined below.
        """
        pulumi.set(__self__, "id", id)
        if access_policies is not None:
            pulumi.set(__self__, "access_policies", access_policies)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        The ID which should be used for this Shared Identifier.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="accessPolicies")
    def access_policies(self) -> Optional[pulumi.Input[List[pulumi.Input['ShareAclAccessPolicyArgs']]]]:
        """
        An `access_policy` block as defined below.
        """
        return pulumi.get(self, "access_policies")

    @access_policies.setter
    def access_policies(self, value: Optional[pulumi.Input[List[pulumi.Input['ShareAclAccessPolicyArgs']]]]):
        pulumi.set(self, "access_policies", value)


@pulumi.input_type
class ShareAclAccessPolicyArgs:
    def __init__(__self__, *,
                 expiry: pulumi.Input[str],
                 permissions: pulumi.Input[str],
                 start: pulumi.Input[str]):
        """
        :param pulumi.Input[str] expiry: The time at which this Access Policy should be valid until, in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format.
        :param pulumi.Input[str] permissions: The permissions which should be associated with this Shared Identifier. Possible value is combination of `r` (read), `w` (write), `d` (delete), and `l` (list).
        :param pulumi.Input[str] start: The time at which this Access Policy should be valid from, in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format.
        """
        pulumi.set(__self__, "expiry", expiry)
        pulumi.set(__self__, "permissions", permissions)
        pulumi.set(__self__, "start", start)

    @property
    @pulumi.getter
    def expiry(self) -> pulumi.Input[str]:
        """
        The time at which this Access Policy should be valid until, in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format.
        """
        return pulumi.get(self, "expiry")

    @expiry.setter
    def expiry(self, value: pulumi.Input[str]):
        pulumi.set(self, "expiry", value)

    @property
    @pulumi.getter
    def permissions(self) -> pulumi.Input[str]:
        """
        The permissions which should be associated with this Shared Identifier. Possible value is combination of `r` (read), `w` (write), `d` (delete), and `l` (list).
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: pulumi.Input[str]):
        pulumi.set(self, "permissions", value)

    @property
    @pulumi.getter
    def start(self) -> pulumi.Input[str]:
        """
        The time at which this Access Policy should be valid from, in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format.
        """
        return pulumi.get(self, "start")

    @start.setter
    def start(self, value: pulumi.Input[str]):
        pulumi.set(self, "start", value)


@pulumi.input_type
class TableAclArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 access_policies: Optional[pulumi.Input[List[pulumi.Input['TableAclAccessPolicyArgs']]]] = None):
        """
        :param pulumi.Input[str] id: The ID which should be used for this Shared Identifier.
        :param pulumi.Input[List[pulumi.Input['TableAclAccessPolicyArgs']]] access_policies: An `access_policy` block as defined below.
        """
        pulumi.set(__self__, "id", id)
        if access_policies is not None:
            pulumi.set(__self__, "access_policies", access_policies)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        """
        The ID which should be used for this Shared Identifier.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="accessPolicies")
    def access_policies(self) -> Optional[pulumi.Input[List[pulumi.Input['TableAclAccessPolicyArgs']]]]:
        """
        An `access_policy` block as defined below.
        """
        return pulumi.get(self, "access_policies")

    @access_policies.setter
    def access_policies(self, value: Optional[pulumi.Input[List[pulumi.Input['TableAclAccessPolicyArgs']]]]):
        pulumi.set(self, "access_policies", value)


@pulumi.input_type
class TableAclAccessPolicyArgs:
    def __init__(__self__, *,
                 expiry: pulumi.Input[str],
                 permissions: pulumi.Input[str],
                 start: pulumi.Input[str]):
        """
        :param pulumi.Input[str] expiry: The ISO8061 UTC time at which this Access Policy should be valid until.
        :param pulumi.Input[str] permissions: The permissions which should associated with this Shared Identifier.
        :param pulumi.Input[str] start: The ISO8061 UTC time at which this Access Policy should be valid from.
        """
        pulumi.set(__self__, "expiry", expiry)
        pulumi.set(__self__, "permissions", permissions)
        pulumi.set(__self__, "start", start)

    @property
    @pulumi.getter
    def expiry(self) -> pulumi.Input[str]:
        """
        The ISO8061 UTC time at which this Access Policy should be valid until.
        """
        return pulumi.get(self, "expiry")

    @expiry.setter
    def expiry(self, value: pulumi.Input[str]):
        pulumi.set(self, "expiry", value)

    @property
    @pulumi.getter
    def permissions(self) -> pulumi.Input[str]:
        """
        The permissions which should associated with this Shared Identifier.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: pulumi.Input[str]):
        pulumi.set(self, "permissions", value)

    @property
    @pulumi.getter
    def start(self) -> pulumi.Input[str]:
        """
        The ISO8061 UTC time at which this Access Policy should be valid from.
        """
        return pulumi.get(self, "start")

    @start.setter
    def start(self, value: pulumi.Input[str]):
        pulumi.set(self, "start", value)


@pulumi.input_type
class GetAccountBlobContainerSASPermissionsArgs:
    def __init__(__self__, *,
                 add: bool,
                 create: bool,
                 delete: bool,
                 list: bool,
                 read: bool,
                 write: bool):
        """
        :param bool add: Should Add permissions be enabled for this SAS?
        :param bool create: Should Create permissions be enabled for this SAS?
        :param bool delete: Should Delete permissions be enabled for this SAS?
        :param bool list: Should List permissions be enabled for this SAS?
        :param bool read: Should Read permissions be enabled for this SAS?
        :param bool write: Should Write permissions be enabled for this SAS?
        """
        pulumi.set(__self__, "add", add)
        pulumi.set(__self__, "create", create)
        pulumi.set(__self__, "delete", delete)
        pulumi.set(__self__, "list", list)
        pulumi.set(__self__, "read", read)
        pulumi.set(__self__, "write", write)

    @property
    @pulumi.getter
    def add(self) -> bool:
        """
        Should Add permissions be enabled for this SAS?
        """
        return pulumi.get(self, "add")

    @add.setter
    def add(self, value: bool):
        pulumi.set(self, "add", value)

    @property
    @pulumi.getter
    def create(self) -> bool:
        """
        Should Create permissions be enabled for this SAS?
        """
        return pulumi.get(self, "create")

    @create.setter
    def create(self, value: bool):
        pulumi.set(self, "create", value)

    @property
    @pulumi.getter
    def delete(self) -> bool:
        """
        Should Delete permissions be enabled for this SAS?
        """
        return pulumi.get(self, "delete")

    @delete.setter
    def delete(self, value: bool):
        pulumi.set(self, "delete", value)

    @property
    @pulumi.getter
    def list(self) -> bool:
        """
        Should List permissions be enabled for this SAS?
        """
        return pulumi.get(self, "list")

    @list.setter
    def list(self, value: bool):
        pulumi.set(self, "list", value)

    @property
    @pulumi.getter
    def read(self) -> bool:
        """
        Should Read permissions be enabled for this SAS?
        """
        return pulumi.get(self, "read")

    @read.setter
    def read(self, value: bool):
        pulumi.set(self, "read", value)

    @property
    @pulumi.getter
    def write(self) -> bool:
        """
        Should Write permissions be enabled for this SAS?
        """
        return pulumi.get(self, "write")

    @write.setter
    def write(self, value: bool):
        pulumi.set(self, "write", value)


@pulumi.input_type
class GetAccountSASPermissionsArgs:
    def __init__(__self__, *,
                 add: bool,
                 create: bool,
                 delete: bool,
                 list: bool,
                 process: bool,
                 read: bool,
                 update: bool,
                 write: bool):
        """
        :param bool add: Should Add permissions be enabled for this SAS?
        :param bool create: Should Create permissions be enabled for this SAS?
        :param bool delete: Should Delete permissions be enabled for this SAS?
        :param bool list: Should List permissions be enabled for this SAS?
        :param bool process: Should Process permissions be enabled for this SAS?
        :param bool read: Should Read permissions be enabled for this SAS?
        :param bool update: Should Update permissions be enabled for this SAS?
        :param bool write: Should Write permissions be enabled for this SAS?
        """
        pulumi.set(__self__, "add", add)
        pulumi.set(__self__, "create", create)
        pulumi.set(__self__, "delete", delete)
        pulumi.set(__self__, "list", list)
        pulumi.set(__self__, "process", process)
        pulumi.set(__self__, "read", read)
        pulumi.set(__self__, "update", update)
        pulumi.set(__self__, "write", write)

    @property
    @pulumi.getter
    def add(self) -> bool:
        """
        Should Add permissions be enabled for this SAS?
        """
        return pulumi.get(self, "add")

    @add.setter
    def add(self, value: bool):
        pulumi.set(self, "add", value)

    @property
    @pulumi.getter
    def create(self) -> bool:
        """
        Should Create permissions be enabled for this SAS?
        """
        return pulumi.get(self, "create")

    @create.setter
    def create(self, value: bool):
        pulumi.set(self, "create", value)

    @property
    @pulumi.getter
    def delete(self) -> bool:
        """
        Should Delete permissions be enabled for this SAS?
        """
        return pulumi.get(self, "delete")

    @delete.setter
    def delete(self, value: bool):
        pulumi.set(self, "delete", value)

    @property
    @pulumi.getter
    def list(self) -> bool:
        """
        Should List permissions be enabled for this SAS?
        """
        return pulumi.get(self, "list")

    @list.setter
    def list(self, value: bool):
        pulumi.set(self, "list", value)

    @property
    @pulumi.getter
    def process(self) -> bool:
        """
        Should Process permissions be enabled for this SAS?
        """
        return pulumi.get(self, "process")

    @process.setter
    def process(self, value: bool):
        pulumi.set(self, "process", value)

    @property
    @pulumi.getter
    def read(self) -> bool:
        """
        Should Read permissions be enabled for this SAS?
        """
        return pulumi.get(self, "read")

    @read.setter
    def read(self, value: bool):
        pulumi.set(self, "read", value)

    @property
    @pulumi.getter
    def update(self) -> bool:
        """
        Should Update permissions be enabled for this SAS?
        """
        return pulumi.get(self, "update")

    @update.setter
    def update(self, value: bool):
        pulumi.set(self, "update", value)

    @property
    @pulumi.getter
    def write(self) -> bool:
        """
        Should Write permissions be enabled for this SAS?
        """
        return pulumi.get(self, "write")

    @write.setter
    def write(self, value: bool):
        pulumi.set(self, "write", value)


@pulumi.input_type
class GetAccountSASResourceTypesArgs:
    def __init__(__self__, *,
                 container: bool,
                 object: bool,
                 service: bool):
        """
        :param bool container: Should permission be granted to the container?
        :param bool object: Should permission be granted only to a specific object?
        :param bool service: Should permission be granted to the entire service?
        """
        pulumi.set(__self__, "container", container)
        pulumi.set(__self__, "object", object)
        pulumi.set(__self__, "service", service)

    @property
    @pulumi.getter
    def container(self) -> bool:
        """
        Should permission be granted to the container?
        """
        return pulumi.get(self, "container")

    @container.setter
    def container(self, value: bool):
        pulumi.set(self, "container", value)

    @property
    @pulumi.getter
    def object(self) -> bool:
        """
        Should permission be granted only to a specific object?
        """
        return pulumi.get(self, "object")

    @object.setter
    def object(self, value: bool):
        pulumi.set(self, "object", value)

    @property
    @pulumi.getter
    def service(self) -> bool:
        """
        Should permission be granted to the entire service?
        """
        return pulumi.get(self, "service")

    @service.setter
    def service(self, value: bool):
        pulumi.set(self, "service", value)


@pulumi.input_type
class GetAccountSASServicesArgs:
    def __init__(__self__, *,
                 blob: bool,
                 file: bool,
                 queue: bool,
                 table: bool):
        """
        :param bool blob: Should permission be granted to `blob` services within this storage account?
        :param bool file: Should permission be granted to `file` services within this storage account?
        :param bool queue: Should permission be granted to `queue` services within this storage account?
        :param bool table: Should permission be granted to `table` services within this storage account?
        """
        pulumi.set(__self__, "blob", blob)
        pulumi.set(__self__, "file", file)
        pulumi.set(__self__, "queue", queue)
        pulumi.set(__self__, "table", table)

    @property
    @pulumi.getter
    def blob(self) -> bool:
        """
        Should permission be granted to `blob` services within this storage account?
        """
        return pulumi.get(self, "blob")

    @blob.setter
    def blob(self, value: bool):
        pulumi.set(self, "blob", value)

    @property
    @pulumi.getter
    def file(self) -> bool:
        """
        Should permission be granted to `file` services within this storage account?
        """
        return pulumi.get(self, "file")

    @file.setter
    def file(self, value: bool):
        pulumi.set(self, "file", value)

    @property
    @pulumi.getter
    def queue(self) -> bool:
        """
        Should permission be granted to `queue` services within this storage account?
        """
        return pulumi.get(self, "queue")

    @queue.setter
    def queue(self, value: bool):
        pulumi.set(self, "queue", value)

    @property
    @pulumi.getter
    def table(self) -> bool:
        """
        Should permission be granted to `table` services within this storage account?
        """
        return pulumi.get(self, "table")

    @table.setter
    def table(self, value: bool):
        pulumi.set(self, "table", value)


