# pylint: disable=line-too-long,useless-suppression,too-many-lines
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) Python Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import Any, Literal, TYPE_CHECKING, Union
from typing_extensions import Required, TypedDict

from .models._enums import BackupPolicyType, ServiceType

if TYPE_CHECKING:
    from .models import (
        AnalyticalStorageSchemaType,
        ApiType,
        AuthenticationMethod,
        AutoReplicate,
        AzureConnectionType,
        BackupPolicyMigrationStatus,
        BackupPolicyType,
        BackupStorageRedundancy,
        CompositePathSortOrder,
        ConflictResolutionMode,
        ConnectionState,
        ConnectorOffer,
        ContinuousTier,
        CreateMode,
        CreatedByType,
        DataType,
        DatabaseAccountKind,
        DedicatedGatewayType,
        DefaultConsistencyLevel,
        DefaultPriorityLevel,
        DistanceFunction,
        FleetspacePropertiesFleetspaceApiKind,
        FleetspacePropertiesServiceTier,
        IndexKind,
        IndexingMode,
        KeyKind,
        Kind,
        ManagedCassandraProvisioningState,
        ManagedCassandraResourceIdentityType,
        MinimalTlsVersion,
        MongoRoleDefinitionType,
        NetworkAclBypass,
        NodeState,
        OperationType,
        PartitionKind,
        PrimaryAggregationType,
        PublicNetworkAccess,
        ResourceIdentityType,
        RestoreMode,
        RoleDefinitionType,
        ScheduledEventStrategy,
        ServerVersion,
        ServiceSize,
        ServiceStatus,
        SpatialType,
        Status,
        TriggerOperation,
        TriggerType,
        Type,
        UnitType,
        VectorDataType,
        VectorIndexType,
    )


class AccountKeyMetadata(TypedDict, total=False):
    """The metadata related to an access key for a given database account.

    :ivar generation_time: Generation time in UTC of the key in ISO-8601 format. If the value is
     missing from the object, it means that the last key regeneration was triggered before
     2022-06-18.
    :vartype generation_time: str
    """

    generationTime: str
    """Generation time in UTC of the key in ISO-8601 format. If the value is missing from the object,
     it means that the last key regeneration was triggered before 2022-06-18."""


class AnalyticalStorageConfiguration(TypedDict, total=False):
    """Analytical storage specific properties.

    :ivar schema_type: Describes the types of schema for analytical storage. Known values are:
     "WellDefined" and "FullFidelity".
    :vartype schema_type: Union[str, "AnalyticalStorageSchemaType"]
    """

    schemaType: Union[str, "AnalyticalStorageSchemaType"]
    """Describes the types of schema for analytical storage. Known values are: \"WellDefined\" and
     \"FullFidelity\"."""


class ApiProperties(TypedDict, total=False):
    """ApiProperties.

    :ivar server_version: Describes the version of the MongoDB account. Known values are: "3.2",
     "3.6", "4.0", "4.2", "5.0", "6.0", and "7.0".
    :vartype server_version: Union[str, "ServerVersion"]
    """

    serverVersion: Union[str, "ServerVersion"]
    """Describes the version of the MongoDB account. Known values are: \"3.2\", \"3.6\", \"4.0\",
     \"4.2\", \"5.0\", \"6.0\", and \"7.0\"."""


class ARMProxyResource(TypedDict, total=False):
    """The resource model definition for a ARM proxy resource. It will have everything other than
    required location and tags.

    :ivar id: The unique resource identifier of the database account.
    :vartype id: str
    :ivar name: The name of the database account.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    id: str
    """The unique resource identifier of the database account."""
    name: str
    """The name of the database account."""
    type: str
    """The type of Azure resource."""


class ARMResourceProperties(TypedDict, total=False):
    """The core properties of ARM resources.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    id: str
    """The unique resource identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \"defaultExperience\": \"Cassandra\". Current \"defaultExperience\" values also include
     \"Table\", \"Graph\", \"DocumentDB\", and \"MongoDB\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class AuthenticationMethodLdapProperties(TypedDict, total=False):
    """Ldap authentication method properties. This feature is in preview.

    :ivar server_hostname: Hostname of the LDAP server.
    :vartype server_hostname: str
    :ivar server_port: Port of the LDAP server.
    :vartype server_port: int
    :ivar service_user_distinguished_name: Distinguished name of the look up user account, who can
     look up user details on authentication.
    :vartype service_user_distinguished_name: str
    :ivar service_user_password: Password of the look up user.
    :vartype service_user_password: str
    :ivar search_base_distinguished_name: Distinguished name of the object to start the recursive
     search of users from.
    :vartype search_base_distinguished_name: str
    :ivar search_filter_template: Template to use for searching. Defaults to (cn=%s) where %s will
     be replaced by the username used to login.
    :vartype search_filter_template: str
    :ivar server_certificates:
    :vartype server_certificates: list["Certificate"]
    :ivar connection_timeout_in_ms: Timeout for connecting to the LDAP server in miliseconds. The
     default is 5000 ms.
    :vartype connection_timeout_in_ms: int
    """

    serverHostname: str
    """Hostname of the LDAP server."""
    serverPort: int
    """Port of the LDAP server."""
    serviceUserDistinguishedName: str
    """Distinguished name of the look up user account, who can look up user details on authentication."""
    serviceUserPassword: str
    """Password of the look up user."""
    searchBaseDistinguishedName: str
    """Distinguished name of the object to start the recursive search of users from."""
    searchFilterTemplate: str
    """Template to use for searching. Defaults to (cn=%s) where %s will be replaced by the username
     used to login."""
    serverCertificates: list["Certificate"]
    connectionTimeoutInMs: int
    """Timeout for connecting to the LDAP server in miliseconds. The default is 5000 ms."""


class AutoscaleSettings(TypedDict, total=False):
    """AutoscaleSettings.

    :ivar max_throughput: Represents maximum throughput, the resource can scale up to.
    :vartype max_throughput: int
    """

    maxThroughput: int
    """Represents maximum throughput, the resource can scale up to."""


class AutoscaleSettingsResource(TypedDict, total=False):
    """Cosmos DB provisioned throughput settings object.

    :ivar max_throughput: Represents maximum throughput container can scale up to. Required.
    :vartype max_throughput: int
    :ivar auto_upgrade_policy: Cosmos DB resource auto-upgrade policy.
    :vartype auto_upgrade_policy: "AutoUpgradePolicyResource"
    :ivar target_max_throughput: Represents target maximum throughput container can scale up to
     once offer is no longer in pending state.
    :vartype target_max_throughput: int
    """

    maxThroughput: Required[int]
    """Represents maximum throughput container can scale up to. Required."""
    autoUpgradePolicy: "AutoUpgradePolicyResource"
    """Cosmos DB resource auto-upgrade policy."""
    targetMaxThroughput: int
    """Represents target maximum throughput container can scale up to once offer is no longer in
     pending state."""


class AutoUpgradePolicyResource(TypedDict, total=False):
    """Cosmos DB resource auto-upgrade policy.

    :ivar throughput_policy: Represents throughput policy which service must adhere to for
     auto-upgrade.
    :vartype throughput_policy: "ThroughputPolicyResource"
    """

    throughputPolicy: "ThroughputPolicyResource"
    """Represents throughput policy which service must adhere to for auto-upgrade."""


class BackupInformation(TypedDict, total=False):
    """Backup information of a resource.

    :ivar continuous_backup_information: Information about the status of continuous backups.
    :vartype continuous_backup_information: "ContinuousBackupInformation"
    """

    continuousBackupInformation: "ContinuousBackupInformation"
    """Information about the status of continuous backups."""


class BackupPolicyMigrationState(TypedDict, total=False):
    """The object representing the state of the migration between the backup policies.

    :ivar status: Describes the status of migration between backup policy types. Known values are:
     "Invalid", "InProgress", "Completed", and "Failed".
    :vartype status: Union[str, "BackupPolicyMigrationStatus"]
    :ivar target_type: Describes the target backup policy type of the backup policy migration.
     Known values are: "Periodic" and "Continuous".
    :vartype target_type: Union[str, "BackupPolicyType"]
    :ivar start_time: Time at which the backup policy migration started (ISO-8601 format).
    :vartype start_time: str
    """

    status: Union[str, "BackupPolicyMigrationStatus"]
    """Describes the status of migration between backup policy types. Known values are: \"Invalid\",
     \"InProgress\", \"Completed\", and \"Failed\"."""
    targetType: Union[str, "BackupPolicyType"]
    """Describes the target backup policy type of the backup policy migration. Known values are:
     \"Periodic\" and \"Continuous\"."""
    startTime: str
    """Time at which the backup policy migration started (ISO-8601 format)."""


class BackupSchedule(TypedDict, total=False):
    """BackupSchedule.

    :ivar schedule_name: The unique identifier of backup schedule.
    :vartype schedule_name: str
    :ivar cron_expression: The cron expression that defines when you want to back up your data.
    :vartype cron_expression: str
    :ivar retention_in_hours: The retention period (hours) of the backups. If you want to retain
     data forever, set retention to 0.
    :vartype retention_in_hours: int
    """

    scheduleName: str
    """The unique identifier of backup schedule."""
    cronExpression: str
    """The cron expression that defines when you want to back up your data."""
    retentionInHours: int
    """The retention period (hours) of the backups. If you want to retain data forever, set retention
     to 0."""


class Capability(TypedDict, total=False):
    """Cosmos DB capability object.

    :ivar name: Name of the Cosmos DB capability. For example, "name": "EnableCassandra". Current
     values also include "EnableTable" and "EnableGremlin".
    :vartype name: str
    """

    name: str
    """Name of the Cosmos DB capability. For example, \"name\": \"EnableCassandra\". Current values
     also include \"EnableTable\" and \"EnableGremlin\"."""


class Capacity(TypedDict, total=False):
    """The object that represents all properties related to capacity enforcement on an account.

    :ivar total_throughput_limit: The total throughput limit imposed on the account. A
     totalThroughputLimit of 2000 imposes a strict limit of max throughput that can be provisioned
     on that account to be 2000. A totalThroughputLimit of -1 indicates no limits on provisioning of
     throughput.
    :vartype total_throughput_limit: int
    """

    totalThroughputLimit: int
    """The total throughput limit imposed on the account. A totalThroughputLimit of 2000 imposes a
     strict limit of max throughput that can be provisioned on that account to be 2000. A
     totalThroughputLimit of -1 indicates no limits on provisioning of throughput."""


class CassandraClusterDataCenterNodeItem(TypedDict, total=False):
    """CassandraClusterDataCenterNodeItem.

    :ivar address: The node's IP address.
    :vartype address: str
    :ivar state: The state of the node in Cassandra ring. Known values are: "Normal", "Leaving",
     "Joining", "Moving", and "Stopped".
    :vartype state: Union[str, "NodeState"]
    :ivar status:
    :vartype status: str
    :ivar cassandra_process_status: Cassandra service status on this node.
    :vartype cassandra_process_status: str
    :ivar load: The amount of file system data in the data directory (e.g., 47.66 kB), excluding
     all content in the snapshots subdirectories. Because all SSTable data files are included, any
     data that is not cleaned up (such as TTL-expired cells or tombstones) is counted.
    :vartype load: str
    :ivar tokens: List of tokens this node covers.
    :vartype tokens: list[str]
    :ivar size:
    :vartype size: int
    :ivar host_id: The network ID of the node.
    :vartype host_id: str
    :ivar rack: The rack this node is part of.
    :vartype rack: str
    :ivar timestamp: The timestamp when these statistics were captured.
    :vartype timestamp: str
    :ivar disk_used_kb: The amount of disk used, in kB, of the directory /var/lib/cassandra.
    :vartype disk_used_kb: int
    :ivar disk_free_kb: The amount of disk free, in kB, of the directory /var/lib/cassandra.
    :vartype disk_free_kb: int
    :ivar memory_used_kb: Used memory (calculated as total - free - buffers - cache), in kB.
    :vartype memory_used_kb: int
    :ivar memory_buffers_and_cached_kb: Memory used by kernel buffers (Buffers in /proc/meminfo)
     and page cache and slabs (Cached and SReclaimable in /proc/meminfo), in kB.
    :vartype memory_buffers_and_cached_kb: int
    :ivar memory_free_kb: Unused memory (MemFree and SwapFree in /proc/meminfo), in kB.
    :vartype memory_free_kb: int
    :ivar memory_total_kb: Total installed memory (MemTotal and SwapTotal in /proc/meminfo), in kB.
    :vartype memory_total_kb: int
    :ivar cpu_usage: A float representing the current system-wide CPU utilization as a percentage.
    :vartype cpu_usage: float
    :ivar is_latest_model: If node has been updated to latest model.
    :vartype is_latest_model: bool
    """

    address: str
    """The node's IP address."""
    state: Union[str, "NodeState"]
    """The state of the node in Cassandra ring. Known values are: \"Normal\", \"Leaving\",
     \"Joining\", \"Moving\", and \"Stopped\"."""
    status: str
    cassandraProcessStatus: str
    """Cassandra service status on this node."""
    load: str
    """The amount of file system data in the data directory (e.g., 47.66 kB), excluding all content in
     the snapshots subdirectories. Because all SSTable data files are included, any data that is not
     cleaned up (such as TTL-expired cells or tombstones) is counted."""
    tokens: list[str]
    """List of tokens this node covers."""
    size: int
    hostID: str
    """The network ID of the node."""
    rack: str
    """The rack this node is part of."""
    timestamp: str
    """The timestamp when these statistics were captured."""
    diskUsedKB: int
    """The amount of disk used, in kB, of the directory /var/lib/cassandra."""
    diskFreeKB: int
    """The amount of disk free, in kB, of the directory /var/lib/cassandra."""
    memoryUsedKB: int
    """Used memory (calculated as total - free - buffers - cache), in kB."""
    memoryBuffersAndCachedKB: int
    """Memory used by kernel buffers (Buffers in /proc/meminfo) and page cache and slabs (Cached and
     SReclaimable in /proc/meminfo), in kB."""
    memoryFreeKB: int
    """Unused memory (MemFree and SwapFree in /proc/meminfo), in kB."""
    memoryTotalKB: int
    """Total installed memory (MemTotal and SwapTotal in /proc/meminfo), in kB."""
    cpuUsage: float
    """A float representing the current system-wide CPU utilization as a percentage."""
    isLatestModel: bool
    """If node has been updated to latest model."""


class CassandraClusterPublicStatus(TypedDict, total=False):
    """Properties of a managed Cassandra cluster public status.

    :ivar e_tag:
    :vartype e_tag: str
    :ivar reaper_status:
    :vartype reaper_status: "ManagedCassandraReaperStatus"
    :ivar connection_errors: List relevant information about any connection errors to the
     Datacenters.
    :vartype connection_errors: list["ConnectionError"]
    :ivar errors: List relevant information about any errors about cluster, data center and
     connection error.
    :vartype errors: list["CassandraError"]
    :ivar data_centers: List of the status of each datacenter in this cluster.
    :vartype data_centers: list["CassandraClusterPublicStatusDataCentersItem"]
    """

    eTag: str
    reaperStatus: "ManagedCassandraReaperStatus"
    connectionErrors: list["ConnectionError"]
    """List relevant information about any connection errors to the Datacenters."""
    errors: list["CassandraError"]
    """List relevant information about any errors about cluster, data center and connection error."""
    dataCenters: list["CassandraClusterPublicStatusDataCentersItem"]
    """List of the status of each datacenter in this cluster."""


class CassandraClusterPublicStatusDataCentersItem(TypedDict, total=False):  # pylint: disable=name-too-long
    """CassandraClusterPublicStatusDataCentersItem.

    :ivar name: The name of this Datacenter.
    :vartype name: str
    :ivar seed_nodes: A list of all seed nodes in the cluster, managed and unmanaged.
    :vartype seed_nodes: list[str]
    :ivar nodes:
    :vartype nodes: list["CassandraClusterDataCenterNodeItem"]
    """

    name: str
    """The name of this Datacenter."""
    seedNodes: list[str]
    """A list of all seed nodes in the cluster, managed and unmanaged."""
    nodes: list["CassandraClusterDataCenterNodeItem"]


class CassandraError(TypedDict, total=False):
    """CassandraError.

    :ivar code: The code of error that occurred.
    :vartype code: str
    :ivar message: The message of the error.
    :vartype message: str
    :ivar target: The target resource of the error.
    :vartype target: str
    :ivar additional_error_info: Additional information about the error.
    :vartype additional_error_info: str
    """

    code: str
    """The code of error that occurred."""
    message: str
    """The message of the error."""
    target: str
    """The target resource of the error."""
    additionalErrorInfo: str
    """Additional information about the error."""


class CassandraKeyspaceCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB Cassandra keyspace.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB Cassandra keyspace. Required.
    :vartype properties: "CassandraKeyspaceCreateUpdateProperties"
    """

    properties: Required["CassandraKeyspaceCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB Cassandra keyspace. Required."""


class CassandraKeyspaceCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB Cassandra keyspace.

    :ivar resource: The standard JSON format of a Cassandra keyspace. Required.
    :vartype resource: "CassandraKeyspaceResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["CassandraKeyspaceResource"]
    """The standard JSON format of a Cassandra keyspace. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class CassandraKeyspaceGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Cassandra keyspace.

    :ivar resource:
    :vartype resource: "CassandraKeyspaceGetPropertiesResource"
    :ivar options:
    :vartype options: "CassandraKeyspaceGetPropertiesOptions"
    """

    resource: "CassandraKeyspaceGetPropertiesResource"
    options: "CassandraKeyspaceGetPropertiesOptions"


class OptionsResource(TypedDict, total=False):
    """Cosmos DB options resource object.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """

    throughput: int
    """Value of the Cosmos DB resource throughput or autoscaleSettings. Use the ThroughputSetting
     resource when retrieving offer details."""
    autoscaleSettings: "AutoscaleSettings"
    """Specifies the Autoscale settings."""


class CassandraKeyspaceGetPropertiesOptions(OptionsResource):
    """CassandraKeyspaceGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class CassandraKeyspaceResource(TypedDict, total=False):
    """Cosmos DB Cassandra keyspace resource object.

    :ivar id: Name of the Cosmos DB Cassandra keyspace. Required.
    :vartype id: str
    """

    id: Required[str]
    """Name of the Cosmos DB Cassandra keyspace. Required."""


class CassandraKeyspaceGetPropertiesResource(CassandraKeyspaceResource):
    """CassandraKeyspaceGetPropertiesResource.

    :ivar id: Name of the Cosmos DB Cassandra keyspace. Required.
    :vartype id: str
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class Resource(TypedDict, total=False):
    """Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    """

    id: str
    """Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}."""
    name: str
    """The name of the resource."""
    type: str
    """The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or
     \"Microsoft.Storage/storageAccounts\"."""
    systemData: "SystemData"
    """Azure Resource Manager metadata containing createdBy and modifiedBy information."""


class ProxyResource(Resource):
    """Proxy Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    """


class CassandraKeyspaceGetResults(ProxyResource):
    """An Azure Cosmos DB Cassandra keyspace.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB Cassandra keyspace.
    :vartype properties: "CassandraKeyspaceGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "CassandraKeyspaceGetProperties"
    """The properties of an Azure Cosmos DB Cassandra keyspace."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class CassandraPartitionKey(TypedDict, total=False):
    """Cosmos DB Cassandra table partition key.

    :ivar name: Name of the Cosmos DB Cassandra table partition key.
    :vartype name: str
    """

    name: str
    """Name of the Cosmos DB Cassandra table partition key."""


class CassandraRoleAssignmentResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Cassandra Role Assignment.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Cassandra Role Assignment.
    :vartype properties: "CassandraRoleAssignmentResourceProperties"
    """

    properties: "CassandraRoleAssignmentResourceProperties"
    """Properties to create and update an Azure Cosmos DB Cassandra Role Assignment."""


class CassandraRoleAssignmentResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Azure Cosmos DB Cassandra Role Assignment resource object.

    :ivar role_definition_id: The unique identifier for the associated Role Definition.
    :vartype role_definition_id: str
    :ivar scope: The data plane resource path for which access is being granted through this
     Cassandra Role Assignment.
    :vartype scope: str
    :ivar principal_id: The unique identifier for the associated AAD principal in the AAD graph to
     which access is being granted through this Cassandra Role Assignment. Tenant ID for the
     principal is inferred using the tenant associated with the subscription.
    :vartype principal_id: str
    :ivar provisioning_state: Provisioning state of the resource.
    :vartype provisioning_state: str
    """

    roleDefinitionId: str
    """The unique identifier for the associated Role Definition."""
    scope: str
    """The data plane resource path for which access is being granted through this Cassandra Role
     Assignment."""
    principalId: str
    """The unique identifier for the associated AAD principal in the AAD graph to which access is
     being granted through this Cassandra Role Assignment. Tenant ID for the principal is inferred
     using the tenant associated with the subscription."""
    provisioningState: str
    """Provisioning state of the resource."""


class CassandraRoleDefinitionResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Cassandra Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Cassandra Role Definition.
    :vartype properties: "CassandraRoleDefinitionResourceProperties"
    """

    properties: "CassandraRoleDefinitionResourceProperties"
    """Properties to create and update an Azure Cosmos DB Cassandra Role Definition."""


class CassandraRoleDefinitionResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Azure Cosmos DB Cassandra Role Definition resource object.

    :ivar id: The path id for the Role Definition.
    :vartype id: str
    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "RoleDefinitionType"]
    :ivar assignable_scopes: A set of fully qualified Scopes at or below which Cassandra Role
     Assignments may be created using this Role Definition. This will allow application of this Role
     Definition on the entire database account or any underlying Database / Collection. Must have at
     least one element. Scopes higher than Database account are not enforceable as assignable
     Scopes. Note that resources referenced in assignable Scopes need not exist.
    :vartype assignable_scopes: list[str]
    :ivar permissions: The set of operations allowed through this Role Definition.
    :vartype permissions: list["Permission"]
    """

    id: str
    """The path id for the Role Definition."""
    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "RoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    assignableScopes: list[str]
    """A set of fully qualified Scopes at or below which Cassandra Role Assignments may be created
     using this Role Definition. This will allow application of this Role Definition on the entire
     database account or any underlying Database / Collection. Must have at least one element.
     Scopes higher than Database account are not enforceable as assignable Scopes. Note that
     resources referenced in assignable Scopes need not exist."""
    permissions: list["Permission"]
    """The set of operations allowed through this Role Definition."""


class CassandraSchema(TypedDict, total=False):
    """Cosmos DB Cassandra table schema.

    :ivar columns: List of Cassandra table columns.
    :vartype columns: list["Column"]
    :ivar partition_keys: List of partition key.
    :vartype partition_keys: list["CassandraPartitionKey"]
    :ivar cluster_keys: List of cluster key.
    :vartype cluster_keys: list["ClusterKey"]
    """

    columns: list["Column"]
    """List of Cassandra table columns."""
    partitionKeys: list["CassandraPartitionKey"]
    """List of partition key."""
    clusterKeys: list["ClusterKey"]
    """List of cluster key."""


class CassandraTableCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB Cassandra table.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB Cassandra table. Required.
    :vartype properties: "CassandraTableCreateUpdateProperties"
    """

    properties: Required["CassandraTableCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB Cassandra table. Required."""


class CassandraTableCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB Cassandra table.

    :ivar resource: The standard JSON format of a Cassandra table. Required.
    :vartype resource: "CassandraTableResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["CassandraTableResource"]
    """The standard JSON format of a Cassandra table. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class CassandraTableGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Cassandra table.

    :ivar resource:
    :vartype resource: "CassandraTableGetPropertiesResource"
    :ivar options:
    :vartype options: "CassandraTableGetPropertiesOptions"
    """

    resource: "CassandraTableGetPropertiesResource"
    options: "CassandraTableGetPropertiesOptions"


class CassandraTableGetPropertiesOptions(OptionsResource):
    """CassandraTableGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class CassandraTableResource(TypedDict, total=False):
    """Cosmos DB Cassandra table resource object.

    :ivar id: Name of the Cosmos DB Cassandra table. Required.
    :vartype id: str
    :ivar default_ttl: Time to live of the Cosmos DB Cassandra table.
    :vartype default_ttl: int
    :ivar schema: Schema of the Cosmos DB Cassandra table.
    :vartype schema: "CassandraSchema"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    """

    id: Required[str]
    """Name of the Cosmos DB Cassandra table. Required."""
    defaultTtl: int
    """Time to live of the Cosmos DB Cassandra table."""
    schema: "CassandraSchema"
    """Schema of the Cosmos DB Cassandra table."""
    analyticalStorageTtl: int
    """Analytical TTL."""


class CassandraTableGetPropertiesResource(CassandraTableResource):
    """CassandraTableGetPropertiesResource.

    :ivar id: Name of the Cosmos DB Cassandra table. Required.
    :vartype id: str
    :ivar default_ttl: Time to live of the Cosmos DB Cassandra table.
    :vartype default_ttl: int
    :ivar schema: Schema of the Cosmos DB Cassandra table.
    :vartype schema: "CassandraSchema"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class CassandraTableGetResults(ProxyResource):
    """An Azure Cosmos DB Cassandra table.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB Cassandra table.
    :vartype properties: "CassandraTableGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "CassandraTableGetProperties"
    """The properties of an Azure Cosmos DB Cassandra table."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class Certificate(TypedDict, total=False):
    """Certificate.

    :ivar pem: PEM formatted public key.
    :vartype pem: str
    """

    pem: str
    """PEM formatted public key."""


class ClientEncryptionIncludedPath(TypedDict, total=False):
    """.

    :ivar path: Path that needs to be encrypted. Required.
    :vartype path: str
    :ivar client_encryption_key_id: The identifier of the Client Encryption Key to be used to
     encrypt the path. Required.
    :vartype client_encryption_key_id: str
    :ivar encryption_type: The type of encryption to be performed. Eg - Deterministic, Randomized.
     Required.
    :vartype encryption_type: str
    :ivar encryption_algorithm: The encryption algorithm which will be used. Eg -
     AEAD_AES_256_CBC_HMAC_SHA256. Required.
    :vartype encryption_algorithm: str
    """

    path: Required[str]
    """Path that needs to be encrypted. Required."""
    clientEncryptionKeyId: Required[str]
    """The identifier of the Client Encryption Key to be used to encrypt the path. Required."""
    encryptionType: Required[str]
    """The type of encryption to be performed. Eg - Deterministic, Randomized. Required."""
    encryptionAlgorithm: Required[str]
    """The encryption algorithm which will be used. Eg - AEAD_AES_256_CBC_HMAC_SHA256. Required."""


class ClientEncryptionKeyCreateUpdateParameters(TypedDict, total=False):  # pylint: disable=name-too-long
    """Parameters to create and update ClientEncryptionKey.

    :ivar properties: Properties to create and update ClientEncryptionKey. Required.
    :vartype properties: "ClientEncryptionKeyCreateUpdateProperties"
    """

    properties: Required["ClientEncryptionKeyCreateUpdateProperties"]
    """Properties to create and update ClientEncryptionKey. Required."""


class ClientEncryptionKeyCreateUpdateProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties to create and update ClientEncryptionKey.

    :ivar resource: The standard JSON format of a ClientEncryptionKey. Required.
    :vartype resource: "ClientEncryptionKeyResource"
    """

    resource: Required["ClientEncryptionKeyResource"]
    """The standard JSON format of a ClientEncryptionKey. Required."""


class ClientEncryptionKeyGetProperties(TypedDict, total=False):
    """The properties of a ClientEncryptionKey resource.

    :ivar resource:
    :vartype resource: "ClientEncryptionKeyGetPropertiesResource"
    """

    resource: "ClientEncryptionKeyGetPropertiesResource"


class ClientEncryptionKeyResource(TypedDict, total=False):
    """Cosmos DB client encryption key resource object.

    :ivar id: Name of the ClientEncryptionKey.
    :vartype id: str
    :ivar encryption_algorithm: Encryption algorithm that will be used along with this client
     encryption key to encrypt/decrypt data.
    :vartype encryption_algorithm: str
    :ivar wrapped_data_encryption_key: Wrapped (encrypted) form of the key represented as a byte
     array.
    :vartype wrapped_data_encryption_key: str
    :ivar key_wrap_metadata: Metadata for the wrapping provider that can be used to unwrap the
     wrapped client encryption key.
    :vartype key_wrap_metadata: "KeyWrapMetadata"
    """

    id: str
    """Name of the ClientEncryptionKey."""
    encryptionAlgorithm: str
    """Encryption algorithm that will be used along with this client encryption key to encrypt/decrypt
     data."""
    wrappedDataEncryptionKey: str
    """Wrapped (encrypted) form of the key represented as a byte array."""
    keyWrapMetadata: "KeyWrapMetadata"
    """Metadata for the wrapping provider that can be used to unwrap the wrapped client encryption
     key."""


class ClientEncryptionKeyGetPropertiesResource(ClientEncryptionKeyResource):
    """ClientEncryptionKeyGetPropertiesResource.

    :ivar id: Name of the ClientEncryptionKey.
    :vartype id: str
    :ivar encryption_algorithm: Encryption algorithm that will be used along with this client
     encryption key to encrypt/decrypt data.
    :vartype encryption_algorithm: str
    :ivar wrapped_data_encryption_key: Wrapped (encrypted) form of the key represented as a byte
     array.
    :vartype wrapped_data_encryption_key: str
    :ivar key_wrap_metadata: Metadata for the wrapping provider that can be used to unwrap the
     wrapped client encryption key.
    :vartype key_wrap_metadata: "KeyWrapMetadata"
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class ClientEncryptionKeyGetResults(ProxyResource):
    """Client Encryption Key.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of a ClientEncryptionKey.
    :vartype properties: "ClientEncryptionKeyGetProperties"
    """

    properties: "ClientEncryptionKeyGetProperties"
    """The properties of a ClientEncryptionKey."""


class ClientEncryptionPolicy(TypedDict, total=False):
    """Cosmos DB client encryption policy.

    :ivar included_paths: Paths of the item that need encryption along with path-specific settings.
     Required.
    :vartype included_paths: list["ClientEncryptionIncludedPath"]
    :ivar policy_format_version: Version of the client encryption policy definition. Supported
     versions are 1 and 2. Version 2 supports id and partition key path encryption. Required.
    :vartype policy_format_version: int
    """

    includedPaths: Required[list["ClientEncryptionIncludedPath"]]
    """Paths of the item that need encryption along with path-specific settings. Required."""
    policyFormatVersion: Required[int]
    """Version of the client encryption policy definition. Supported versions are 1 and 2. Version 2
     supports id and partition key path encryption. Required."""


class CloudError(TypedDict, total=False):
    """An error response from the service.

    :ivar error: Error Response.
    :vartype error: "ErrorResponseAutoGenerated"
    """

    error: "ErrorResponseAutoGenerated"
    """Error Response."""


class ClusterKey(TypedDict, total=False):
    """Cosmos DB Cassandra table cluster key.

    :ivar name: Name of the Cosmos DB Cassandra table cluster key.
    :vartype name: str
    :ivar order_by: Order of the Cosmos DB Cassandra table cluster key, only support "Asc" and
     "Desc".
    :vartype order_by: str
    """

    name: str
    """Name of the Cosmos DB Cassandra table cluster key."""
    orderBy: str
    """Order of the Cosmos DB Cassandra table cluster key, only support \"Asc\" and \"Desc\"."""


class ClusterResource(ProxyResource):
    """Representation of a managed Cassandra cluster.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties of a managed Cassandra cluster.
    :vartype properties: "ClusterResourceProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedCassandraManagedServiceIdentity"
    """

    properties: "ClusterResourceProperties"
    """Properties of a managed Cassandra cluster."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedCassandraManagedServiceIdentity"
    """Identity for the resource."""


class ClusterResourceProperties(TypedDict, total=False):
    """Properties of a managed Cassandra cluster.

    :ivar provisioning_state: The status of the resource at the time the operation was called.
     Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ManagedCassandraProvisioningState"]
    :ivar restore_from_backup_id: To create an empty cluster, omit this field or set it to null. To
     restore a backup into a new cluster, set this field to the resource id of the backup.
    :vartype restore_from_backup_id: str
    :ivar delegated_management_subnet_id: Resource id of a subnet that this cluster's management
     service should have its network interface attached to. The subnet must be routable to all
     subnets that will be delegated to data centers. The resource id must be of the form
     '/subscriptions/<subscription id>/resourceGroups/<resource
     group>/providers/Microsoft.Network/virtualNetworks/<virtual network>/subnets/<subnet>'.
    :vartype delegated_management_subnet_id: str
    :ivar cassandra_version: Which version of Cassandra should this cluster converge to running
     (e.g., 3.11). When updated, the cluster may take some time to migrate to the new version.
    :vartype cassandra_version: str
    :ivar cluster_name_override: If you need to set the clusterName property in cassandra.yaml to
     something besides the resource name of the cluster, set the value to use on this property.
    :vartype cluster_name_override: str
    :ivar authentication_method: Which authentication method Cassandra should use to authenticate
     clients. 'None' turns off authentication, so should not be used except in emergencies.
     'Cassandra' is the default password based authentication. The default is 'Cassandra'. Known
     values are: "None", "Cassandra", and "Ldap".
    :vartype authentication_method: Union[str, "AuthenticationMethod"]
    :ivar initial_cassandra_admin_password: Initial password for clients connecting as admin to the
     cluster. Should be changed after cluster creation. Returns null on GET. This field only applies
     when the authenticationMethod field is 'Cassandra'.
    :vartype initial_cassandra_admin_password: str
    :ivar prometheus_endpoint: Hostname or IP address where the Prometheus endpoint containing data
     about the managed Cassandra nodes can be reached.
    :vartype prometheus_endpoint: "SeedNode"
    :ivar repair_enabled: Should automatic repairs run on this cluster? If omitted, this is true,
     and should stay true unless you are running a hybrid cluster where you are already doing your
     own repairs.
    :vartype repair_enabled: bool
    :ivar auto_replicate: The form of AutoReplicate that is being used by this cluster. Known
     values are: "None", "SystemKeyspaces", and "AllKeyspaces".
    :vartype auto_replicate: Union[str, "AutoReplicate"]
    :ivar client_certificates: List of TLS certificates used to authorize clients connecting to the
     cluster. All connections are TLS encrypted whether clientCertificates is set or not, but if
     clientCertificates is set, the managed Cassandra cluster will reject all connections not
     bearing a TLS client certificate that can be validated from one or more of the public
     certificates in this property.
    :vartype client_certificates: list["Certificate"]
    :ivar external_gossip_certificates: List of TLS certificates used to authorize gossip from
     unmanaged data centers. The TLS certificates of all nodes in unmanaged data centers must be
     verifiable using one of the certificates provided in this property.
    :vartype external_gossip_certificates: list["Certificate"]
    :ivar gossip_certificates: List of TLS certificates that unmanaged nodes must trust for gossip
     with managed nodes. All managed nodes will present TLS client certificates that are verifiable
     using one of the certificates provided in this property.
    :vartype gossip_certificates: list["Certificate"]
    :ivar external_seed_nodes: List of IP addresses of seed nodes in unmanaged data centers. These
     will be added to the seed node lists of all managed nodes.
    :vartype external_seed_nodes: list["SeedNode"]
    :ivar seed_nodes: List of IP addresses of seed nodes in the managed data centers. These should
     be added to the seed node lists of all unmanaged nodes.
    :vartype seed_nodes: list["SeedNode"]
    :ivar external_data_centers: List of the data center names for unmanaged data centers in this
     cluster to be included in auto-replication.
    :vartype external_data_centers: list[str]
    :ivar hours_between_backups: (Deprecated) Number of hours to wait between taking a backup of
     the cluster.
    :vartype hours_between_backups: int
    :ivar deallocated: Whether the cluster and associated data centers has been deallocated.
    :vartype deallocated: bool
    :ivar cassandra_audit_logging_enabled: Whether Cassandra audit logging is enabled.
    :vartype cassandra_audit_logging_enabled: bool
    :ivar provision_error: Error related to resource provisioning.
    :vartype provision_error: "CassandraError"
    :ivar extensions: Extensions to be added or updated on cluster.
    :vartype extensions: list[str]
    :ivar backup_schedules: List of backup schedules that define when you want to back up your
     data.
    :vartype backup_schedules: list["BackupSchedule"]
    :ivar scheduled_event_strategy: How the nodes in the cluster react to scheduled events. Known
     values are: "Ignore", "StopAny", and "StopByRack".
    :vartype scheduled_event_strategy: Union[str, "ScheduledEventStrategy"]
    :ivar azure_connection_method: How to connect to the azure services needed for running the
     cluster. Known values are: "None" and "VPN".
    :vartype azure_connection_method: Union[str, "AzureConnectionType"]
    :ivar private_link_resource_id: If the Connection Method is Vpn, this is the Id of the private
     link resource that the datacenters need to connect to.
    :vartype private_link_resource_id: str
    """

    provisioningState: Union[str, "ManagedCassandraProvisioningState"]
    """The status of the resource at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""
    restoreFromBackupId: str
    """To create an empty cluster, omit this field or set it to null. To restore a backup into a new
     cluster, set this field to the resource id of the backup."""
    delegatedManagementSubnetId: str
    """Resource id of a subnet that this cluster's management service should have its network
     interface attached to. The subnet must be routable to all subnets that will be delegated to
     data centers. The resource id must be of the form '/subscriptions/<subscription
     id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<virtual
     network>/subnets/<subnet>'."""
    cassandraVersion: str
    """Which version of Cassandra should this cluster converge to running (e.g., 3.11). When updated,
     the cluster may take some time to migrate to the new version."""
    clusterNameOverride: str
    """If you need to set the clusterName property in cassandra.yaml to something besides the resource
     name of the cluster, set the value to use on this property."""
    authenticationMethod: Union[str, "AuthenticationMethod"]
    """Which authentication method Cassandra should use to authenticate clients. 'None' turns off
     authentication, so should not be used except in emergencies. 'Cassandra' is the default
     password based authentication. The default is 'Cassandra'. Known values are: \"None\",
     \"Cassandra\", and \"Ldap\"."""
    initialCassandraAdminPassword: str
    """Initial password for clients connecting as admin to the cluster. Should be changed after
     cluster creation. Returns null on GET. This field only applies when the authenticationMethod
     field is 'Cassandra'."""
    prometheusEndpoint: "SeedNode"
    """Hostname or IP address where the Prometheus endpoint containing data about the managed
     Cassandra nodes can be reached."""
    repairEnabled: bool
    """Should automatic repairs run on this cluster? If omitted, this is true, and should stay true
     unless you are running a hybrid cluster where you are already doing your own repairs."""
    autoReplicate: Union[str, "AutoReplicate"]
    """The form of AutoReplicate that is being used by this cluster. Known values are: \"None\",
     \"SystemKeyspaces\", and \"AllKeyspaces\"."""
    clientCertificates: list["Certificate"]
    """List of TLS certificates used to authorize clients connecting to the cluster. All connections
     are TLS encrypted whether clientCertificates is set or not, but if clientCertificates is set,
     the managed Cassandra cluster will reject all connections not bearing a TLS client certificate
     that can be validated from one or more of the public certificates in this property."""
    externalGossipCertificates: list["Certificate"]
    """List of TLS certificates used to authorize gossip from unmanaged data centers. The TLS
     certificates of all nodes in unmanaged data centers must be verifiable using one of the
     certificates provided in this property."""
    gossipCertificates: list["Certificate"]
    """List of TLS certificates that unmanaged nodes must trust for gossip with managed nodes. All
     managed nodes will present TLS client certificates that are verifiable using one of the
     certificates provided in this property."""
    externalSeedNodes: list["SeedNode"]
    """List of IP addresses of seed nodes in unmanaged data centers. These will be added to the seed
     node lists of all managed nodes."""
    seedNodes: list["SeedNode"]
    """List of IP addresses of seed nodes in the managed data centers. These should be added to the
     seed node lists of all unmanaged nodes."""
    externalDataCenters: list[str]
    """List of the data center names for unmanaged data centers in this cluster to be included in
     auto-replication."""
    hoursBetweenBackups: int
    """(Deprecated) Number of hours to wait between taking a backup of the cluster."""
    deallocated: bool
    """Whether the cluster and associated data centers has been deallocated."""
    cassandraAuditLoggingEnabled: bool
    """Whether Cassandra audit logging is enabled."""
    provisionError: "CassandraError"
    """Error related to resource provisioning."""
    extensions: list[str]
    """Extensions to be added or updated on cluster."""
    backupSchedules: list["BackupSchedule"]
    """List of backup schedules that define when you want to back up your data."""
    scheduledEventStrategy: Union[str, "ScheduledEventStrategy"]
    """How the nodes in the cluster react to scheduled events. Known values are: \"Ignore\",
     \"StopAny\", and \"StopByRack\"."""
    azureConnectionMethod: Union[str, "AzureConnectionType"]
    """How to connect to the azure services needed for running the cluster. Known values are: \"None\"
     and \"VPN\"."""
    privateLinkResourceId: str
    """If the Connection Method is Vpn, this is the Id of the private link resource that the
     datacenters need to connect to."""


class Column(TypedDict, total=False):
    """Cosmos DB Cassandra table column.

    :ivar name: Name of the Cosmos DB Cassandra table column.
    :vartype name: str
    :ivar type: Type of the Cosmos DB Cassandra table column.
    :vartype type: str
    """

    name: str
    """Name of the Cosmos DB Cassandra table column."""
    type: str
    """Type of the Cosmos DB Cassandra table column."""


class CommandOutput(TypedDict, total=False):
    """Response of /command api.

    :ivar command_output: Output of the command.
    :vartype command_output: str
    """

    commandOutput: str
    """Output of the command."""


CommandPostBody = TypedDict(
    "CommandPostBody",
    {
        "command": Required[str],
        "arguments": dict[str, str],
        "host": Required[str],
        "cassandra-stop-start": bool,
        "readwrite": bool,
    },
    total=False,
)
CommandPostBody.__doc__ = """Specification of which command to run where.

:ivar command: The command which should be run. Required.
:vartype command: str
:ivar arguments: The arguments for the command to be run.
:vartype arguments: dict[str, str]
:ivar host: IP address of the cassandra host to run the command on. Required.
:vartype host: str
:ivar cassandra_stop_start: If true, stops cassandra before executing the command and then
 start it again.
:vartype cassandra_stop_start: bool
:ivar readwrite: If true, allows the command to *write* to the cassandra directory, otherwise
 read-only.
:vartype readwrite: bool
"""


class CompositePath(TypedDict, total=False):
    """CompositePath.

    :ivar path: The path for which the indexing behavior applies to. Index paths typically start
     with root and end with wildcard (/path/*).
    :vartype path: str
    :ivar order: Sort order for composite paths. Known values are: "ascending" and "descending".
    :vartype order: Union[str, "CompositePathSortOrder"]
    """

    path: str
    """The path for which the indexing behavior applies to. Index paths typically start with root and
     end with wildcard (/path/*)."""
    order: Union[str, "CompositePathSortOrder"]
    """Sort order for composite paths. Known values are: \"ascending\" and \"descending\"."""


class ComputedProperty(TypedDict, total=False):
    """The definition of a computed property.

    :ivar name: The name of a computed property, for example - "cp_lowerName".
    :vartype name: str
    :ivar query: The query that evaluates the value for computed property, for example - "SELECT
     VALUE LOWER(c.name) FROM c".
    :vartype query: str
    """

    name: str
    """The name of a computed property, for example - \"cp_lowerName\"."""
    query: str
    """The query that evaluates the value for computed property, for example - \"SELECT VALUE
     LOWER(c.name) FROM c\"."""


class ConflictResolutionPolicy(TypedDict, total=False):
    """The conflict resolution policy for the container.

    :ivar mode: Indicates the conflict resolution mode. Known values are: "LastWriterWins" and
     "Custom".
    :vartype mode: Union[str, "ConflictResolutionMode"]
    :ivar conflict_resolution_path: The conflict resolution path in the case of LastWriterWins
     mode.
    :vartype conflict_resolution_path: str
    :ivar conflict_resolution_procedure: The procedure to resolve conflicts in the case of custom
     mode.
    :vartype conflict_resolution_procedure: str
    """

    mode: Union[str, "ConflictResolutionMode"]
    """Indicates the conflict resolution mode. Known values are: \"LastWriterWins\" and \"Custom\"."""
    conflictResolutionPath: str
    """The conflict resolution path in the case of LastWriterWins mode."""
    conflictResolutionProcedure: str
    """The procedure to resolve conflicts in the case of custom mode."""


class ConnectionError(TypedDict, total=False):
    """ConnectionError.

    :ivar connection_state: The kind of connection error that occurred. Known values are:
     "Unknown", "OK", "OperatorToDataCenterNetworkError", "DatacenterToDatacenterNetworkError",
     "InternalOperatorToDataCenterCertificateError", and "InternalError".
    :vartype connection_state: Union[str, "ConnectionState"]
    :ivar i_p_from: The IP of host that originated the failed connection.
    :vartype i_p_from: str
    :ivar i_p_to: The IP that the connection attempted to reach.
    :vartype i_p_to: str
    :ivar port: The TCP port the connection was attempted on.
    :vartype port: int
    :ivar exception: Detailed error message about the failed connection.
    :vartype exception: str
    """

    connectionState: Union[str, "ConnectionState"]
    """The kind of connection error that occurred. Known values are: \"Unknown\", \"OK\",
     \"OperatorToDataCenterNetworkError\", \"DatacenterToDatacenterNetworkError\",
     \"InternalOperatorToDataCenterCertificateError\", and \"InternalError\"."""
    iPFrom: str
    """The IP of host that originated the failed connection."""
    iPTo: str
    """The IP that the connection attempted to reach."""
    port: int
    """The TCP port the connection was attempted on."""
    exception: str
    """Detailed error message about the failed connection."""


class ConsistencyPolicy(TypedDict, total=False):
    """The consistency policy for the Cosmos DB database account.

    :ivar default_consistency_level: The default consistency level and configuration settings of
     the Cosmos DB account. Required. Known values are: "Eventual", "Session", "BoundedStaleness",
     "Strong", and "ConsistentPrefix".
    :vartype default_consistency_level: Union[str, "DefaultConsistencyLevel"]
    :ivar max_staleness_prefix: When used with the Bounded Staleness consistency level, this value
     represents the number of stale requests tolerated. Accepted range for this value is 1 –
     2,147,483,647. Required when defaultConsistencyPolicy is set to 'BoundedStaleness'.
    :vartype max_staleness_prefix: int
    :ivar max_interval_in_seconds: When used with the Bounded Staleness consistency level, this
     value represents the time amount of staleness (in seconds) tolerated. Accepted range for this
     value is 5 - 86400. Required when defaultConsistencyPolicy is set to 'BoundedStaleness'.
    :vartype max_interval_in_seconds: int
    """

    defaultConsistencyLevel: Required[Union[str, "DefaultConsistencyLevel"]]
    """The default consistency level and configuration settings of the Cosmos DB account. Required.
     Known values are: \"Eventual\", \"Session\", \"BoundedStaleness\", \"Strong\", and
     \"ConsistentPrefix\"."""
    maxStalenessPrefix: int
    """When used with the Bounded Staleness consistency level, this value represents the number of
     stale requests tolerated. Accepted range for this value is 1 – 2,147,483,647. Required when
     defaultConsistencyPolicy is set to 'BoundedStaleness'."""
    maxIntervalInSeconds: int
    """When used with the Bounded Staleness consistency level, this value represents the time amount
     of staleness (in seconds) tolerated. Accepted range for this value is 5 - 86400. Required when
     defaultConsistencyPolicy is set to 'BoundedStaleness'."""


class ContainerPartitionKey(TypedDict, total=False):
    """The configuration of the partition key to be used for partitioning data into multiple
    partitions.

    :ivar paths: List of paths using which data within the container can be partitioned.
    :vartype paths: list[str]
    :ivar kind: Indicates the kind of algorithm used for partitioning. For MultiHash, multiple
     partition keys (upto three maximum) are supported for container create. Known values are:
     "Hash", "Range", and "MultiHash".
    :vartype kind: Union[str, "PartitionKind"]
    :ivar version: Indicates the version of the partition key definition.
    :vartype version: int
    :ivar system_key: Indicates if the container is using a system generated partition key.
    :vartype system_key: bool
    """

    paths: list[str]
    """List of paths using which data within the container can be partitioned."""
    kind: Union[str, "PartitionKind"]
    """Indicates the kind of algorithm used for partitioning. For MultiHash, multiple partition keys
     (upto three maximum) are supported for container create. Known values are: \"Hash\", \"Range\",
     and \"MultiHash\"."""
    version: int
    """Indicates the version of the partition key definition."""
    systemKey: bool
    """Indicates if the container is using a system generated partition key."""


class ContinuousBackupInformation(TypedDict, total=False):
    """Information about the status of continuous backups.

    :ivar latest_restorable_timestamp: The latest restorable timestamp for a resource.
    :vartype latest_restorable_timestamp: str
    """

    latestRestorableTimestamp: str
    """The latest restorable timestamp for a resource."""


class ContinuousBackupRestoreLocation(TypedDict, total=False):
    """Properties of the regional restorable account.

    :ivar location: The name of the continuous backup restore location.
    :vartype location: str
    """

    location: str
    """The name of the continuous backup restore location."""


class ContinuousModeBackupPolicy(TypedDict, total=False):
    """The object representing continuous mode backup policy.

    :ivar migration_state: The object representing the state of the migration between the backup
     policies.
    :vartype migration_state: "BackupPolicyMigrationState"
    :ivar continuous_mode_properties: Configuration values for continuous mode backup.
    :vartype continuous_mode_properties: "ContinuousModeProperties"
    :ivar type: Describes the mode of backups. Required. CONTINUOUS.
    :vartype type: Literal[BackupPolicyType.CONTINUOUS]
    """

    migrationState: "BackupPolicyMigrationState"
    """The object representing the state of the migration between the backup policies."""
    continuousModeProperties: "ContinuousModeProperties"
    """Configuration values for continuous mode backup."""
    type: Required[Literal[BackupPolicyType.CONTINUOUS]]
    """Describes the mode of backups. Required. CONTINUOUS."""


class ContinuousModeProperties(TypedDict, total=False):
    """Configuration values for periodic mode backup.

    :ivar tier: Enum to indicate type of Continuos backup mode. Known values are: "Continuous7Days"
     and "Continuous30Days".
    :vartype tier: Union[str, "ContinuousTier"]
    """

    tier: Union[str, "ContinuousTier"]
    """Enum to indicate type of Continuos backup mode. Known values are: \"Continuous7Days\" and
     \"Continuous30Days\"."""


class CorsPolicy(TypedDict, total=False):
    """The CORS policy for the Cosmos DB database account.

    :ivar allowed_origins: The origin domains that are permitted to make a request against the
     service via CORS. Required.
    :vartype allowed_origins: str
    :ivar allowed_methods: The methods (HTTP request verbs) that the origin domain may use for a
     CORS request.
    :vartype allowed_methods: str
    :ivar allowed_headers: The request headers that the origin domain may specify on the CORS
     request.
    :vartype allowed_headers: str
    :ivar exposed_headers: The response headers that may be sent in the response to the CORS
     request and exposed by the browser to the request issuer.
    :vartype exposed_headers: str
    :ivar max_age_in_seconds: The maximum amount time that a browser should cache the preflight
     OPTIONS request.
    :vartype max_age_in_seconds: int
    """

    allowedOrigins: Required[str]
    """The origin domains that are permitted to make a request against the service via CORS. Required."""
    allowedMethods: str
    """The methods (HTTP request verbs) that the origin domain may use for a CORS request."""
    allowedHeaders: str
    """The request headers that the origin domain may specify on the CORS request."""
    exposedHeaders: str
    """The response headers that may be sent in the response to the CORS request and exposed by the
     browser to the request issuer."""
    maxAgeInSeconds: int
    """The maximum amount time that a browser should cache the preflight OPTIONS request."""


class CreateUpdateOptions(TypedDict, total=False):
    """CreateUpdateOptions are a list of key-value pairs that describe the resource. Supported keys
    are "If-Match", "If-None-Match", "Session-Token" and "Throughput".

    :ivar throughput: Request Units per second. For example, "throughput": 10000.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings. Note: Either throughput or
     autoscaleSettings is required, but not both.
    :vartype autoscale_settings: "AutoscaleSettings"
    """

    throughput: int
    """Request Units per second. For example, \"throughput\": 10000."""
    autoscaleSettings: "AutoscaleSettings"
    """Specifies the Autoscale settings. Note: Either throughput or autoscaleSettings is required, but
     not both."""


class DatabaseAccountConnectionString(TypedDict, total=False):
    """Connection string for the Cosmos DB account.

    :ivar connection_string: Value of the connection string.
    :vartype connection_string: str
    :ivar description: Description of the connection string.
    :vartype description: str
    :ivar key_kind: Kind of the connection string key. Known values are: "Primary", "Secondary",
     "PrimaryReadonly", and "SecondaryReadonly".
    :vartype key_kind: Union[str, "Kind"]
    :ivar type: Type of the connection string. Known values are: "Sql", "Table", "MongoDB",
     "Cassandra", "CassandraConnectorMetadata", "Gremlin", "SqlDedicatedGateway", "GremlinV2", and
     "Undefined".
    :vartype type: Union[str, "Type"]
    """

    connectionString: str
    """Value of the connection string."""
    description: str
    """Description of the connection string."""
    keyKind: Union[str, "Kind"]
    """Kind of the connection string key. Known values are: \"Primary\", \"Secondary\",
     \"PrimaryReadonly\", and \"SecondaryReadonly\"."""
    type: Union[str, "Type"]
    """Type of the connection string. Known values are: \"Sql\", \"Table\", \"MongoDB\",
     \"Cassandra\", \"CassandraConnectorMetadata\", \"Gremlin\", \"SqlDedicatedGateway\",
     \"GremlinV2\", and \"Undefined\"."""


class DatabaseAccountCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB database accounts.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar kind: Indicates the type of database account. This can only be set at database account
     creation. Known values are: "GlobalDocumentDB", "MongoDB", and "Parse".
    :vartype kind: Union[str, "DatabaseAccountKind"]
    :ivar identity:
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB database accounts. Required.
    :vartype properties: "DatabaseAccountCreateUpdateProperties"
    """

    kind: Union[str, "DatabaseAccountKind"]
    """Indicates the type of database account. This can only be set at database account creation.
     Known values are: \"GlobalDocumentDB\", \"MongoDB\", and \"Parse\"."""
    properties: Required["DatabaseAccountCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB database accounts. Required."""


class DatabaseAccountCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB database accounts.

    :ivar consistency_policy: The consistency policy for the Cosmos DB account.
    :vartype consistency_policy: "ConsistencyPolicy"
    :ivar locations: An array that contains the georeplication locations enabled for the Cosmos DB
     account. Required.
    :vartype locations: list["Location"]
    :ivar database_account_offer_type: The offer type for the Cosmos DB database account. Required.
     Default value is "Standard".
    :vartype database_account_offer_type: Literal["Standard"]
    :ivar ip_rules: List of IpRules.
    :vartype ip_rules: list["IpAddressOrRange"]
    :ivar is_virtual_network_filter_enabled: Flag to indicate whether to enable/disable Virtual
     Network ACL rules.
    :vartype is_virtual_network_filter_enabled: bool
    :ivar enable_automatic_failover: Enables automatic failover of the write region in the rare
     event that the region is unavailable due to an outage. Automatic failover will result in a new
     write region for the account and is chosen based on the failover priorities configured for the
     account.
    :vartype enable_automatic_failover: bool
    :ivar capabilities: List of Cosmos DB capabilities for the account.
    :vartype capabilities: list["Capability"]
    :ivar virtual_network_rules: List of Virtual Network ACL rules configured for the Cosmos DB
     account.
    :vartype virtual_network_rules: list["VirtualNetworkRule"]
    :ivar enable_multiple_write_locations: Enables the account to write in multiple locations.
    :vartype enable_multiple_write_locations: bool
    :ivar enable_cassandra_connector: Enables the cassandra connector on the Cosmos DB C* account.
    :vartype enable_cassandra_connector: bool
    :ivar connector_offer: The cassandra connector offer type for the Cosmos DB database C*
     account. "Small"
    :vartype connector_offer: Union[str, "ConnectorOffer"]
    :ivar disable_key_based_metadata_write_access: Disable write operations on metadata resources
     (databases, containers, throughput) via account keys.
    :vartype disable_key_based_metadata_write_access: bool
    :ivar key_vault_key_uri: The URI of the key vault.
    :vartype key_vault_key_uri: str
    :ivar default_identity: The default identity for accessing key vault used in features like
     customer managed keys. The default identity needs to be explicitly set by the users. It can be
     "FirstPartyIdentity", "SystemAssignedIdentity" and more.
    :vartype default_identity: str
    :ivar public_network_access: Whether requests from Public Network are allowed. Known values
     are: "Enabled", "Disabled", and "SecuredByPerimeter".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar enable_free_tier: Flag to indicate whether Free Tier is enabled.
    :vartype enable_free_tier: bool
    :ivar api_properties: API specific properties. Currently, supported only for MongoDB API.
    :vartype api_properties: "ApiProperties"
    :ivar enable_analytical_storage: Flag to indicate whether to enable storage analytics.
    :vartype enable_analytical_storage: bool
    :ivar analytical_storage_configuration: Analytical storage specific properties.
    :vartype analytical_storage_configuration: "AnalyticalStorageConfiguration"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar backup_policy: The object representing the policy for taking backups on an account.
    :vartype backup_policy: "BackupPolicy"
    :ivar cors: The CORS policy for the Cosmos DB database account.
    :vartype cors: list["CorsPolicy"]
    :ivar network_acl_bypass: Indicates what services are allowed to bypass firewall checks. Known
     values are: "None" and "AzureServices".
    :vartype network_acl_bypass: Union[str, "NetworkAclBypass"]
    :ivar network_acl_bypass_resource_ids: An array that contains the Resource Ids for Network Acl
     Bypass for the Cosmos DB account.
    :vartype network_acl_bypass_resource_ids: list[str]
    :ivar disable_local_auth: Opt-out of local authentication and ensure only MSI and AAD can be
     used exclusively for authentication.
    :vartype disable_local_auth: bool
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "RestoreParameters"
    :ivar capacity: The object that represents all properties related to capacity enforcement on an
     account.
    :vartype capacity: "Capacity"
    :ivar keys_metadata: This property is ignored during the update/create operation, as the
     metadata is read-only. The object represents the metadata for the Account Keys of the Cosmos DB
     account.
    :vartype keys_metadata: "DatabaseAccountKeysMetadata"
    :ivar enable_partition_merge: Flag to indicate enabling/disabling of Partition Merge feature on
     the account.
    :vartype enable_partition_merge: bool
    :ivar enable_burst_capacity: Flag to indicate enabling/disabling of Burst Capacity Preview
     feature on the account.
    :vartype enable_burst_capacity: bool
    :ivar minimal_tls_version: Indicates the minimum allowed Tls version. The default is Tls 1.0,
     except for Cassandra and Mongo API's, which only work with Tls 1.2. Known values are: "Tls",
     "Tls11", and "Tls12".
    :vartype minimal_tls_version: Union[str, "MinimalTlsVersion"]
    :ivar customer_managed_key_status: Indicates the status of the Customer Managed Key feature on
     the account. In case there are errors, the property provides troubleshooting guidance.
    :vartype customer_managed_key_status: str
    :ivar enable_priority_based_execution: Flag to indicate enabling/disabling of Priority Based
     Execution Preview feature on the account.
    :vartype enable_priority_based_execution: bool
    :ivar default_priority_level: Enum to indicate default Priority Level of request for Priority
     Based Execution. Known values are: "High" and "Low".
    :vartype default_priority_level: Union[str, "DefaultPriorityLevel"]
    :ivar enable_per_region_per_partition_autoscale: Flag to indicate enabling/disabling of
     Per-Region Per-partition autoscale Preview feature on the account.
    :vartype enable_per_region_per_partition_autoscale: bool
    :ivar enforce_hierarchical_partition_key_id_last_level: Flag to indicate enabling/disabling of
     hierarchical partition key ID last level enforcement on the account.
    :vartype enforce_hierarchical_partition_key_id_last_level: bool
    """

    consistencyPolicy: "ConsistencyPolicy"
    """The consistency policy for the Cosmos DB account."""
    locations: Required[list["Location"]]
    """An array that contains the georeplication locations enabled for the Cosmos DB account.
     Required."""
    databaseAccountOfferType: Required[Literal["Standard"]]
    """The offer type for the Cosmos DB database account. Required. Default value is \"Standard\"."""
    ipRules: list["IpAddressOrRange"]
    """List of IpRules."""
    isVirtualNetworkFilterEnabled: bool
    """Flag to indicate whether to enable/disable Virtual Network ACL rules."""
    enableAutomaticFailover: bool
    """Enables automatic failover of the write region in the rare event that the region is unavailable
     due to an outage. Automatic failover will result in a new write region for the account and is
     chosen based on the failover priorities configured for the account."""
    capabilities: list["Capability"]
    """List of Cosmos DB capabilities for the account."""
    virtualNetworkRules: list["VirtualNetworkRule"]
    """List of Virtual Network ACL rules configured for the Cosmos DB account."""
    enableMultipleWriteLocations: bool
    """Enables the account to write in multiple locations."""
    enableCassandraConnector: bool
    """Enables the cassandra connector on the Cosmos DB C* account."""
    connectorOffer: Union[str, "ConnectorOffer"]
    """The cassandra connector offer type for the Cosmos DB database C* account. \"Small\""""
    disableKeyBasedMetadataWriteAccess: bool
    """Disable write operations on metadata resources (databases, containers, throughput) via account
     keys."""
    keyVaultKeyUri: str
    """The URI of the key vault."""
    defaultIdentity: str
    """The default identity for accessing key vault used in features like customer managed keys. The
     default identity needs to be explicitly set by the users. It can be \"FirstPartyIdentity\",
     \"SystemAssignedIdentity\" and more."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """Whether requests from Public Network are allowed. Known values are: \"Enabled\", \"Disabled\",
     and \"SecuredByPerimeter\"."""
    enableFreeTier: bool
    """Flag to indicate whether Free Tier is enabled."""
    apiProperties: "ApiProperties"
    """API specific properties. Currently, supported only for MongoDB API."""
    enableAnalyticalStorage: bool
    """Flag to indicate whether to enable storage analytics."""
    analyticalStorageConfiguration: "AnalyticalStorageConfiguration"
    """Analytical storage specific properties."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""
    backupPolicy: "BackupPolicy"
    """The object representing the policy for taking backups on an account."""
    cors: list["CorsPolicy"]
    """The CORS policy for the Cosmos DB database account."""
    networkAclBypass: Union[str, "NetworkAclBypass"]
    """Indicates what services are allowed to bypass firewall checks. Known values are: \"None\" and
     \"AzureServices\"."""
    networkAclBypassResourceIds: list[str]
    """An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account."""
    disableLocalAuth: bool
    """Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for
     authentication."""
    restoreParameters: "RestoreParameters"
    """Parameters to indicate the information about the restore."""
    capacity: "Capacity"
    """The object that represents all properties related to capacity enforcement on an account."""
    keysMetadata: "DatabaseAccountKeysMetadata"
    """This property is ignored during the update/create operation, as the metadata is read-only. The
     object represents the metadata for the Account Keys of the Cosmos DB account."""
    enablePartitionMerge: bool
    """Flag to indicate enabling/disabling of Partition Merge feature on the account."""
    enableBurstCapacity: bool
    """Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account."""
    minimalTlsVersion: Union[str, "MinimalTlsVersion"]
    """Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and
     Mongo API's, which only work with Tls 1.2. Known values are: \"Tls\", \"Tls11\", and \"Tls12\"."""
    customerManagedKeyStatus: str
    """Indicates the status of the Customer Managed Key feature on the account. In case there are
     errors, the property provides troubleshooting guidance."""
    enablePriorityBasedExecution: bool
    """Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account."""
    defaultPriorityLevel: Union[str, "DefaultPriorityLevel"]
    """Enum to indicate default Priority Level of request for Priority Based Execution. Known values
     are: \"High\" and \"Low\"."""
    enablePerRegionPerPartitionAutoscale: bool
    """Flag to indicate enabling/disabling of Per-Region Per-partition autoscale Preview feature on
     the account."""
    enforceHierarchicalPartitionKeyIdLastLevel: bool
    """Flag to indicate enabling/disabling of hierarchical partition key ID last level enforcement on
     the account."""


class DatabaseAccountGetProperties(TypedDict, total=False):
    """Properties for the database account.

    :ivar provisioning_state: The provisioning state of the resource.
    :vartype provisioning_state: str
    :ivar document_endpoint: The connection endpoint for the Cosmos DB database account.
    :vartype document_endpoint: str
    :ivar database_account_offer_type: The offer type for the Cosmos DB database account. Default
     value: Standard. Default value is "Standard".
    :vartype database_account_offer_type: Literal["Standard"]
    :ivar ip_rules: List of IpRules.
    :vartype ip_rules: list["IpAddressOrRange"]
    :ivar is_virtual_network_filter_enabled: Flag to indicate whether to enable/disable Virtual
     Network ACL rules.
    :vartype is_virtual_network_filter_enabled: bool
    :ivar enable_automatic_failover: Enables automatic failover of the write region in the rare
     event that the region is unavailable due to an outage. Automatic failover will result in a new
     write region for the account and is chosen based on the failover priorities configured for the
     account.
    :vartype enable_automatic_failover: bool
    :ivar consistency_policy: The consistency policy for the Cosmos DB database account.
    :vartype consistency_policy: "ConsistencyPolicy"
    :ivar capabilities: List of Cosmos DB capabilities for the account.
    :vartype capabilities: list["Capability"]
    :ivar write_locations: An array that contains the write location for the Cosmos DB account.
    :vartype write_locations: list["Location"]
    :ivar read_locations: An array that contains of the read locations enabled for the Cosmos DB
     account.
    :vartype read_locations: list["Location"]
    :ivar locations: An array that contains all of the locations enabled for the Cosmos DB account.
    :vartype locations: list["Location"]
    :ivar failover_policies: An array that contains the regions ordered by their failover
     priorities.
    :vartype failover_policies: list["FailoverPolicy"]
    :ivar virtual_network_rules: List of Virtual Network ACL rules configured for the Cosmos DB
     account.
    :vartype virtual_network_rules: list["VirtualNetworkRule"]
    :ivar private_endpoint_connections: List of Private Endpoint Connections configured for the
     Cosmos DB account.
    :vartype private_endpoint_connections: list["PrivateEndpointConnection"]
    :ivar enable_multiple_write_locations: Enables the account to write in multiple locations.
    :vartype enable_multiple_write_locations: bool
    :ivar enable_cassandra_connector: Enables the cassandra connector on the Cosmos DB C* account.
    :vartype enable_cassandra_connector: bool
    :ivar connector_offer: The cassandra connector offer type for the Cosmos DB database C*
     account. "Small"
    :vartype connector_offer: Union[str, "ConnectorOffer"]
    :ivar disable_key_based_metadata_write_access: Disable write operations on metadata resources
     (databases, containers, throughput) via account keys.
    :vartype disable_key_based_metadata_write_access: bool
    :ivar key_vault_key_uri: The URI of the key vault.
    :vartype key_vault_key_uri: str
    :ivar default_identity: The default identity for accessing key vault used in features like
     customer managed keys. The default identity needs to be explicitly set by the users. It can be
     "FirstPartyIdentity", "SystemAssignedIdentity" and more.
    :vartype default_identity: str
    :ivar public_network_access: Whether requests from Public Network are allowed. Known values
     are: "Enabled", "Disabled", and "SecuredByPerimeter".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar enable_free_tier: Flag to indicate whether Free Tier is enabled.
    :vartype enable_free_tier: bool
    :ivar api_properties: API specific properties.
    :vartype api_properties: "ApiProperties"
    :ivar enable_analytical_storage: Flag to indicate whether to enable storage analytics.
    :vartype enable_analytical_storage: bool
    :ivar analytical_storage_configuration: Analytical storage specific properties.
    :vartype analytical_storage_configuration: "AnalyticalStorageConfiguration"
    :ivar instance_id: A unique identifier assigned to the database account.
    :vartype instance_id: str
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "RestoreParameters"
    :ivar backup_policy: The object representing the policy for taking backups on an account.
    :vartype backup_policy: "BackupPolicy"
    :ivar cors: The CORS policy for the Cosmos DB database account.
    :vartype cors: list["CorsPolicy"]
    :ivar network_acl_bypass: Indicates what services are allowed to bypass firewall checks. Known
     values are: "None" and "AzureServices".
    :vartype network_acl_bypass: Union[str, "NetworkAclBypass"]
    :ivar network_acl_bypass_resource_ids: An array that contains the Resource Ids for Network Acl
     Bypass for the Cosmos DB account.
    :vartype network_acl_bypass_resource_ids: list[str]
    :ivar disable_local_auth: Opt-out of local authentication and ensure only MSI and AAD can be
     used exclusively for authentication.
    :vartype disable_local_auth: bool
    :ivar capacity: The object that represents all properties related to capacity enforcement on an
     account.
    :vartype capacity: "Capacity"
    :ivar keys_metadata: The object that represents the metadata for the Account Keys of the Cosmos
     DB account.
    :vartype keys_metadata: "DatabaseAccountKeysMetadata"
    :ivar enable_partition_merge: Flag to indicate enabling/disabling of Partition Merge feature on
     the account.
    :vartype enable_partition_merge: bool
    :ivar enable_burst_capacity: Flag to indicate enabling/disabling of Burst Capacity Preview
     feature on the account.
    :vartype enable_burst_capacity: bool
    :ivar minimal_tls_version: Indicates the minimum allowed Tls version. The default is Tls 1.0,
     except for Cassandra and Mongo API's, which only work with Tls 1.2. Known values are: "Tls",
     "Tls11", and "Tls12".
    :vartype minimal_tls_version: Union[str, "MinimalTlsVersion"]
    :ivar customer_managed_key_status: Indicates the status of the Customer Managed Key feature on
     the account. In case there are errors, the property provides troubleshooting guidance.
    :vartype customer_managed_key_status: str
    :ivar key_vault_key_uri_version: The version of the Customer Managed Key currently being used
     by the account.
    :vartype key_vault_key_uri_version: str
    :ivar enable_priority_based_execution: Flag to indicate enabling/disabling of Priority Based
     Execution Preview feature on the account.
    :vartype enable_priority_based_execution: bool
    :ivar default_priority_level: Enum to indicate default Priority Level of request for Priority
     Based Execution. Known values are: "High" and "Low".
    :vartype default_priority_level: Union[str, "DefaultPriorityLevel"]
    :ivar enable_per_region_per_partition_autoscale: Flag to indicate enabling/disabling of
     Per-Region Per-partition autoscale Preview feature on the account.
    :vartype enable_per_region_per_partition_autoscale: bool
    :ivar enforce_hierarchical_partition_key_id_last_level: Flag to indicate enabling/disabling of
     hierarchical partition key ID last level enforcement on the account.
    :vartype enforce_hierarchical_partition_key_id_last_level: bool
    """

    provisioningState: str
    """The provisioning state of the resource."""
    documentEndpoint: str
    """The connection endpoint for the Cosmos DB database account."""
    databaseAccountOfferType: Literal["Standard"]
    """The offer type for the Cosmos DB database account. Default value: Standard. Default value is
     \"Standard\"."""
    ipRules: list["IpAddressOrRange"]
    """List of IpRules."""
    isVirtualNetworkFilterEnabled: bool
    """Flag to indicate whether to enable/disable Virtual Network ACL rules."""
    enableAutomaticFailover: bool
    """Enables automatic failover of the write region in the rare event that the region is unavailable
     due to an outage. Automatic failover will result in a new write region for the account and is
     chosen based on the failover priorities configured for the account."""
    consistencyPolicy: "ConsistencyPolicy"
    """The consistency policy for the Cosmos DB database account."""
    capabilities: list["Capability"]
    """List of Cosmos DB capabilities for the account."""
    writeLocations: list["Location"]
    """An array that contains the write location for the Cosmos DB account."""
    readLocations: list["Location"]
    """An array that contains of the read locations enabled for the Cosmos DB account."""
    locations: list["Location"]
    """An array that contains all of the locations enabled for the Cosmos DB account."""
    failoverPolicies: list["FailoverPolicy"]
    """An array that contains the regions ordered by their failover priorities."""
    virtualNetworkRules: list["VirtualNetworkRule"]
    """List of Virtual Network ACL rules configured for the Cosmos DB account."""
    privateEndpointConnections: list["PrivateEndpointConnection"]
    """List of Private Endpoint Connections configured for the Cosmos DB account."""
    enableMultipleWriteLocations: bool
    """Enables the account to write in multiple locations."""
    enableCassandraConnector: bool
    """Enables the cassandra connector on the Cosmos DB C* account."""
    connectorOffer: Union[str, "ConnectorOffer"]
    """The cassandra connector offer type for the Cosmos DB database C* account. \"Small\""""
    disableKeyBasedMetadataWriteAccess: bool
    """Disable write operations on metadata resources (databases, containers, throughput) via account
     keys."""
    keyVaultKeyUri: str
    """The URI of the key vault."""
    defaultIdentity: str
    """The default identity for accessing key vault used in features like customer managed keys. The
     default identity needs to be explicitly set by the users. It can be \"FirstPartyIdentity\",
     \"SystemAssignedIdentity\" and more."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """Whether requests from Public Network are allowed. Known values are: \"Enabled\", \"Disabled\",
     and \"SecuredByPerimeter\"."""
    enableFreeTier: bool
    """Flag to indicate whether Free Tier is enabled."""
    apiProperties: "ApiProperties"
    """API specific properties."""
    enableAnalyticalStorage: bool
    """Flag to indicate whether to enable storage analytics."""
    analyticalStorageConfiguration: "AnalyticalStorageConfiguration"
    """Analytical storage specific properties."""
    instanceId: str
    """A unique identifier assigned to the database account."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""
    restoreParameters: "RestoreParameters"
    """Parameters to indicate the information about the restore."""
    backupPolicy: "BackupPolicy"
    """The object representing the policy for taking backups on an account."""
    cors: list["CorsPolicy"]
    """The CORS policy for the Cosmos DB database account."""
    networkAclBypass: Union[str, "NetworkAclBypass"]
    """Indicates what services are allowed to bypass firewall checks. Known values are: \"None\" and
     \"AzureServices\"."""
    networkAclBypassResourceIds: list[str]
    """An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account."""
    disableLocalAuth: bool
    """Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for
     authentication."""
    capacity: "Capacity"
    """The object that represents all properties related to capacity enforcement on an account."""
    keysMetadata: "DatabaseAccountKeysMetadata"
    """The object that represents the metadata for the Account Keys of the Cosmos DB account."""
    enablePartitionMerge: bool
    """Flag to indicate enabling/disabling of Partition Merge feature on the account."""
    enableBurstCapacity: bool
    """Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account."""
    minimalTlsVersion: Union[str, "MinimalTlsVersion"]
    """Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and
     Mongo API's, which only work with Tls 1.2. Known values are: \"Tls\", \"Tls11\", and \"Tls12\"."""
    customerManagedKeyStatus: str
    """Indicates the status of the Customer Managed Key feature on the account. In case there are
     errors, the property provides troubleshooting guidance."""
    keyVaultKeyUriVersion: str
    """The version of the Customer Managed Key currently being used by the account."""
    enablePriorityBasedExecution: bool
    """Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account."""
    defaultPriorityLevel: Union[str, "DefaultPriorityLevel"]
    """Enum to indicate default Priority Level of request for Priority Based Execution. Known values
     are: \"High\" and \"Low\"."""
    enablePerRegionPerPartitionAutoscale: bool
    """Flag to indicate enabling/disabling of Per-Region Per-partition autoscale Preview feature on
     the account."""
    enforceHierarchicalPartitionKeyIdLastLevel: bool
    """Flag to indicate enabling/disabling of hierarchical partition key ID last level enforcement on
     the account."""


class DatabaseAccountGetResults(ProxyResource):
    """An Azure Cosmos DB database account.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties for the database account.
    :vartype properties: "DatabaseAccountGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar kind: Indicates the type of database account. This can only be set at database account
     creation. Known values are: "GlobalDocumentDB", "MongoDB", and "Parse".
    :vartype kind: Union[str, "DatabaseAccountKind"]
    """

    properties: "DatabaseAccountGetProperties"
    """Properties for the database account."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""
    kind: Union[str, "DatabaseAccountKind"]
    """Indicates the type of database account. This can only be set at database account creation.
     Known values are: \"GlobalDocumentDB\", \"MongoDB\", and \"Parse\"."""


class DatabaseAccountKeysMetadata(TypedDict, total=False):
    """The metadata related to each access key for the given Cosmos DB database account.

    :ivar primary_master_key: The metadata related to the Primary Read-Write Key for the given
     Cosmos DB database account.
    :vartype primary_master_key: "AccountKeyMetadata"
    :ivar secondary_master_key: The metadata related to the Secondary Read-Write Key for the given
     Cosmos DB database account.
    :vartype secondary_master_key: "AccountKeyMetadata"
    :ivar primary_readonly_master_key: The metadata related to the Primary Read-Only Key for the
     given Cosmos DB database account.
    :vartype primary_readonly_master_key: "AccountKeyMetadata"
    :ivar secondary_readonly_master_key: The metadata related to the Secondary Read-Only Key for
     the given Cosmos DB database account.
    :vartype secondary_readonly_master_key: "AccountKeyMetadata"
    """

    primaryMasterKey: "AccountKeyMetadata"
    """The metadata related to the Primary Read-Write Key for the given Cosmos DB database account."""
    secondaryMasterKey: "AccountKeyMetadata"
    """The metadata related to the Secondary Read-Write Key for the given Cosmos DB database account."""
    primaryReadonlyMasterKey: "AccountKeyMetadata"
    """The metadata related to the Primary Read-Only Key for the given Cosmos DB database account."""
    secondaryReadonlyMasterKey: "AccountKeyMetadata"
    """The metadata related to the Secondary Read-Only Key for the given Cosmos DB database account."""


class DatabaseAccountListConnectionStringsResult(TypedDict, total=False):  # pylint: disable=name-too-long
    """The connection strings for the given database account.

    :ivar connection_strings: An array that contains the connection strings for the Cosmos DB
     account.
    :vartype connection_strings: list["DatabaseAccountConnectionString"]
    """

    connectionStrings: list["DatabaseAccountConnectionString"]
    """An array that contains the connection strings for the Cosmos DB account."""


class DatabaseAccountListReadOnlyKeysResult(TypedDict, total=False):
    """The read-only access keys for the given database account.

    :ivar primary_readonly_master_key: Base 64 encoded value of the primary read-only key.
    :vartype primary_readonly_master_key: str
    :ivar secondary_readonly_master_key: Base 64 encoded value of the secondary read-only key.
    :vartype secondary_readonly_master_key: str
    """

    primaryReadonlyMasterKey: str
    """Base 64 encoded value of the primary read-only key."""
    secondaryReadonlyMasterKey: str
    """Base 64 encoded value of the secondary read-only key."""


class DatabaseAccountListKeysResult(DatabaseAccountListReadOnlyKeysResult):
    """The access keys for the given database account.

    :ivar primary_readonly_master_key: Base 64 encoded value of the primary read-only key.
    :vartype primary_readonly_master_key: str
    :ivar secondary_readonly_master_key: Base 64 encoded value of the secondary read-only key.
    :vartype secondary_readonly_master_key: str
    :ivar primary_master_key: Base 64 encoded value of the primary read-write key.
    :vartype primary_master_key: str
    :ivar secondary_master_key: Base 64 encoded value of the secondary read-write key.
    :vartype secondary_master_key: str
    """

    primaryMasterKey: str
    """Base 64 encoded value of the primary read-write key."""
    secondaryMasterKey: str
    """Base 64 encoded value of the secondary read-write key."""


class DatabaseAccountRegenerateKeyParameters(TypedDict, total=False):
    """Parameters to regenerate the keys within the database account.

    :ivar key_kind: The access key to regenerate. Required. Known values are: "primary",
     "secondary", "primaryReadonly", and "secondaryReadonly".
    :vartype key_kind: Union[str, "KeyKind"]
    """

    keyKind: Required[Union[str, "KeyKind"]]
    """The access key to regenerate. Required. Known values are: \"primary\", \"secondary\",
     \"primaryReadonly\", and \"secondaryReadonly\"."""


class DatabaseAccountUpdateParameters(TypedDict, total=False):
    """Parameters for patching Azure Cosmos DB database account properties.

    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to update Azure Cosmos DB database accounts.
    :vartype properties: "DatabaseAccountUpdateProperties"
    """

    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \"defaultExperience\": \"Cassandra\". Current \"defaultExperience\" values also include
     \"Table\", \"Graph\", \"DocumentDB\", and \"MongoDB\"."""
    location: str
    """The location of the resource group to which the resource belongs."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""
    properties: "DatabaseAccountUpdateProperties"
    """Properties to update Azure Cosmos DB database accounts."""


class DatabaseAccountUpdateProperties(TypedDict, total=False):
    """Properties to update Azure Cosmos DB database accounts.

    :ivar consistency_policy: The consistency policy for the Cosmos DB account.
    :vartype consistency_policy: "ConsistencyPolicy"
    :ivar locations: An array that contains the georeplication locations enabled for the Cosmos DB
     account.
    :vartype locations: list["Location"]
    :ivar ip_rules: List of IpRules.
    :vartype ip_rules: list["IpAddressOrRange"]
    :ivar is_virtual_network_filter_enabled: Flag to indicate whether to enable/disable Virtual
     Network ACL rules.
    :vartype is_virtual_network_filter_enabled: bool
    :ivar enable_automatic_failover: Enables automatic failover of the write region in the rare
     event that the region is unavailable due to an outage. Automatic failover will result in a new
     write region for the account and is chosen based on the failover priorities configured for the
     account.
    :vartype enable_automatic_failover: bool
    :ivar capabilities: List of Cosmos DB capabilities for the account.
    :vartype capabilities: list["Capability"]
    :ivar virtual_network_rules: List of Virtual Network ACL rules configured for the Cosmos DB
     account.
    :vartype virtual_network_rules: list["VirtualNetworkRule"]
    :ivar enable_multiple_write_locations: Enables the account to write in multiple locations.
    :vartype enable_multiple_write_locations: bool
    :ivar enable_cassandra_connector: Enables the cassandra connector on the Cosmos DB C* account.
    :vartype enable_cassandra_connector: bool
    :ivar connector_offer: The cassandra connector offer type for the Cosmos DB database C*
     account. "Small"
    :vartype connector_offer: Union[str, "ConnectorOffer"]
    :ivar disable_key_based_metadata_write_access: Disable write operations on metadata resources
     (databases, containers, throughput) via account keys.
    :vartype disable_key_based_metadata_write_access: bool
    :ivar key_vault_key_uri: The URI of the key vault.
    :vartype key_vault_key_uri: str
    :ivar default_identity: The default identity for accessing key vault used in features like
     customer managed keys. The default identity needs to be explicitly set by the users. It can be
     "FirstPartyIdentity", "SystemAssignedIdentity" and more.
    :vartype default_identity: str
    :ivar public_network_access: Whether requests from Public Network are allowed. Known values
     are: "Enabled", "Disabled", and "SecuredByPerimeter".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar enable_free_tier: Flag to indicate whether Free Tier is enabled.
    :vartype enable_free_tier: bool
    :ivar api_properties: API specific properties. Currently, supported only for MongoDB API.
    :vartype api_properties: "ApiProperties"
    :ivar enable_analytical_storage: Flag to indicate whether to enable storage analytics.
    :vartype enable_analytical_storage: bool
    :ivar analytical_storage_configuration: Analytical storage specific properties.
    :vartype analytical_storage_configuration: "AnalyticalStorageConfiguration"
    :ivar backup_policy: The object representing the policy for taking backups on an account.
    :vartype backup_policy: "BackupPolicy"
    :ivar cors: The CORS policy for the Cosmos DB database account.
    :vartype cors: list["CorsPolicy"]
    :ivar network_acl_bypass: Indicates what services are allowed to bypass firewall checks. Known
     values are: "None" and "AzureServices".
    :vartype network_acl_bypass: Union[str, "NetworkAclBypass"]
    :ivar network_acl_bypass_resource_ids: An array that contains the Resource Ids for Network Acl
     Bypass for the Cosmos DB account.
    :vartype network_acl_bypass_resource_ids: list[str]
    :ivar disable_local_auth: Opt-out of local authentication and ensure only MSI and AAD can be
     used exclusively for authentication.
    :vartype disable_local_auth: bool
    :ivar capacity: The object that represents all properties related to capacity enforcement on an
     account.
    :vartype capacity: "Capacity"
    :ivar keys_metadata: This property is ignored during the update operation, as the metadata is
     read-only. The object represents the metadata for the Account Keys of the Cosmos DB account.
    :vartype keys_metadata: "DatabaseAccountKeysMetadata"
    :ivar enable_partition_merge: Flag to indicate enabling/disabling of Partition Merge feature on
     the account.
    :vartype enable_partition_merge: bool
    :ivar enable_burst_capacity: Flag to indicate enabling/disabling of Burst Capacity Preview
     feature on the account.
    :vartype enable_burst_capacity: bool
    :ivar minimal_tls_version: Indicates the minimum allowed Tls version. The default is Tls 1.0,
     except for Cassandra and Mongo API's, which only work with Tls 1.2. Known values are: "Tls",
     "Tls11", and "Tls12".
    :vartype minimal_tls_version: Union[str, "MinimalTlsVersion"]
    :ivar customer_managed_key_status: Indicates the status of the Customer Managed Key feature on
     the account. In case there are errors, the property provides troubleshooting guidance.
    :vartype customer_managed_key_status: str
    :ivar enable_priority_based_execution: Flag to indicate enabling/disabling of Priority Based
     Execution Preview feature on the account.
    :vartype enable_priority_based_execution: bool
    :ivar default_priority_level: Enum to indicate default Priority Level of request for Priority
     Based Execution. Known values are: "High" and "Low".
    :vartype default_priority_level: Union[str, "DefaultPriorityLevel"]
    :ivar enable_per_region_per_partition_autoscale: Flag to indicate enabling/disabling of
     Per-Region Per-partition autoscale Preview feature on the account.
    :vartype enable_per_region_per_partition_autoscale: bool
    :ivar enforce_hierarchical_partition_key_id_last_level: Flag to indicate enabling/disabling of
     hierarchical partition key ID last level enforcement on the account.
    :vartype enforce_hierarchical_partition_key_id_last_level: bool
    """

    consistencyPolicy: "ConsistencyPolicy"
    """The consistency policy for the Cosmos DB account."""
    locations: list["Location"]
    """An array that contains the georeplication locations enabled for the Cosmos DB account."""
    ipRules: list["IpAddressOrRange"]
    """List of IpRules."""
    isVirtualNetworkFilterEnabled: bool
    """Flag to indicate whether to enable/disable Virtual Network ACL rules."""
    enableAutomaticFailover: bool
    """Enables automatic failover of the write region in the rare event that the region is unavailable
     due to an outage. Automatic failover will result in a new write region for the account and is
     chosen based on the failover priorities configured for the account."""
    capabilities: list["Capability"]
    """List of Cosmos DB capabilities for the account."""
    virtualNetworkRules: list["VirtualNetworkRule"]
    """List of Virtual Network ACL rules configured for the Cosmos DB account."""
    enableMultipleWriteLocations: bool
    """Enables the account to write in multiple locations."""
    enableCassandraConnector: bool
    """Enables the cassandra connector on the Cosmos DB C* account."""
    connectorOffer: Union[str, "ConnectorOffer"]
    """The cassandra connector offer type for the Cosmos DB database C* account. \"Small\""""
    disableKeyBasedMetadataWriteAccess: bool
    """Disable write operations on metadata resources (databases, containers, throughput) via account
     keys."""
    keyVaultKeyUri: str
    """The URI of the key vault."""
    defaultIdentity: str
    """The default identity for accessing key vault used in features like customer managed keys. The
     default identity needs to be explicitly set by the users. It can be \"FirstPartyIdentity\",
     \"SystemAssignedIdentity\" and more."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """Whether requests from Public Network are allowed. Known values are: \"Enabled\", \"Disabled\",
     and \"SecuredByPerimeter\"."""
    enableFreeTier: bool
    """Flag to indicate whether Free Tier is enabled."""
    apiProperties: "ApiProperties"
    """API specific properties. Currently, supported only for MongoDB API."""
    enableAnalyticalStorage: bool
    """Flag to indicate whether to enable storage analytics."""
    analyticalStorageConfiguration: "AnalyticalStorageConfiguration"
    """Analytical storage specific properties."""
    backupPolicy: "BackupPolicy"
    """The object representing the policy for taking backups on an account."""
    cors: list["CorsPolicy"]
    """The CORS policy for the Cosmos DB database account."""
    networkAclBypass: Union[str, "NetworkAclBypass"]
    """Indicates what services are allowed to bypass firewall checks. Known values are: \"None\" and
     \"AzureServices\"."""
    networkAclBypassResourceIds: list[str]
    """An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account."""
    disableLocalAuth: bool
    """Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for
     authentication."""
    capacity: "Capacity"
    """The object that represents all properties related to capacity enforcement on an account."""
    keysMetadata: "DatabaseAccountKeysMetadata"
    """This property is ignored during the update operation, as the metadata is read-only. The object
     represents the metadata for the Account Keys of the Cosmos DB account."""
    enablePartitionMerge: bool
    """Flag to indicate enabling/disabling of Partition Merge feature on the account."""
    enableBurstCapacity: bool
    """Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account."""
    minimalTlsVersion: Union[str, "MinimalTlsVersion"]
    """Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and
     Mongo API's, which only work with Tls 1.2. Known values are: \"Tls\", \"Tls11\", and \"Tls12\"."""
    customerManagedKeyStatus: str
    """Indicates the status of the Customer Managed Key feature on the account. In case there are
     errors, the property provides troubleshooting guidance."""
    enablePriorityBasedExecution: bool
    """Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account."""
    defaultPriorityLevel: Union[str, "DefaultPriorityLevel"]
    """Enum to indicate default Priority Level of request for Priority Based Execution. Known values
     are: \"High\" and \"Low\"."""
    enablePerRegionPerPartitionAutoscale: bool
    """Flag to indicate enabling/disabling of Per-Region Per-partition autoscale Preview feature on
     the account."""
    enforceHierarchicalPartitionKeyIdLastLevel: bool
    """Flag to indicate enabling/disabling of hierarchical partition key ID last level enforcement on
     the account."""


class DatabaseRestoreResource(TypedDict, total=False):
    """Specific Databases to restore.

    :ivar database_name: The name of the database available for restore.
    :vartype database_name: str
    :ivar collection_names: The names of the collections available for restore.
    :vartype collection_names: list[str]
    """

    databaseName: str
    """The name of the database available for restore."""
    collectionNames: list[str]
    """The names of the collections available for restore."""


class DataCenterResource(ProxyResource):
    """A managed Cassandra data center.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties of a managed Cassandra data center.
    :vartype properties: "DataCenterResourceProperties"
    """

    properties: "DataCenterResourceProperties"
    """Properties of a managed Cassandra data center."""


class DataCenterResourceProperties(TypedDict, total=False):
    """Properties of a managed Cassandra data center.

    :ivar provisioning_state: The status of the resource at the time the operation was called.
     Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ManagedCassandraProvisioningState"]
    :ivar data_center_location: The region this data center should be created in.
    :vartype data_center_location: str
    :ivar delegated_subnet_id: Resource id of a subnet the nodes in this data center should have
     their network interfaces connected to. The subnet must be in the same region specified in
     'dataCenterLocation' and must be able to route to the subnet specified in the cluster's
     'delegatedManagementSubnetId' property. This resource id will be of the form
     '/subscriptions/<subscription id>/resourceGroups/<resource
     group>/providers/Microsoft.Network/virtualNetworks/<virtual network>/subnets/<subnet>'.
    :vartype delegated_subnet_id: str
    :ivar node_count: The number of nodes the data center should have. This is the desired number.
     After it is set, it may take some time for the data center to be scaled to match. To monitor
     the number of nodes and their status, use the fetchNodeStatus method on the cluster.
    :vartype node_count: int
    :ivar seed_nodes: IP addresses for seed nodes in this data center. This is for reference.
     Generally you will want to use the seedNodes property on the cluster, which aggregates the seed
     nodes from all data centers in the cluster.
    :vartype seed_nodes: list["SeedNode"]
    :ivar base64_encoded_cassandra_yaml_fragment: A fragment of a cassandra.yaml configuration file
     to be included in the cassandra.yaml for all nodes in this data center. The fragment should be
     Base64 encoded, and only a subset of keys are allowed.
    :vartype base64_encoded_cassandra_yaml_fragment: str
    :ivar managed_disk_customer_key_uri: Key uri to use for encryption of managed disks. Ensure the
     system assigned identity of the cluster has been assigned appropriate permissions(key
     get/wrap/unwrap permissions) on the key.
    :vartype managed_disk_customer_key_uri: str
    :ivar backup_storage_customer_key_uri: Indicates the Key Uri of the customer key to use for
     encryption of the backup storage account.
    :vartype backup_storage_customer_key_uri: str
    :ivar sku: Virtual Machine SKU used for data centers. Default value is Standard_DS14_v2.
    :vartype sku: str
    :ivar disk_sku: Disk SKU used for data centers. Default value is P30.
    :vartype disk_sku: str
    :ivar disk_capacity: Number of disks attached to each node. Default is 4.
    :vartype disk_capacity: int
    :ivar availability_zone: If the data center has Availability Zone support, apply it to the
     Virtual Machine ScaleSet that host the cassandra data center virtual machines.
    :vartype availability_zone: bool
    :ivar authentication_method_ldap_properties: Ldap authentication method properties. This
     feature is in preview.
    :vartype authentication_method_ldap_properties: "AuthenticationMethodLdapProperties"
    :ivar deallocated: Whether the data center has been deallocated.
    :vartype deallocated: bool
    :ivar provision_error: Error related to resource provisioning.
    :vartype provision_error: "CassandraError"
    :ivar private_endpoint_ip_address: Ip of the VPN Endpoint for this data center.
    :vartype private_endpoint_ip_address: str
    """

    provisioningState: Union[str, "ManagedCassandraProvisioningState"]
    """The status of the resource at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""
    dataCenterLocation: str
    """The region this data center should be created in."""
    delegatedSubnetId: str
    """Resource id of a subnet the nodes in this data center should have their network interfaces
     connected to. The subnet must be in the same region specified in 'dataCenterLocation' and must
     be able to route to the subnet specified in the cluster's 'delegatedManagementSubnetId'
     property. This resource id will be of the form '/subscriptions/<subscription
     id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<virtual
     network>/subnets/<subnet>'."""
    nodeCount: int
    """The number of nodes the data center should have. This is the desired number. After it is set,
     it may take some time for the data center to be scaled to match. To monitor the number of nodes
     and their status, use the fetchNodeStatus method on the cluster."""
    seedNodes: list["SeedNode"]
    """IP addresses for seed nodes in this data center. This is for reference. Generally you will want
     to use the seedNodes property on the cluster, which aggregates the seed nodes from all data
     centers in the cluster."""
    base64EncodedCassandraYamlFragment: str
    """A fragment of a cassandra.yaml configuration file to be included in the cassandra.yaml for all
     nodes in this data center. The fragment should be Base64 encoded, and only a subset of keys are
     allowed."""
    managedDiskCustomerKeyUri: str
    """Key uri to use for encryption of managed disks. Ensure the system assigned identity of the
     cluster has been assigned appropriate permissions(key get/wrap/unwrap permissions) on the key."""
    backupStorageCustomerKeyUri: str
    """Indicates the Key Uri of the customer key to use for encryption of the backup storage account."""
    sku: str
    """Virtual Machine SKU used for data centers. Default value is Standard_DS14_v2."""
    diskSku: str
    """Disk SKU used for data centers. Default value is P30."""
    diskCapacity: int
    """Number of disks attached to each node. Default is 4."""
    availabilityZone: bool
    """If the data center has Availability Zone support, apply it to the Virtual Machine ScaleSet that
     host the cassandra data center virtual machines."""
    authenticationMethodLdapProperties: "AuthenticationMethodLdapProperties"
    """Ldap authentication method properties. This feature is in preview."""
    deallocated: bool
    """Whether the data center has been deallocated."""
    provisionError: "CassandraError"
    """Error related to resource provisioning."""
    privateEndpointIpAddress: str
    """Ip of the VPN Endpoint for this data center."""


class RegionalServiceResource(TypedDict, total=False):
    """Resource for a regional service location.

    :ivar name: The regional service name.
    :vartype name: str
    :ivar location: The location name.
    :vartype location: str
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    """

    name: str
    """The regional service name."""
    location: str
    """The location name."""
    status: Union[str, "ServiceStatus"]
    """Describes the status of a service. Known values are: \"Creating\", \"Running\", \"Updating\",
     \"Deleting\", \"Error\", and \"Stopped\"."""


class DataTransferRegionalServiceResource(RegionalServiceResource):
    """Resource for a regional service location.

    :ivar name: The regional service name.
    :vartype name: str
    :ivar location: The location name.
    :vartype location: str
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    """


class DataTransferServiceResourceCreateUpdateProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties for Create or Update request for DataTransferServiceResource.

    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar service_type: ServiceType for the service. Required. DATA_TRANSFER.
    :vartype service_type: Literal[ServiceType.DATA_TRANSFER]
    """

    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    serviceType: Required[Literal[ServiceType.DATA_TRANSFER]]
    """ServiceType for the service. Required. DATA_TRANSFER."""


class DataTransferServiceResourceProperties(TypedDict, total=False):
    """Properties for DataTransferServiceResource.

    :ivar creation_time: Time of the last state change (ISO-8601 format).
    :vartype creation_time: str
    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar locations: An array that contains all of the locations for the service.
    :vartype locations: list["DataTransferRegionalServiceResource"]
    :ivar service_type: ServiceType for the service. Required. DATA_TRANSFER.
    :vartype service_type: Literal[ServiceType.DATA_TRANSFER]
    """

    creationTime: str
    """Time of the last state change (ISO-8601 format)."""
    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    status: Union[str, "ServiceStatus"]
    """Describes the status of a service. Known values are: \"Creating\", \"Running\", \"Updating\",
     \"Deleting\", \"Error\", and \"Stopped\"."""
    locations: list["DataTransferRegionalServiceResource"]
    """An array that contains all of the locations for the service."""
    serviceType: Required[Literal[ServiceType.DATA_TRANSFER]]
    """ServiceType for the service. Required. DATA_TRANSFER."""


class ErrorAdditionalInfo(TypedDict, total=False):
    """The resource management error additional info.

    :ivar type: The additional info type.
    :vartype type: str
    :ivar info: The additional info.
    :vartype info: Any
    """

    type: str
    """The additional info type."""
    info: Any
    """The additional info."""


class ErrorDetail(TypedDict, total=False):
    """The error detail.

    :ivar code: The error code.
    :vartype code: str
    :ivar message: The error message.
    :vartype message: str
    :ivar target: The error target.
    :vartype target: str
    :ivar details: The error details.
    :vartype details: list["ErrorDetail"]
    :ivar additional_info: The error additional info.
    :vartype additional_info: list["ErrorAdditionalInfo"]
    """

    code: str
    """The error code."""
    message: str
    """The error message."""
    target: str
    """The error target."""
    details: list["ErrorDetail"]
    """The error details."""
    additionalInfo: list["ErrorAdditionalInfo"]
    """The error additional info."""


class ErrorResponse(TypedDict, total=False):
    """Error response.

    :ivar error: The error object.
    :vartype error: "ErrorDetail"
    """

    error: "ErrorDetail"
    """The error object."""


class ErrorResponseAutoGenerated(TypedDict, total=False):
    """Error Response.

    :ivar code: Error code.
    :vartype code: str
    :ivar message: Error message indicating why the operation failed.
    :vartype message: str
    """

    code: str
    """Error code."""
    message: str
    """Error message indicating why the operation failed."""


class ExcludedPath(TypedDict, total=False):
    """ExcludedPath.

    :ivar path: The path for which the indexing behavior applies to. Index paths typically start
     with root and end with wildcard (/path/*).
    :vartype path: str
    """

    path: str
    """The path for which the indexing behavior applies to. Index paths typically start with root and
     end with wildcard (/path/*)."""


class FailoverPolicies(TypedDict, total=False):
    """The list of new failover policies for the failover priority change.

    :ivar failover_policies: List of failover policies. Required.
    :vartype failover_policies: list["FailoverPolicy"]
    """

    failoverPolicies: Required[list["FailoverPolicy"]]
    """List of failover policies. Required."""


class FailoverPolicy(TypedDict, total=False):
    """The failover policy for a given region of a database account.

    :ivar id: The unique identifier of the region in which the database account replicates to.
     Example: &lt;accountName&gt;-&lt;locationName&gt;.
    :vartype id: str
    :ivar location_name: The name of the region in which the database account exists.
    :vartype location_name: str
    :ivar failover_priority: The failover priority of the region. A failover priority of 0
     indicates a write region. The maximum value for a failover priority = (total number of regions
     - 1). Failover priority values must be unique for each of the regions in which the database
     account exists.
    :vartype failover_priority: int
    """

    id: str
    """The unique identifier of the region in which the database account replicates to. Example:
     &lt;accountName&gt;-&lt;locationName&gt;."""
    locationName: str
    """The name of the region in which the database account exists."""
    failoverPriority: int
    """The failover priority of the region. A failover priority of 0 indicates a write region. The
     maximum value for a failover priority = (total number of regions - 1). Failover priority values
     must be unique for each of the regions in which the database account exists."""


class TrackedResource(Resource):
    """Tracked Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    """

    tags: dict[str, str]
    """Resource tags."""
    location: Required[str]
    """The geo-location where the resource lives. Required."""


class FleetResource(TrackedResource):
    """An Azure Cosmos DB FleetResource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: Properties to update Azure Cosmos DB fleet resource.
    :vartype properties: "FleetResourceProperties"
    """

    properties: "FleetResourceProperties"
    """Properties to update Azure Cosmos DB fleet resource."""


class FleetResourceProperties(TypedDict, total=False):
    """Properties to update Azure Cosmos DB fleet resource.

    :ivar provisioning_state: A provisioning state of the Fleet. Known values are: "Uninitialized",
     "Initializing", "InternallyReady", "Online", "Deleting", "Succeeded", "Failed", "Canceled",
     "Updating", and "Creating".
    :vartype provisioning_state: Union[str, "Status"]
    """

    provisioningState: Union[str, "Status"]
    """A provisioning state of the Fleet. Known values are: \"Uninitialized\", \"Initializing\",
     \"InternallyReady\", \"Online\", \"Deleting\", \"Succeeded\", \"Failed\", \"Canceled\",
     \"Updating\", and \"Creating\"."""


class FleetResourceUpdate(TypedDict, total=False):
    """Represents a fleet resource for updates.

    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar properties: Properties to update Azure Cosmos DB fleet resource.
    :vartype properties: "FleetResourceProperties"
    """

    tags: dict[str, str]
    """Resource tags."""
    properties: "FleetResourceProperties"
    """Properties to update Azure Cosmos DB fleet resource."""


class FleetspaceAccountProperties(TypedDict, total=False):
    """An Azure Cosmos DB Global Database Account which is part of a Fleetspace Account.

    :ivar provisioning_state: A provisioning state of the Fleetspace Account. Known values are:
     "Uninitialized", "Initializing", "InternallyReady", "Online", "Deleting", "Succeeded",
     "Failed", "Canceled", "Updating", and "Creating".
    :vartype provisioning_state: Union[str, "Status"]
    :ivar global_database_account_properties: Configuration for fleetspace Account in the
     fleetspace.
    :vartype global_database_account_properties:
     "FleetspaceAccountPropertiesGlobalDatabaseAccountProperties"
    """

    provisioningState: Union[str, "Status"]
    """A provisioning state of the Fleetspace Account. Known values are: \"Uninitialized\",
     \"Initializing\", \"InternallyReady\", \"Online\", \"Deleting\", \"Succeeded\", \"Failed\",
     \"Canceled\", \"Updating\", and \"Creating\"."""
    globalDatabaseAccountProperties: "FleetspaceAccountPropertiesGlobalDatabaseAccountProperties"
    """Configuration for fleetspace Account in the fleetspace."""


class FleetspaceAccountPropertiesGlobalDatabaseAccountProperties(
    TypedDict, total=False
):  # pylint: disable=name-too-long
    """Configuration for fleetspace Account in the fleetspace.

    :ivar resource_id: The resource identifier of global database account in the Fleetspace
     Account.
    :vartype resource_id: str
    :ivar arm_location: The location of  global database account in the Fleetspace Account.
    :vartype arm_location: str
    """

    resourceId: str
    """The resource identifier of global database account in the Fleetspace Account."""
    armLocation: str
    """The location of  global database account in the Fleetspace Account."""


class FleetspaceAccountResource(ProxyResource):
    """An Azure Cosmos DB Fleetspace Account.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: An Azure Cosmos DB Global Database Account which is part of a Fleetspace
     Account.
    :vartype properties: "FleetspaceAccountProperties"
    """

    properties: "FleetspaceAccountProperties"
    """An Azure Cosmos DB Global Database Account which is part of a Fleetspace Account."""


class FleetspaceProperties(TypedDict, total=False):
    """Properties to update Azure Cosmos DB Fleetspace.

    :ivar provisioning_state: A provisioning state of the Fleetspace. Known values are:
     "Uninitialized", "Initializing", "InternallyReady", "Online", "Deleting", "Succeeded",
     "Failed", "Canceled", "Updating", and "Creating".
    :vartype provisioning_state: Union[str, "Status"]
    :ivar fleetspace_api_kind: The kind of API this fleetspace belongs to. Acceptable values:
     'NoSQL'. "NoSQL"
    :vartype fleetspace_api_kind: Union[str, "FleetspacePropertiesFleetspaceApiKind"]
    :ivar service_tier: Service Tier for the fleetspace. GeneralPurpose types refers to single
     write region accounts that can be added to this fleetspace, whereas BusinessCritical refers to
     multi write region. Known values are: "GeneralPurpose" and "BusinessCritical".
    :vartype service_tier: Union[str, "FleetspacePropertiesServiceTier"]
    :ivar data_regions: List of data regions assigned to the fleetspace. Eg [westus2].
    :vartype data_regions: list[str]
    :ivar throughput_pool_configuration: Configuration for throughput pool in the fleetspace.
    :vartype throughput_pool_configuration: "FleetspacePropertiesThroughputPoolConfiguration"
    """

    provisioningState: Union[str, "Status"]
    """A provisioning state of the Fleetspace. Known values are: \"Uninitialized\", \"Initializing\",
     \"InternallyReady\", \"Online\", \"Deleting\", \"Succeeded\", \"Failed\", \"Canceled\",
     \"Updating\", and \"Creating\"."""
    fleetspaceApiKind: Union[str, "FleetspacePropertiesFleetspaceApiKind"]
    """The kind of API this fleetspace belongs to. Acceptable values: 'NoSQL'. \"NoSQL\""""
    serviceTier: Union[str, "FleetspacePropertiesServiceTier"]
    """Service Tier for the fleetspace. GeneralPurpose types refers to single write region accounts
     that can be added to this fleetspace, whereas BusinessCritical refers to multi write region.
     Known values are: \"GeneralPurpose\" and \"BusinessCritical\"."""
    dataRegions: list[str]
    """List of data regions assigned to the fleetspace. Eg [westus2]."""
    throughputPoolConfiguration: "FleetspacePropertiesThroughputPoolConfiguration"
    """Configuration for throughput pool in the fleetspace."""


class FleetspacePropertiesThroughputPoolConfiguration(TypedDict, total=False):  # pylint: disable=name-too-long
    """Configuration for throughput pool in the fleetspace.

    :ivar min_throughput: Minimum throughput for the pool.
    :vartype min_throughput: int
    :ivar max_throughput: Maximum throughput for the pool.
    :vartype max_throughput: int
    :ivar dedicated_r_us: Total dedicated throughput (RU/s) for fleetspace. Represents the sum of
     all manual provisioned throughput and all autoscale max RU/s across all shared throughput
     databases and dedicated throughput containers across all accounts in the fleetspace for 1
     region.
    :vartype dedicated_r_us: int
    :ivar max_consumable_r_us: Maximum consumable throughput (RU/s) for fleetspace. Represents the
     maximum throughput that resources in the fleetspace can consume from the fleetspace's pool in 1
     region.
    :vartype max_consumable_r_us: int
    """

    minThroughput: int
    """Minimum throughput for the pool."""
    maxThroughput: int
    """Maximum throughput for the pool."""
    dedicatedRUs: int
    """Total dedicated throughput (RU/s) for fleetspace. Represents the sum of all manual provisioned
     throughput and all autoscale max RU/s across all shared throughput databases and dedicated
     throughput containers across all accounts in the fleetspace for 1 region."""
    maxConsumableRUs: int
    """Maximum consumable throughput (RU/s) for fleetspace. Represents the maximum throughput that
     resources in the fleetspace can consume from the fleetspace's pool in 1 region."""


class FleetspaceResource(ProxyResource):
    """An Azure Cosmos DB Fleetspace.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to update Azure Cosmos DB Fleetspace.
    :vartype properties: "FleetspaceProperties"
    """

    properties: "FleetspaceProperties"
    """Properties to update Azure Cosmos DB Fleetspace."""


class FleetspaceUpdate(TypedDict, total=False):
    """Represents a fleetspace resource for updates.

    :ivar properties: Properties of the fleetspace.
    :vartype properties: "FleetspaceProperties"
    """

    properties: "FleetspaceProperties"
    """Properties of the fleetspace."""


class FullTextIndexPath(TypedDict, total=False):
    """Represents the full text index path.

    :ivar path: The path to the full text field in the document. Required.
    :vartype path: str
    """

    path: Required[str]
    """The path to the full text field in the document. Required."""


class FullTextPath(TypedDict, total=False):
    """Represents the full text path specification.

    :ivar path: The path to the full text field in the document. Required.
    :vartype path: str
    :ivar language: The language of the full text field in the document.
    :vartype language: str
    """

    path: Required[str]
    """The path to the full text field in the document. Required."""
    language: str
    """The language of the full text field in the document."""


class FullTextPolicy(TypedDict, total=False):
    """Cosmos DB FullText Policy.

    :ivar default_language: The default language for a full text paths.
    :vartype default_language: str
    :ivar full_text_paths: List of FullText Paths.
    :vartype full_text_paths: list["FullTextPath"]
    """

    defaultLanguage: str
    """The default language for a full text paths."""
    fullTextPaths: list["FullTextPath"]
    """List of FullText Paths."""


class GraphAPIComputeRegionalServiceResource(RegionalServiceResource):
    """Resource for a regional service location.

    :ivar name: The regional service name.
    :vartype name: str
    :ivar location: The location name.
    :vartype location: str
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar graph_api_compute_endpoint: The regional endpoint for GraphAPICompute.
    :vartype graph_api_compute_endpoint: str
    """

    graphApiComputeEndpoint: str
    """The regional endpoint for GraphAPICompute."""


class GraphAPIComputeServiceResourceCreateUpdateProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties for Create or Update request for GraphAPIComputeServiceResource.

    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar service_type: ServiceType for the service. Required. GRAPH_API_COMPUTE.
    :vartype service_type: Literal[ServiceType.GRAPH_API_COMPUTE]
    """

    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    serviceType: Required[Literal[ServiceType.GRAPH_API_COMPUTE]]
    """ServiceType for the service. Required. GRAPH_API_COMPUTE."""


class GraphAPIComputeServiceResourceProperties(TypedDict, total=False):
    """Properties for GraphAPIComputeServiceResource.

    :ivar creation_time: Time of the last state change (ISO-8601 format).
    :vartype creation_time: str
    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar graph_api_compute_endpoint: GraphAPICompute endpoint for the service.
    :vartype graph_api_compute_endpoint: str
    :ivar locations: An array that contains all of the locations for the service.
    :vartype locations: list["GraphAPIComputeRegionalServiceResource"]
    :ivar service_type: ServiceType for the service. Required. GRAPH_API_COMPUTE.
    :vartype service_type: Literal[ServiceType.GRAPH_API_COMPUTE]
    """

    creationTime: str
    """Time of the last state change (ISO-8601 format)."""
    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    status: Union[str, "ServiceStatus"]
    """Describes the status of a service. Known values are: \"Creating\", \"Running\", \"Updating\",
     \"Deleting\", \"Error\", and \"Stopped\"."""
    graphApiComputeEndpoint: str
    """GraphAPICompute endpoint for the service."""
    locations: list["GraphAPIComputeRegionalServiceResource"]
    """An array that contains all of the locations for the service."""
    serviceType: Required[Literal[ServiceType.GRAPH_API_COMPUTE]]
    """ServiceType for the service. Required. GRAPH_API_COMPUTE."""


class GremlinDatabaseCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB Gremlin database.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB Gremlin database. Required.
    :vartype properties: "GremlinDatabaseCreateUpdateProperties"
    """

    properties: Required["GremlinDatabaseCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB Gremlin database. Required."""


class GremlinDatabaseCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB Gremlin database.

    :ivar resource: The standard JSON format of a Gremlin database. Required.
    :vartype resource: "GremlinDatabaseResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["GremlinDatabaseResource"]
    """The standard JSON format of a Gremlin database. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class GremlinDatabaseGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB SQL database.

    :ivar resource:
    :vartype resource: "GremlinDatabaseGetPropertiesResource"
    :ivar options:
    :vartype options: "GremlinDatabaseGetPropertiesOptions"
    """

    resource: "GremlinDatabaseGetPropertiesResource"
    options: "GremlinDatabaseGetPropertiesOptions"


class GremlinDatabaseGetPropertiesOptions(OptionsResource):
    """GremlinDatabaseGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class GremlinDatabaseResource(TypedDict, total=False):
    """Cosmos DB Gremlin database resource object.

    :ivar id: Name of the Cosmos DB Gremlin database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB Gremlin database. Required."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of resource creation. Known values are: \"Default\" and \"Restore\"."""


class GremlinDatabaseGetPropertiesResource(GremlinDatabaseResource):
    """GremlinDatabaseGetPropertiesResource.

    :ivar id: Name of the Cosmos DB Gremlin database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class GremlinDatabaseGetResults(ProxyResource):
    """An Azure Cosmos DB Gremlin database.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB SQL database.
    :vartype properties: "GremlinDatabaseGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "GremlinDatabaseGetProperties"
    """The properties of an Azure Cosmos DB SQL database."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class GremlinDatabaseRestoreResource(TypedDict, total=False):
    """Specific Gremlin Databases to restore.

    :ivar database_name: The name of the gremlin database available for restore.
    :vartype database_name: str
    :ivar graph_names: The names of the graphs available for restore.
    :vartype graph_names: list[str]
    """

    databaseName: str
    """The name of the gremlin database available for restore."""
    graphNames: list[str]
    """The names of the graphs available for restore."""


class GremlinGraphCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB Gremlin graph.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB Gremlin graph. Required.
    :vartype properties: "GremlinGraphCreateUpdateProperties"
    """

    properties: Required["GremlinGraphCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB Gremlin graph. Required."""


class GremlinGraphCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB Gremlin graph.

    :ivar resource: The standard JSON format of a Gremlin graph. Required.
    :vartype resource: "GremlinGraphResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["GremlinGraphResource"]
    """The standard JSON format of a Gremlin graph. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class GremlinGraphGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Gremlin graph.

    :ivar resource:
    :vartype resource: "GremlinGraphGetPropertiesResource"
    :ivar options:
    :vartype options: "GremlinGraphGetPropertiesOptions"
    """

    resource: "GremlinGraphGetPropertiesResource"
    options: "GremlinGraphGetPropertiesOptions"


class GremlinGraphGetPropertiesOptions(OptionsResource):
    """GremlinGraphGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class GremlinGraphResource(TypedDict, total=False):
    """Cosmos DB Gremlin graph resource object.

    :ivar id: Name of the Cosmos DB Gremlin graph. Required.
    :vartype id: str
    :ivar indexing_policy: The configuration of the indexing policy. By default, the indexing is
     automatic for all document paths within the graph.
    :vartype indexing_policy: "IndexingPolicy"
    :ivar partition_key: The configuration of the partition key to be used for partitioning data
     into multiple partitions.
    :vartype partition_key: "ContainerPartitionKey"
    :ivar default_ttl: Default time to live.
    :vartype default_ttl: int
    :ivar unique_key_policy: The unique key policy configuration for specifying uniqueness
     constraints on documents in the collection in the Azure Cosmos DB service.
    :vartype unique_key_policy: "UniqueKeyPolicy"
    :ivar conflict_resolution_policy: The conflict resolution policy for the graph.
    :vartype conflict_resolution_policy: "ConflictResolutionPolicy"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB Gremlin graph. Required."""
    indexingPolicy: "IndexingPolicy"
    """The configuration of the indexing policy. By default, the indexing is automatic for all
     document paths within the graph."""
    partitionKey: "ContainerPartitionKey"
    """The configuration of the partition key to be used for partitioning data into multiple
     partitions."""
    defaultTtl: int
    """Default time to live."""
    uniqueKeyPolicy: "UniqueKeyPolicy"
    """The unique key policy configuration for specifying uniqueness constraints on documents in the
     collection in the Azure Cosmos DB service."""
    conflictResolutionPolicy: "ConflictResolutionPolicy"
    """The conflict resolution policy for the graph."""
    analyticalStorageTtl: int
    """Analytical TTL."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of resource creation. Known values are: \"Default\" and \"Restore\"."""


class GremlinGraphGetPropertiesResource(GremlinGraphResource):
    """GremlinGraphGetPropertiesResource.

    :ivar id: Name of the Cosmos DB Gremlin graph. Required.
    :vartype id: str
    :ivar indexing_policy: The configuration of the indexing policy. By default, the indexing is
     automatic for all document paths within the graph.
    :vartype indexing_policy: "IndexingPolicy"
    :ivar partition_key: The configuration of the partition key to be used for partitioning data
     into multiple partitions.
    :vartype partition_key: "ContainerPartitionKey"
    :ivar default_ttl: Default time to live.
    :vartype default_ttl: int
    :ivar unique_key_policy: The unique key policy configuration for specifying uniqueness
     constraints on documents in the collection in the Azure Cosmos DB service.
    :vartype unique_key_policy: "UniqueKeyPolicy"
    :ivar conflict_resolution_policy: The conflict resolution policy for the graph.
    :vartype conflict_resolution_policy: "ConflictResolutionPolicy"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class GremlinGraphGetResults(ProxyResource):
    """An Azure Cosmos DB Gremlin graph.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB Gremlin graph.
    :vartype properties: "GremlinGraphGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "GremlinGraphGetProperties"
    """The properties of an Azure Cosmos DB Gremlin graph."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class GremlinRoleAssignmentResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Gremlin Role Assignment.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Gremlin Role Assignment.
    :vartype properties: "GremlinRoleAssignmentResourceProperties"
    """

    properties: "GremlinRoleAssignmentResourceProperties"
    """Properties to create and update an Azure Cosmos DB Gremlin Role Assignment."""


class GremlinRoleAssignmentResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB Gremlin Role Assignment resource object.

    :ivar role_definition_id: The unique identifier for the associated Role Definition.
    :vartype role_definition_id: str
    :ivar scope: The data plane resource path for which access is being granted through this
     Gremlin Role Assignment.
    :vartype scope: str
    :ivar principal_id: The unique identifier for the associated AAD principal in the AAD graph to
     which access is being granted through this Gremlin Role Assignment. Tenant ID for the principal
     is inferred using the tenant associated with the subscription.
    :vartype principal_id: str
    :ivar provisioning_state: Provisioning state of the resource.
    :vartype provisioning_state: str
    """

    roleDefinitionId: str
    """The unique identifier for the associated Role Definition."""
    scope: str
    """The data plane resource path for which access is being granted through this Gremlin Role
     Assignment."""
    principalId: str
    """The unique identifier for the associated AAD principal in the AAD graph to which access is
     being granted through this Gremlin Role Assignment. Tenant ID for the principal is inferred
     using the tenant associated with the subscription."""
    provisioningState: str
    """Provisioning state of the resource."""


class GremlinRoleDefinitionResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Gremlin Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Gremlin Role Definition.
    :vartype properties: "GremlinRoleDefinitionResourceProperties"
    """

    properties: "GremlinRoleDefinitionResourceProperties"
    """Properties to create and update an Azure Cosmos DB Gremlin Role Definition."""


class GremlinRoleDefinitionResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB Gremlin Role Definition resource object.

    :ivar id: The path id for the Role Definition.
    :vartype id: str
    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "RoleDefinitionType"]
    :ivar assignable_scopes: A set of fully qualified Scopes at or below which Gremlin Role
     Assignments may be created using this Role Definition. This will allow application of this Role
     Definition on the entire database account or any underlying Database / Collection. Must have at
     least one element. Scopes higher than Database account are not enforceable as assignable
     Scopes. Note that resources referenced in assignable Scopes need not exist.
    :vartype assignable_scopes: list[str]
    :ivar permissions: The set of operations allowed through this Role Definition.
    :vartype permissions: list["Permission"]
    """

    id: str
    """The path id for the Role Definition."""
    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "RoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    assignableScopes: list[str]
    """A set of fully qualified Scopes at or below which Gremlin Role Assignments may be created using
     this Role Definition. This will allow application of this Role Definition on the entire
     database account or any underlying Database / Collection. Must have at least one element.
     Scopes higher than Database account are not enforceable as assignable Scopes. Note that
     resources referenced in assignable Scopes need not exist."""
    permissions: list["Permission"]
    """The set of operations allowed through this Role Definition."""


class IncludedPath(TypedDict, total=False):
    """The paths that are included in indexing.

    :ivar path: The path for which the indexing behavior applies to. Index paths typically start
     with root and end with wildcard (/path/*).
    :vartype path: str
    :ivar indexes: List of indexes for this path.
    :vartype indexes: list["Indexes"]
    """

    path: str
    """The path for which the indexing behavior applies to. Index paths typically start with root and
     end with wildcard (/path/*)."""
    indexes: list["Indexes"]
    """List of indexes for this path."""


class Indexes(TypedDict, total=False):
    """The indexes for the path.

    :ivar data_type: The datatype for which the indexing behavior is applied to. Known values are:
     "String", "Number", "Point", "Polygon", "LineString", and "MultiPolygon".
    :vartype data_type: Union[str, "DataType"]
    :ivar precision: The precision of the index. -1 is maximum precision.
    :vartype precision: int
    :ivar kind: Indicates the type of index. Known values are: "Hash", "Range", and "Spatial".
    :vartype kind: Union[str, "IndexKind"]
    """

    dataType: Union[str, "DataType"]
    """The datatype for which the indexing behavior is applied to. Known values are: \"String\",
     \"Number\", \"Point\", \"Polygon\", \"LineString\", and \"MultiPolygon\"."""
    precision: int
    """The precision of the index. -1 is maximum precision."""
    kind: Union[str, "IndexKind"]
    """Indicates the type of index. Known values are: \"Hash\", \"Range\", and \"Spatial\"."""


class IndexingPolicy(TypedDict, total=False):
    """Cosmos DB indexing policy.

    :ivar automatic: Indicates if the indexing policy is automatic.
    :vartype automatic: bool
    :ivar indexing_mode: Indicates the indexing mode. Known values are: "consistent", "lazy", and
     "none".
    :vartype indexing_mode: Union[str, "IndexingMode"]
    :ivar included_paths: List of paths to include in the indexing.
    :vartype included_paths: list["IncludedPath"]
    :ivar excluded_paths: List of paths to exclude from indexing.
    :vartype excluded_paths: list["ExcludedPath"]
    :ivar composite_indexes: List of composite path list.
    :vartype composite_indexes: list[list["CompositePath"]]
    :ivar spatial_indexes: List of spatial specifics.
    :vartype spatial_indexes: list["SpatialSpec"]
    :ivar vector_indexes: List of paths to include in the vector indexing.
    :vartype vector_indexes: list["VectorIndex"]
    :ivar full_text_indexes: List of paths to include in the full text indexing.
    :vartype full_text_indexes: list["FullTextIndexPath"]
    """

    automatic: bool
    """Indicates if the indexing policy is automatic."""
    indexingMode: Union[str, "IndexingMode"]
    """Indicates the indexing mode. Known values are: \"consistent\", \"lazy\", and \"none\"."""
    includedPaths: list["IncludedPath"]
    """List of paths to include in the indexing."""
    excludedPaths: list["ExcludedPath"]
    """List of paths to exclude from indexing."""
    compositeIndexes: list[list["CompositePath"]]
    """List of composite path list."""
    spatialIndexes: list["SpatialSpec"]
    """List of spatial specifics."""
    vectorIndexes: list["VectorIndex"]
    """List of paths to include in the vector indexing."""
    fullTextIndexes: list["FullTextIndexPath"]
    """List of paths to include in the full text indexing."""


class IpAddressOrRange(TypedDict, total=False):
    """IpAddressOrRange object.

    :ivar ip_address_or_range: A single IPv4 address or a single IPv4 address range in CIDR format.
     Provided IPs must be well-formatted and cannot be contained in one of the following ranges:
     10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16, since these are not enforceable by
     the IP address filter. Example of valid inputs: “23.40.210.245” or “23.40.210.0/8”.
    :vartype ip_address_or_range: str
    """

    ipAddressOrRange: str
    """A single IPv4 address or a single IPv4 address range in CIDR format. Provided IPs must be
     well-formatted and cannot be contained in one of the following ranges: 10.0.0.0/8,
     100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16, since these are not enforceable by the IP address
     filter. Example of valid inputs: “23.40.210.245” or “23.40.210.0/8”."""


class KeyWrapMetadata(TypedDict, total=False):
    """Represents key wrap metadata that a key wrapping provider can use to wrap/unwrap a client
    encryption key.

    :ivar name: The name of associated KeyEncryptionKey (aka CustomerManagedKey).
    :vartype name: str
    :ivar type: ProviderName of KeyStoreProvider.
    :vartype type: str
    :ivar value: Reference / link to the KeyEncryptionKey.
    :vartype value: str
    :ivar algorithm: Algorithm used in wrapping and unwrapping of the data encryption key.
    :vartype algorithm: str
    """

    name: str
    """The name of associated KeyEncryptionKey (aka CustomerManagedKey)."""
    type: str
    """ProviderName of KeyStoreProvider."""
    value: str
    """Reference / link to the KeyEncryptionKey."""
    algorithm: str
    """Algorithm used in wrapping and unwrapping of the data encryption key."""


class Location(TypedDict, total=False):
    """A region in which the Azure Cosmos DB database account is deployed.

    :ivar id: The unique identifier of the region within the database account. Example:
     &lt;accountName&gt;-&lt;locationName&gt;.
    :vartype id: str
    :ivar location_name: The name of the region.
    :vartype location_name: str
    :ivar document_endpoint: The connection endpoint for the specific region. Example:
     https://&lt;accountName&gt;-&lt;locationName&gt;.documents.azure.com:443/.
    :vartype document_endpoint: str
    :ivar provisioning_state: The provisioning state of the resource.
    :vartype provisioning_state: str
    :ivar failover_priority: The failover priority of the region. A failover priority of 0
     indicates a write region. The maximum value for a failover priority = (total number of regions
     - 1). Failover priority values must be unique for each of the regions in which the database
     account exists.
    :vartype failover_priority: int
    :ivar is_zone_redundant: Flag to indicate whether or not this region is an AvailabilityZone
     region.
    :vartype is_zone_redundant: bool
    """

    id: str
    """The unique identifier of the region within the database account. Example:
     &lt;accountName&gt;-&lt;locationName&gt;."""
    locationName: str
    """The name of the region."""
    documentEndpoint: str
    """The connection endpoint for the specific region. Example:
     https://&lt;accountName&gt;-&lt;locationName&gt;.documents.azure.com:443/."""
    provisioningState: str
    """The provisioning state of the resource."""
    failoverPriority: int
    """The failover priority of the region. A failover priority of 0 indicates a write region. The
     maximum value for a failover priority = (total number of regions - 1). Failover priority values
     must be unique for each of the regions in which the database account exists."""
    isZoneRedundant: bool
    """Flag to indicate whether or not this region is an AvailabilityZone region."""


class LocationGetResult(ProxyResource):
    """Cosmos DB location get result.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Cosmos DB location metadata.
    :vartype properties: "LocationProperties"
    """

    properties: "LocationProperties"
    """Cosmos DB location metadata."""


class LocationProperties(TypedDict, total=False):
    """Cosmos DB location metadata.

    :ivar supports_availability_zone: Flag indicating whether the location supports availability
     zones or not.
    :vartype supports_availability_zone: bool
    :ivar is_residency_restricted: Flag indicating whether the location is residency sensitive.
    :vartype is_residency_restricted: bool
    :ivar backup_storage_redundancies: The properties of available backup storage redundancies.
    :vartype backup_storage_redundancies: list[Union[str, "BackupStorageRedundancy"]]
    :ivar is_subscription_region_access_allowed_for_regular: Flag indicating whether the
     subscription have access in region for Non-Availability Zones.
    :vartype is_subscription_region_access_allowed_for_regular: bool
    :ivar is_subscription_region_access_allowed_for_az: Flag indicating whether the subscription
     have access in region for Availability Zones(Az).
    :vartype is_subscription_region_access_allowed_for_az: bool
    :ivar status: Enum to indicate current buildout status of the region. Known values are:
     "Uninitialized", "Initializing", "InternallyReady", "Online", "Deleting", "Succeeded",
     "Failed", "Canceled", "Updating", and "Creating".
    :vartype status: Union[str, "Status"]
    """

    supportsAvailabilityZone: bool
    """Flag indicating whether the location supports availability zones or not."""
    isResidencyRestricted: bool
    """Flag indicating whether the location is residency sensitive."""
    backupStorageRedundancies: list[Union[str, "BackupStorageRedundancy"]]
    """The properties of available backup storage redundancies."""
    isSubscriptionRegionAccessAllowedForRegular: bool
    """Flag indicating whether the subscription have access in region for Non-Availability Zones."""
    isSubscriptionRegionAccessAllowedForAz: bool
    """Flag indicating whether the subscription have access in region for Availability Zones(Az)."""
    status: Union[str, "Status"]
    """Enum to indicate current buildout status of the region. Known values are: \"Uninitialized\",
     \"Initializing\", \"InternallyReady\", \"Online\", \"Deleting\", \"Succeeded\", \"Failed\",
     \"Canceled\", \"Updating\", and \"Creating\"."""


class ManagedCassandraManagedServiceIdentity(TypedDict, total=False):
    """Identity for the resource.

    :ivar principal_id: The object id of the identity resource.
    :vartype principal_id: str
    :ivar tenant_id: The tenant id of the resource.
    :vartype tenant_id: str
    :ivar type: The type of the resource. Known values are: "SystemAssigned" and "None".
    :vartype type: Union[str, "ManagedCassandraResourceIdentityType"]
    """

    principalId: str
    """The object id of the identity resource."""
    tenantId: str
    """The tenant id of the resource."""
    type: Union[str, "ManagedCassandraResourceIdentityType"]
    """The type of the resource. Known values are: \"SystemAssigned\" and \"None\"."""


class ManagedCassandraReaperStatus(TypedDict, total=False):
    """ManagedCassandraReaperStatus.

    :ivar healthy:
    :vartype healthy: bool
    :ivar repair_run_ids: Dictionary of <string>.
    :vartype repair_run_ids: dict[str, str]
    :ivar repair_schedules: Dictionary of <string>.
    :vartype repair_schedules: dict[str, str]
    """

    healthy: bool
    repairRunIds: dict[str, str]
    """Dictionary of <string>."""
    repairSchedules: dict[str, str]
    """Dictionary of <string>."""


class ManagedServiceIdentity(TypedDict, total=False):
    """Identity for the resource.

    :ivar principal_id: The principal id of the system assigned identity. This property will only
     be provided for a system assigned identity.
    :vartype principal_id: str
    :ivar tenant_id: The tenant id of the system assigned identity. This property will only be
     provided for a system assigned identity.
    :vartype tenant_id: str
    :ivar type: The type of identity used for the resource. The type 'SystemAssigned,UserAssigned'
     includes both an implicitly created identity and a set of user assigned identities. The type
     'None' will remove any identities from the service. Known values are: "SystemAssigned",
     "UserAssigned", "SystemAssigned,UserAssigned", and "None".
    :vartype type: Union[str, "ResourceIdentityType"]
    :ivar user_assigned_identities: The list of user identities associated with resource. The user
     identity dictionary key references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
    :vartype user_assigned_identities: dict[str, "ManagedServiceIdentityUserAssignedIdentity"]
    """

    principalId: str
    """The principal id of the system assigned identity. This property will only be provided for a
     system assigned identity."""
    tenantId: str
    """The tenant id of the system assigned identity. This property will only be provided for a system
     assigned identity."""
    type: Union[str, "ResourceIdentityType"]
    """The type of identity used for the resource. The type 'SystemAssigned,UserAssigned' includes
     both an implicitly created identity and a set of user assigned identities. The type 'None' will
     remove any identities from the service. Known values are: \"SystemAssigned\", \"UserAssigned\",
     \"SystemAssigned,UserAssigned\", and \"None\"."""
    userAssignedIdentities: dict[str, "ManagedServiceIdentityUserAssignedIdentity"]
    """The list of user identities associated with resource. The user identity dictionary key
     references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'."""


class ManagedServiceIdentityUserAssignedIdentity(TypedDict, total=False):  # pylint: disable=name-too-long
    """ManagedServiceIdentityUserAssignedIdentity.

    :ivar principal_id: The principal id of user assigned identity.
    :vartype principal_id: str
    :ivar client_id: The client id of user assigned identity.
    :vartype client_id: str
    """

    principalId: str
    """The principal id of user assigned identity."""
    clientId: str
    """The client id of user assigned identity."""


class MaterializedViewsBuilderRegionalServiceResource(RegionalServiceResource):  # pylint: disable=name-too-long
    """Resource for a regional service location.

    :ivar name: The regional service name.
    :vartype name: str
    :ivar location: The location name.
    :vartype location: str
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    """


class MaterializedViewsBuilderServiceResourceCreateUpdateProperties(
    TypedDict, total=False
):  # pylint: disable=name-too-long
    """Properties for Create or Update request for MaterializedViewsBuilderServiceResource.

    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar service_type: ServiceType for the service. Required. MATERIALIZED_VIEWS_BUILDER.
    :vartype service_type: Literal[ServiceType.MATERIALIZED_VIEWS_BUILDER]
    """

    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    serviceType: Required[Literal[ServiceType.MATERIALIZED_VIEWS_BUILDER]]
    """ServiceType for the service. Required. MATERIALIZED_VIEWS_BUILDER."""


class MaterializedViewsBuilderServiceResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties for MaterializedViewsBuilderServiceResource.

    :ivar creation_time: Time of the last state change (ISO-8601 format).
    :vartype creation_time: str
    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar locations: An array that contains all of the locations for the service.
    :vartype locations: list["MaterializedViewsBuilderRegionalServiceResource"]
    :ivar service_type: ServiceType for the service. Required. MATERIALIZED_VIEWS_BUILDER.
    :vartype service_type: Literal[ServiceType.MATERIALIZED_VIEWS_BUILDER]
    """

    creationTime: str
    """Time of the last state change (ISO-8601 format)."""
    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    status: Union[str, "ServiceStatus"]
    """Describes the status of a service. Known values are: \"Creating\", \"Running\", \"Updating\",
     \"Deleting\", \"Error\", and \"Stopped\"."""
    locations: list["MaterializedViewsBuilderRegionalServiceResource"]
    """An array that contains all of the locations for the service."""
    serviceType: Required[Literal[ServiceType.MATERIALIZED_VIEWS_BUILDER]]
    """ServiceType for the service. Required. MATERIALIZED_VIEWS_BUILDER."""


class Metric(TypedDict, total=False):
    """Metric data.

    :ivar start_time: The start time for the metric (ISO-8601 format).
    :vartype start_time: str
    :ivar end_time: The end time for the metric (ISO-8601 format).
    :vartype end_time: str
    :ivar time_grain: The time grain to be used to summarize the metric values.
    :vartype time_grain: str
    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    :ivar metric_values: The metric values for the specified time window and timestep.
    :vartype metric_values: list["MetricValue"]
    """

    startTime: str
    """The start time for the metric (ISO-8601 format)."""
    endTime: str
    """The end time for the metric (ISO-8601 format)."""
    timeGrain: str
    """The time grain to be used to summarize the metric values."""
    unit: Union[str, "UnitType"]
    """The unit of the metric. Known values are: \"Count\", \"Bytes\", \"Seconds\", \"Percent\",
     \"CountPerSecond\", \"BytesPerSecond\", and \"Milliseconds\"."""
    name: "MetricName"
    """The name information for the metric."""
    metricValues: list["MetricValue"]
    """The metric values for the specified time window and timestep."""


class MetricAvailability(TypedDict, total=False):
    """The availability of the metric.

    :ivar time_grain: The time grain to be used to summarize the metric values.
    :vartype time_grain: str
    :ivar retention: The retention for the metric values.
    :vartype retention: str
    """

    timeGrain: str
    """The time grain to be used to summarize the metric values."""
    retention: str
    """The retention for the metric values."""


class MetricDefinition(TypedDict, total=False):
    """The definition of a metric.

    :ivar metric_availabilities: The list of metric availabilities for the account.
    :vartype metric_availabilities: list["MetricAvailability"]
    :ivar primary_aggregation_type: The primary aggregation type of the metric. Known values are:
     "None", "Average", "Total", "Minimum", "Maximum", and "Last".
    :vartype primary_aggregation_type: Union[str, "PrimaryAggregationType"]
    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar resource_uri: The resource uri of the database.
    :vartype resource_uri: str
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    """

    metricAvailabilities: list["MetricAvailability"]
    """The list of metric availabilities for the account."""
    primaryAggregationType: Union[str, "PrimaryAggregationType"]
    """The primary aggregation type of the metric. Known values are: \"None\", \"Average\", \"Total\",
     \"Minimum\", \"Maximum\", and \"Last\"."""
    unit: Union[str, "UnitType"]
    """The unit of the metric. Known values are: \"Count\", \"Bytes\", \"Seconds\", \"Percent\",
     \"CountPerSecond\", \"BytesPerSecond\", and \"Milliseconds\"."""
    resourceUri: str
    """The resource uri of the database."""
    name: "MetricName"
    """The name information for the metric."""


class MetricName(TypedDict, total=False):
    """A metric name.

    :ivar value: The name of the metric.
    :vartype value: str
    :ivar localized_value: The friendly name of the metric.
    :vartype localized_value: str
    """

    value: str
    """The name of the metric."""
    localizedValue: str
    """The friendly name of the metric."""


class MetricValue(TypedDict, total=False):
    """Represents metrics values.

    :ivar count: The number of values for the metric.
    :vartype count: int
    :ivar average: The average value of the metric.
    :vartype average: float
    :ivar maximum: The max value of the metric.
    :vartype maximum: float
    :ivar minimum: The min value of the metric.
    :vartype minimum: float
    :ivar timestamp: The metric timestamp (ISO-8601 format).
    :vartype timestamp: str
    :ivar total: The total value of the metric.
    :vartype total: float
    """

    _count: int
    """The number of values for the metric."""
    average: float
    """The average value of the metric."""
    maximum: float
    """The max value of the metric."""
    minimum: float
    """The min value of the metric."""
    timestamp: str
    """The metric timestamp (ISO-8601 format)."""
    total: float
    """The total value of the metric."""


class MongoDBCollectionCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB MongoDB collection.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB MongoDB collection. Required.
    :vartype properties: "MongoDBCollectionCreateUpdateProperties"
    """

    properties: Required["MongoDBCollectionCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB MongoDB collection. Required."""


class MongoDBCollectionCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB MongoDB collection.

    :ivar resource: The standard JSON format of a MongoDB collection. Required.
    :vartype resource: "MongoDBCollectionResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["MongoDBCollectionResource"]
    """The standard JSON format of a MongoDB collection. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class MongoDBCollectionGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB MongoDB collection.

    :ivar resource:
    :vartype resource: "MongoDBCollectionGetPropertiesResource"
    :ivar options:
    :vartype options: "MongoDBCollectionGetPropertiesOptions"
    """

    resource: "MongoDBCollectionGetPropertiesResource"
    options: "MongoDBCollectionGetPropertiesOptions"


class MongoDBCollectionGetPropertiesOptions(OptionsResource):
    """MongoDBCollectionGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class MongoDBCollectionResource(TypedDict, total=False):
    """Cosmos DB MongoDB collection resource object.

    :ivar id: Name of the Cosmos DB MongoDB collection. Required.
    :vartype id: str
    :ivar shard_key: A key-value pair of shard keys to be applied for the request.
    :vartype shard_key: dict[str, str]
    :ivar indexes: List of index keys.
    :vartype indexes: list["MongoIndex"]
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB MongoDB collection. Required."""
    shardKey: dict[str, str]
    """A key-value pair of shard keys to be applied for the request."""
    indexes: list["MongoIndex"]
    """List of index keys."""
    analyticalStorageTtl: int
    """Analytical TTL."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of resource creation. Known values are: \"Default\" and \"Restore\"."""


class MongoDBCollectionGetPropertiesResource(MongoDBCollectionResource):
    """MongoDBCollectionGetPropertiesResource.

    :ivar id: Name of the Cosmos DB MongoDB collection. Required.
    :vartype id: str
    :ivar shard_key: A key-value pair of shard keys to be applied for the request.
    :vartype shard_key: dict[str, str]
    :ivar indexes: List of index keys.
    :vartype indexes: list["MongoIndex"]
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of resource creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class MongoDBCollectionGetResults(ProxyResource):
    """An Azure Cosmos DB MongoDB collection.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB MongoDB collection.
    :vartype properties: "MongoDBCollectionGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "MongoDBCollectionGetProperties"
    """The properties of an Azure Cosmos DB MongoDB collection."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class MongoDBDatabaseCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB MongoDB database.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB MongoDB database. Required.
    :vartype properties: "MongoDBDatabaseCreateUpdateProperties"
    """

    properties: Required["MongoDBDatabaseCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB MongoDB database. Required."""


class MongoDBDatabaseCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB MongoDB database.

    :ivar resource: The standard JSON format of a MongoDB database. Required.
    :vartype resource: "MongoDBDatabaseResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["MongoDBDatabaseResource"]
    """The standard JSON format of a MongoDB database. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class MongoDBDatabaseGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB MongoDB database.

    :ivar resource:
    :vartype resource: "MongoDBDatabaseGetPropertiesResource"
    :ivar options:
    :vartype options: "MongoDBDatabaseGetPropertiesOptions"
    """

    resource: "MongoDBDatabaseGetPropertiesResource"
    options: "MongoDBDatabaseGetPropertiesOptions"


class MongoDBDatabaseGetPropertiesOptions(OptionsResource):
    """MongoDBDatabaseGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class MongoDBDatabaseResource(TypedDict, total=False):
    """Cosmos DB MongoDB database resource object.

    :ivar id: Name of the Cosmos DB MongoDB database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB MongoDB database. Required."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""


class MongoDBDatabaseGetPropertiesResource(MongoDBDatabaseResource):
    """MongoDBDatabaseGetPropertiesResource.

    :ivar id: Name of the Cosmos DB MongoDB database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class MongoDBDatabaseGetResults(ProxyResource):
    """An Azure Cosmos DB MongoDB database.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB MongoDB database.
    :vartype properties: "MongoDBDatabaseGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "MongoDBDatabaseGetProperties"
    """The properties of an Azure Cosmos DB MongoDB database."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class MongoIndex(TypedDict, total=False):
    """Cosmos DB MongoDB collection index key.

    :ivar key: Cosmos DB MongoDB collection index keys.
    :vartype key: "MongoIndexKeys"
    :ivar options: Cosmos DB MongoDB collection index key options.
    :vartype options: "MongoIndexOptions"
    """

    key: "MongoIndexKeys"
    """Cosmos DB MongoDB collection index keys."""
    options: "MongoIndexOptions"
    """Cosmos DB MongoDB collection index key options."""


class MongoIndexKeys(TypedDict, total=False):
    """Cosmos DB MongoDB collection resource object.

    :ivar keys_property: List of keys for each MongoDB collection in the Azure Cosmos DB service.
    :vartype keys_property: list[str]
    """

    keys: list[str]
    """List of keys for each MongoDB collection in the Azure Cosmos DB service."""


class MongoIndexOptions(TypedDict, total=False):
    """Cosmos DB MongoDB collection index options.

    :ivar expire_after_seconds: Expire after seconds.
    :vartype expire_after_seconds: int
    :ivar unique: Is unique or not.
    :vartype unique: bool
    """

    expireAfterSeconds: int
    """Expire after seconds."""
    unique: bool
    """Is unique or not."""


class MongoMIRoleAssignmentResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB MongoMI Role Assignment.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB MongoMI Role Assignment.
    :vartype properties: "MongoMIRoleAssignmentResourceProperties"
    """

    properties: "MongoMIRoleAssignmentResourceProperties"
    """Properties to create and update an Azure Cosmos DB MongoMI Role Assignment."""


class MongoMIRoleAssignmentResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB MongoMI Role Assignment resource object.

    :ivar role_definition_id: The unique identifier for the associated Role Definition.
    :vartype role_definition_id: str
    :ivar scope: The data plane resource path for which access is being granted through this
     MongoMI Role Assignment.
    :vartype scope: str
    :ivar principal_id: The unique identifier for the associated AAD principal in the AAD graph to
     which access is being granted through this MongoMI Role Assignment. Tenant ID for the principal
     is inferred using the tenant associated with the subscription.
    :vartype principal_id: str
    :ivar provisioning_state: Provisioning state of the resource.
    :vartype provisioning_state: str
    """

    roleDefinitionId: str
    """The unique identifier for the associated Role Definition."""
    scope: str
    """The data plane resource path for which access is being granted through this MongoMI Role
     Assignment."""
    principalId: str
    """The unique identifier for the associated AAD principal in the AAD graph to which access is
     being granted through this MongoMI Role Assignment. Tenant ID for the principal is inferred
     using the tenant associated with the subscription."""
    provisioningState: str
    """Provisioning state of the resource."""


class MongoMIRoleDefinitionResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB MongoMI Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB MongoMI Role Definition.
    :vartype properties: "MongoMIRoleDefinitionResourceProperties"
    """

    properties: "MongoMIRoleDefinitionResourceProperties"
    """Properties to create and update an Azure Cosmos DB MongoMI Role Definition."""


class MongoMIRoleDefinitionResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB MongoMI Role Definition resource object.

    :ivar id: The path id for the Role Definition.
    :vartype id: str
    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "RoleDefinitionType"]
    :ivar assignable_scopes: A set of fully qualified Scopes at or below which MongoMI Role
     Assignments may be created using this Role Definition. This will allow application of this Role
     Definition on the entire database account or any underlying Database / Collection. Must have at
     least one element. Scopes higher than Database account are not enforceable as assignable
     Scopes. Note that resources referenced in assignable Scopes need not exist.
    :vartype assignable_scopes: list[str]
    :ivar permissions: The set of operations allowed through this Role Definition.
    :vartype permissions: list["Permission"]
    """

    id: str
    """The path id for the Role Definition."""
    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "RoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    assignableScopes: list[str]
    """A set of fully qualified Scopes at or below which MongoMI Role Assignments may be created using
     this Role Definition. This will allow application of this Role Definition on the entire
     database account or any underlying Database / Collection. Must have at least one element.
     Scopes higher than Database account are not enforceable as assignable Scopes. Note that
     resources referenced in assignable Scopes need not exist."""
    permissions: list["Permission"]
    """The set of operations allowed through this Role Definition."""


class MongoRoleDefinitionCreateUpdateParameters(TypedDict, total=False):  # pylint: disable=name-too-long
    """Parameters to create and update an Azure Cosmos DB Mongo Role Definition.

    :ivar properties: Properties to create and update an Azure Cosmos DB Mongo Role Definition.
    :vartype properties: "MongoRoleDefinitionResource"
    """

    properties: "MongoRoleDefinitionResource"
    """Properties to create and update an Azure Cosmos DB Mongo Role Definition."""


class MongoRoleDefinitionGetResults(ProxyResource):
    """An Azure Cosmos DB Mongo Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties related to the Mongo Role Definition.
    :vartype properties: "MongoRoleDefinitionResource"
    """

    properties: "MongoRoleDefinitionResource"
    """Properties related to the Mongo Role Definition."""


class MongoRoleDefinitionResource(TypedDict, total=False):
    """Azure Cosmos DB Mongo Role Definition resource object.

    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "MongoRoleDefinitionType"]
    :ivar database_name: The database name for which access is being granted for this Role
     Definition.
    :vartype database_name: str
    :ivar privileges: A set of privileges contained by the Role Definition. This will allow
     application of this Role Definition on the entire database account or any underlying Database /
     Collection. Scopes higher than Database are not enforceable as privilege.
    :vartype privileges: list["Privilege"]
    :ivar roles: The set of roles inherited by this Role Definition.
    :vartype roles: list["Role"]
    """

    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "MongoRoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    databaseName: str
    """The database name for which access is being granted for this Role Definition."""
    privileges: list["Privilege"]
    """A set of privileges contained by the Role Definition. This will allow application of this Role
     Definition on the entire database account or any underlying Database / Collection. Scopes
     higher than Database are not enforceable as privilege."""
    roles: list["Role"]
    """The set of roles inherited by this Role Definition."""


class MongoUserDefinitionCreateUpdateParameters(TypedDict, total=False):  # pylint: disable=name-too-long
    """Parameters to create and update an Azure Cosmos DB Mongo User Definition.

    :ivar properties: Properties to create and update an Azure Cosmos DB Mongo User Definition.
    :vartype properties: "MongoUserDefinitionResource"
    """

    properties: "MongoUserDefinitionResource"
    """Properties to create and update an Azure Cosmos DB Mongo User Definition."""


class MongoUserDefinitionGetResults(ProxyResource):
    """An Azure Cosmos DB User Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties related to the User Definition.
    :vartype properties: "MongoUserDefinitionResource"
    """

    properties: "MongoUserDefinitionResource"
    """Properties related to the User Definition."""


class MongoUserDefinitionResource(TypedDict, total=False):
    """Azure Cosmos DB Mongo User Definition resource object.

    :ivar user_name: The user name for User Definition.
    :vartype user_name: str
    :ivar password: The password for User Definition. Response does not contain user password.
    :vartype password: str
    :ivar database_name: The database name for which access is being granted for this User
     Definition.
    :vartype database_name: str
    :ivar custom_data: A custom definition for the USer Definition.
    :vartype custom_data: str
    :ivar roles: The set of roles inherited by the User Definition.
    :vartype roles: list["Role"]
    :ivar mechanisms: The Mongo Auth mechanism. For now, we only support auth mechanism
     SCRAM-SHA-256.
    :vartype mechanisms: str
    """

    userName: str
    """The user name for User Definition."""
    password: str
    """The password for User Definition. Response does not contain user password."""
    databaseName: str
    """The database name for which access is being granted for this User Definition."""
    customData: str
    """A custom definition for the USer Definition."""
    roles: list["Role"]
    """The set of roles inherited by the User Definition."""
    mechanisms: str
    """The Mongo Auth mechanism. For now, we only support auth mechanism SCRAM-SHA-256."""


class NotebookWorkspace(ProxyResource):
    """A notebook workspace resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Resource properties.
    :vartype properties: "NotebookWorkspaceProperties"
    """

    properties: "NotebookWorkspaceProperties"
    """Resource properties."""


class NotebookWorkspaceConnectionInfoResult(TypedDict, total=False):
    """The connection info for the given notebook workspace.

    :ivar auth_token: Specifies auth token used for connecting to Notebook server (uses token-based
     auth).
    :vartype auth_token: str
    :ivar notebook_server_endpoint: Specifies the endpoint of Notebook server.
    :vartype notebook_server_endpoint: str
    """

    authToken: str
    """Specifies auth token used for connecting to Notebook server (uses token-based auth)."""
    notebookServerEndpoint: str
    """Specifies the endpoint of Notebook server."""


class NotebookWorkspaceCreateUpdateParameters(ARMProxyResource):
    """Parameters to create a notebook workspace resource.

    :ivar id: The unique resource identifier of the database account.
    :vartype id: str
    :ivar name: The name of the database account.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """


class NotebookWorkspaceProperties(TypedDict, total=False):
    """Properties of a notebook workspace resource.

    :ivar notebook_server_endpoint: Specifies the endpoint of Notebook server.
    :vartype notebook_server_endpoint: str
    :ivar status: Status of the notebook workspace. Possible values are: Creating, Online,
     Deleting, Failed, Updating.
    :vartype status: str
    """

    notebookServerEndpoint: str
    """Specifies the endpoint of Notebook server."""
    status: str
    """Status of the notebook workspace. Possible values are: Creating, Online, Deleting, Failed,
     Updating."""


class Operation(TypedDict, total=False):
    """REST API operation.

    :ivar name: Operation name: {provider}/{resource}/{operation}.
    :vartype name: str
    :ivar display: The object that represents the operation.
    :vartype display: "OperationDisplay"
    """

    name: str
    """Operation name: {provider}/{resource}/{operation}."""
    display: "OperationDisplay"
    """The object that represents the operation."""


class OperationDisplay(TypedDict, total=False):
    """The object that represents the operation.

    :ivar provider: Service provider: Microsoft.ResourceProvider.
    :vartype provider: str
    :ivar resource: Resource on which the operation is performed: Profile, endpoint, etc.
    :vartype resource: str
    :ivar operation: Operation type: Read, write, delete, etc.
    :vartype operation: str
    :ivar description: Description of operation.
    :vartype description: str
    """

    Provider: str
    """Service provider: Microsoft.ResourceProvider."""
    Resource: str
    """Resource on which the operation is performed: Profile, endpoint, etc."""
    Operation: str
    """Operation type: Read, write, delete, etc."""
    Description: str
    """Description of operation."""


class PartitionMetric(Metric):
    """The metric values for a single partition.

    :ivar start_time: The start time for the metric (ISO-8601 format).
    :vartype start_time: str
    :ivar end_time: The end time for the metric (ISO-8601 format).
    :vartype end_time: str
    :ivar time_grain: The time grain to be used to summarize the metric values.
    :vartype time_grain: str
    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    :ivar metric_values: The metric values for the specified time window and timestep.
    :vartype metric_values: list["MetricValue"]
    :ivar partition_id: The partition id (GUID identifier) of the metric values.
    :vartype partition_id: str
    :ivar partition_key_range_id: The partition key range id (integer identifier) of the metric
     values.
    :vartype partition_key_range_id: str
    """

    partitionId: str
    """The partition id (GUID identifier) of the metric values."""
    partitionKeyRangeId: str
    """The partition key range id (integer identifier) of the metric values."""


class Usage(TypedDict, total=False):
    """The usage data for a usage request.

    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    :ivar quota_period: The quota period used to summarize the usage values.
    :vartype quota_period: str
    :ivar limit: Maximum value for this metric.
    :vartype limit: int
    :ivar current_value: Current value for this metric.
    :vartype current_value: int
    """

    unit: Union[str, "UnitType"]
    """The unit of the metric. Known values are: \"Count\", \"Bytes\", \"Seconds\", \"Percent\",
     \"CountPerSecond\", \"BytesPerSecond\", and \"Milliseconds\"."""
    name: "MetricName"
    """The name information for the metric."""
    quotaPeriod: str
    """The quota period used to summarize the usage values."""
    limit: int
    """Maximum value for this metric."""
    currentValue: int
    """Current value for this metric."""


class PartitionUsage(Usage):
    """The partition level usage data for a usage request.

    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    :ivar quota_period: The quota period used to summarize the usage values.
    :vartype quota_period: str
    :ivar limit: Maximum value for this metric.
    :vartype limit: int
    :ivar current_value: Current value for this metric.
    :vartype current_value: int
    :ivar partition_id: The partition id (GUID identifier) of the usages.
    :vartype partition_id: str
    :ivar partition_key_range_id: The partition key range id (integer identifier) of the usages.
    :vartype partition_key_range_id: str
    """

    partitionId: str
    """The partition id (GUID identifier) of the usages."""
    partitionKeyRangeId: str
    """The partition key range id (integer identifier) of the usages."""


class PercentileMetric(TypedDict, total=False):
    """Percentile Metric data.

    :ivar start_time: The start time for the metric (ISO-8601 format).
    :vartype start_time: str
    :ivar end_time: The end time for the metric (ISO-8601 format).
    :vartype end_time: str
    :ivar time_grain: The time grain to be used to summarize the metric values.
    :vartype time_grain: str
    :ivar unit: The unit of the metric. Known values are: "Count", "Bytes", "Seconds", "Percent",
     "CountPerSecond", "BytesPerSecond", and "Milliseconds".
    :vartype unit: Union[str, "UnitType"]
    :ivar name: The name information for the metric.
    :vartype name: "MetricName"
    :ivar metric_values: The percentile metric values for the specified time window and timestep.
    :vartype metric_values: list["PercentileMetricValue"]
    """

    startTime: str
    """The start time for the metric (ISO-8601 format)."""
    endTime: str
    """The end time for the metric (ISO-8601 format)."""
    timeGrain: str
    """The time grain to be used to summarize the metric values."""
    unit: Union[str, "UnitType"]
    """The unit of the metric. Known values are: \"Count\", \"Bytes\", \"Seconds\", \"Percent\",
     \"CountPerSecond\", \"BytesPerSecond\", and \"Milliseconds\"."""
    name: "MetricName"
    """The name information for the metric."""
    metricValues: list["PercentileMetricValue"]
    """The percentile metric values for the specified time window and timestep."""


class PercentileMetricValue(MetricValue):
    """Represents percentile metrics values.

    :ivar count: The number of values for the metric.
    :vartype count: int
    :ivar average: The average value of the metric.
    :vartype average: float
    :ivar maximum: The max value of the metric.
    :vartype maximum: float
    :ivar minimum: The min value of the metric.
    :vartype minimum: float
    :ivar timestamp: The metric timestamp (ISO-8601 format).
    :vartype timestamp: str
    :ivar total: The total value of the metric.
    :vartype total: float
    :ivar p10: The 10th percentile value for the metric.
    :vartype p10: float
    :ivar p25: The 25th percentile value for the metric.
    :vartype p25: float
    :ivar p50: The 50th percentile value for the metric.
    :vartype p50: float
    :ivar p75: The 75th percentile value for the metric.
    :vartype p75: float
    :ivar p90: The 90th percentile value for the metric.
    :vartype p90: float
    :ivar p95: The 95th percentile value for the metric.
    :vartype p95: float
    :ivar p99: The 99th percentile value for the metric.
    :vartype p99: float
    """

    P10: float
    """The 10th percentile value for the metric."""
    P25: float
    """The 25th percentile value for the metric."""
    P50: float
    """The 50th percentile value for the metric."""
    P75: float
    """The 75th percentile value for the metric."""
    P90: float
    """The 90th percentile value for the metric."""
    P95: float
    """The 95th percentile value for the metric."""
    P99: float
    """The 99th percentile value for the metric."""


class PeriodicModeBackupPolicy(TypedDict, total=False):
    """The object representing periodic mode backup policy.

    :ivar migration_state: The object representing the state of the migration between the backup
     policies.
    :vartype migration_state: "BackupPolicyMigrationState"
    :ivar periodic_mode_properties: Configuration values for periodic mode backup.
    :vartype periodic_mode_properties: "PeriodicModeProperties"
    :ivar type: Describes the mode of backups. Required. PERIODIC.
    :vartype type: Literal[BackupPolicyType.PERIODIC]
    """

    migrationState: "BackupPolicyMigrationState"
    """The object representing the state of the migration between the backup policies."""
    periodicModeProperties: "PeriodicModeProperties"
    """Configuration values for periodic mode backup."""
    type: Required[Literal[BackupPolicyType.PERIODIC]]
    """Describes the mode of backups. Required. PERIODIC."""


class PeriodicModeProperties(TypedDict, total=False):
    """Configuration values for periodic mode backup.

    :ivar backup_interval_in_minutes: An integer representing the interval in minutes between two
     backups.
    :vartype backup_interval_in_minutes: int
    :ivar backup_retention_interval_in_hours: An integer representing the time (in hours) that each
     backup is retained.
    :vartype backup_retention_interval_in_hours: int
    :ivar backup_storage_redundancy: Enum to indicate type of backup residency. Known values are:
     "Geo", "Local", and "Zone".
    :vartype backup_storage_redundancy: Union[str, "BackupStorageRedundancy"]
    """

    backupIntervalInMinutes: int
    """An integer representing the interval in minutes between two backups."""
    backupRetentionIntervalInHours: int
    """An integer representing the time (in hours) that each backup is retained."""
    backupStorageRedundancy: Union[str, "BackupStorageRedundancy"]
    """Enum to indicate type of backup residency. Known values are: \"Geo\", \"Local\", and \"Zone\"."""


class Permission(TypedDict, total=False):
    """The set of data plane operations permitted through this Role Definition.

    :ivar id: The id for the permission.
    :vartype id: str
    :ivar data_actions: An array of data actions that are allowed.
    :vartype data_actions: list[str]
    :ivar not_data_actions: An array of data actions that are denied.
    :vartype not_data_actions: list[str]
    """

    id: str
    """The id for the permission."""
    dataActions: list[str]
    """An array of data actions that are allowed."""
    notDataActions: list[str]
    """An array of data actions that are denied."""


class PrivateEndpointConnection(ProxyResource):
    """A private endpoint connection.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Resource properties.
    :vartype properties: "PrivateEndpointConnectionProperties"
    """

    properties: "PrivateEndpointConnectionProperties"
    """Resource properties."""


class PrivateEndpointConnectionProperties(TypedDict, total=False):
    """Properties of a private endpoint connection.

    :ivar private_endpoint: Private endpoint which the connection belongs to.
    :vartype private_endpoint: "PrivateEndpointProperty"
    :ivar private_link_service_connection_state: Connection State of the Private Endpoint
     Connection.
    :vartype private_link_service_connection_state: "PrivateLinkServiceConnectionStateProperty"
    :ivar group_id: Group id of the private endpoint.
    :vartype group_id: str
    :ivar provisioning_state: Provisioning state of the private endpoint.
    :vartype provisioning_state: str
    """

    privateEndpoint: "PrivateEndpointProperty"
    """Private endpoint which the connection belongs to."""
    privateLinkServiceConnectionState: "PrivateLinkServiceConnectionStateProperty"
    """Connection State of the Private Endpoint Connection."""
    groupId: str
    """Group id of the private endpoint."""
    provisioningState: str
    """Provisioning state of the private endpoint."""


class PrivateEndpointProperty(TypedDict, total=False):
    """Private endpoint which the connection belongs to.

    :ivar id: Resource id of the private endpoint.
    :vartype id: str
    """

    id: str
    """Resource id of the private endpoint."""


class PrivateLinkResource(ProxyResource):
    """A private link resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Resource properties.
    :vartype properties: "PrivateLinkResourceProperties"
    """

    properties: "PrivateLinkResourceProperties"
    """Resource properties."""


class PrivateLinkResourceProperties(TypedDict, total=False):
    """Properties of a private link resource.

    :ivar group_id: The private link resource group id.
    :vartype group_id: str
    :ivar required_members: The private link resource required member names.
    :vartype required_members: list[str]
    :ivar required_zone_names: The private link resource required zone names.
    :vartype required_zone_names: list[str]
    """

    groupId: str
    """The private link resource group id."""
    requiredMembers: list[str]
    """The private link resource required member names."""
    requiredZoneNames: list[str]
    """The private link resource required zone names."""


class PrivateLinkServiceConnectionStateProperty(TypedDict, total=False):  # pylint: disable=name-too-long
    """Connection State of the Private Endpoint Connection.

    :ivar status: The private link service connection status.
    :vartype status: str
    :ivar description: The private link service connection description.
    :vartype description: str
    :ivar actions_required: Any action that is required beyond basic workflow (approve/ reject/
     disconnect).
    :vartype actions_required: str
    """

    status: str
    """The private link service connection status."""
    description: str
    """The private link service connection description."""
    actionsRequired: str
    """Any action that is required beyond basic workflow (approve/ reject/ disconnect)."""


class Privilege(TypedDict, total=False):
    """The set of data plane operations permitted through this Role Definition.

    :ivar resource: An Azure Cosmos DB Mongo DB Resource.
    :vartype resource: "PrivilegeResource"
    :ivar actions: An array of actions that are allowed.
    :vartype actions: list[str]
    """

    resource: "PrivilegeResource"
    """An Azure Cosmos DB Mongo DB Resource."""
    actions: list[str]
    """An array of actions that are allowed."""


class PrivilegeResource(TypedDict, total=False):
    """An Azure Cosmos DB Mongo DB Resource.

    :ivar db: The database name the role is applied.
    :vartype db: str
    :ivar collection: The collection name the role is applied.
    :vartype collection: str
    """

    db: str
    """The database name the role is applied."""
    collection: str
    """The collection name the role is applied."""


class RegionForOnlineOffline(TypedDict, total=False):
    """Cosmos DB region to online or offline.

    :ivar region: Cosmos DB region, with spaces between words and each word capitalized. Required.
    :vartype region: str
    """

    region: Required[str]
    """Cosmos DB region, with spaces between words and each word capitalized. Required."""


class RestoreParametersBase(TypedDict, total=False):
    """Parameters to indicate the information about the restore.

    :ivar restore_source: The id of the restorable database account from which the restore has to
     be initiated. For example:
     /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName}.
    :vartype restore_source: str
    :ivar restore_timestamp_in_utc: Time to which the account has to be restored (ISO-8601 format).
    :vartype restore_timestamp_in_utc: str
    :ivar restore_with_ttl_disabled: Specifies whether the restored account will have Time-To-Live
     disabled upon the successful restore.
    :vartype restore_with_ttl_disabled: bool
    """

    restoreSource: str
    """The id of the restorable database account from which the restore has to be initiated. For
     example:
     /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName}."""
    restoreTimestampInUtc: str
    """Time to which the account has to be restored (ISO-8601 format)."""
    restoreWithTtlDisabled: bool
    """Specifies whether the restored account will have Time-To-Live disabled upon the successful
     restore."""


class ResourceRestoreParameters(RestoreParametersBase):
    """Parameters to indicate the information about the restore.

    :ivar restore_source: The id of the restorable database account from which the restore has to
     be initiated. For example:
     /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName}.
    :vartype restore_source: str
    :ivar restore_timestamp_in_utc: Time to which the account has to be restored (ISO-8601 format).
    :vartype restore_timestamp_in_utc: str
    :ivar restore_with_ttl_disabled: Specifies whether the restored account will have Time-To-Live
     disabled upon the successful restore.
    :vartype restore_with_ttl_disabled: bool
    """


class RestorableDatabaseAccountGetResult(ProxyResource):
    """A Azure Cosmos DB restorable database account.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of a restorable database account.
    :vartype properties: "RestorableDatabaseAccountProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    """

    properties: "RestorableDatabaseAccountProperties"
    """The properties of a restorable database account."""
    location: str
    """The location of the resource group to which the resource belongs."""


class RestorableDatabaseAccountProperties(TypedDict, total=False):
    """The properties of a restorable database account.

    :ivar account_name: The name of the global database account.
    :vartype account_name: str
    :ivar creation_time: The creation time of the restorable database account (ISO-8601 format).
    :vartype creation_time: str
    :ivar oldest_restorable_time: The least recent time at which the database account can be
     restored to (ISO-8601 format).
    :vartype oldest_restorable_time: str
    :ivar deletion_time: The time at which the restorable database account has been deleted
     (ISO-8601 format).
    :vartype deletion_time: str
    :ivar api_type: The API type of the restorable database account. Known values are: "MongoDB",
     "Gremlin", "Cassandra", "Table", "Sql", and "GremlinV2".
    :vartype api_type: Union[str, "ApiType"]
    :ivar restorable_locations: List of regions where the of the database account can be restored
     from.
    :vartype restorable_locations: list["RestorableLocationResource"]
    """

    accountName: str
    """The name of the global database account."""
    creationTime: str
    """The creation time of the restorable database account (ISO-8601 format)."""
    oldestRestorableTime: str
    """The least recent time at which the database account can be restored to (ISO-8601 format)."""
    deletionTime: str
    """The time at which the restorable database account has been deleted (ISO-8601 format)."""
    apiType: Union[str, "ApiType"]
    """The API type of the restorable database account. Known values are: \"MongoDB\", \"Gremlin\",
     \"Cassandra\", \"Table\", \"Sql\", and \"GremlinV2\"."""
    restorableLocations: list["RestorableLocationResource"]
    """List of regions where the of the database account can be restored from."""


class RestorableGremlinDatabaseGetResult(TypedDict, total=False):
    """An Azure Cosmos DB Gremlin database event.

    :ivar properties: The properties of a Gremlin database event.
    :vartype properties: "RestorableGremlinDatabaseProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableGremlinDatabaseProperties"
    """The properties of a Gremlin database event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableGremlinDatabaseProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Gremlin database event.

    :ivar resource: The resource of an Azure Cosmos DB Gremlin database event.
    :vartype resource: "RestorableGremlinDatabasePropertiesResource"
    """

    resource: "RestorableGremlinDatabasePropertiesResource"
    """The resource of an Azure Cosmos DB Gremlin database event."""


class RestorableGremlinDatabasePropertiesResource(TypedDict, total=False):  # pylint: disable=name-too-long
    """The resource of an Azure Cosmos DB Gremlin database event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this database event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this database to identify if this database is restorable in same
     account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this database can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this database event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this Gremlin database.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this Gremlin database.
    :vartype owner_resource_id: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this database event. Known values are: \"Create\", \"Replace\",
     \"Delete\", \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this database to identify if this database is restorable in same account."""
    canUndeleteReason: str
    """The reason why this database can not be restored in same account."""
    eventTimestamp: str
    """The time when this database event happened."""
    ownerId: str
    """The name of this Gremlin database."""
    ownerResourceId: str
    """The resource ID of this Gremlin database."""


class RestorableGremlinGraphGetResult(TypedDict, total=False):
    """An Azure Cosmos DB Gremlin graph event.

    :ivar properties: The properties of a Gremlin graph event.
    :vartype properties: "RestorableGremlinGraphProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableGremlinGraphProperties"
    """The properties of a Gremlin graph event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableGremlinGraphProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Gremlin graph event.

    :ivar resource: The resource of an Azure Cosmos DB Gremlin graph event.
    :vartype resource: "RestorableGremlinGraphPropertiesResource"
    """

    resource: "RestorableGremlinGraphPropertiesResource"
    """The resource of an Azure Cosmos DB Gremlin graph event."""


class RestorableGremlinGraphPropertiesResource(TypedDict, total=False):
    """The resource of an Azure Cosmos DB Gremlin graph event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this graph event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this graph to identify if this graph is restorable in same
     account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this graph can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this graph event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this Gremlin graph.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this Gremlin graph.
    :vartype owner_resource_id: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this graph event. Known values are: \"Create\", \"Replace\", \"Delete\",
     \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this graph to identify if this graph is restorable in same account."""
    canUndeleteReason: str
    """The reason why this graph can not be restored in same account."""
    eventTimestamp: str
    """The time when this graph event happened."""
    ownerId: str
    """The name of this Gremlin graph."""
    ownerResourceId: str
    """The resource ID of this Gremlin graph."""


class RestorableGremlinResourcesGetResult(TypedDict, total=False):
    """Specific Databases to restore.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar database_name: The name of the gremlin database available for restore.
    :vartype database_name: str
    :ivar graph_names: The names of the graphs available for restore.
    :vartype graph_names: list[str]
    """

    id: str
    """The unique resource identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""
    databaseName: str
    """The name of the gremlin database available for restore."""
    graphNames: list[str]
    """The names of the graphs available for restore."""


class RestorableLocationResource(TypedDict, total=False):
    """Properties of the regional restorable account.

    :ivar location_name: The location of the regional restorable account.
    :vartype location_name: str
    :ivar regional_database_account_instance_id: The instance id of the regional restorable
     account.
    :vartype regional_database_account_instance_id: str
    :ivar creation_time: The creation time of the regional restorable database account (ISO-8601
     format).
    :vartype creation_time: str
    :ivar deletion_time: The time at which the regional restorable database account has been
     deleted (ISO-8601 format).
    :vartype deletion_time: str
    """

    locationName: str
    """The location of the regional restorable account."""
    regionalDatabaseAccountInstanceId: str
    """The instance id of the regional restorable account."""
    creationTime: str
    """The creation time of the regional restorable database account (ISO-8601 format)."""
    deletionTime: str
    """The time at which the regional restorable database account has been deleted (ISO-8601 format)."""


class RestorableMongodbCollectionGetResult(TypedDict, total=False):
    """An Azure Cosmos DB MongoDB collection event.

    :ivar properties: The properties of a MongoDB collection event.
    :vartype properties: "RestorableMongodbCollectionProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableMongodbCollectionProperties"
    """The properties of a MongoDB collection event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableMongodbCollectionProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB MongoDB collection event.

    :ivar resource: The resource of an Azure Cosmos DB MongoDB collection event.
    :vartype resource: "RestorableMongodbCollectionPropertiesResource"
    """

    resource: "RestorableMongodbCollectionPropertiesResource"
    """The resource of an Azure Cosmos DB MongoDB collection event."""


class RestorableMongodbCollectionPropertiesResource(TypedDict, total=False):  # pylint: disable=name-too-long
    """The resource of an Azure Cosmos DB MongoDB collection event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this collection event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this collection to identify if this container is restorable in
     same account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this collection can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this collection event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this MongoDB collection.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this MongoDB collection.
    :vartype owner_resource_id: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this collection event. Known values are: \"Create\", \"Replace\",
     \"Delete\", \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this collection to identify if this container is restorable in same account."""
    canUndeleteReason: str
    """The reason why this collection can not be restored in same account."""
    eventTimestamp: str
    """The time when this collection event happened."""
    ownerId: str
    """The name of this MongoDB collection."""
    ownerResourceId: str
    """The resource ID of this MongoDB collection."""


class RestorableMongodbDatabaseGetResult(TypedDict, total=False):
    """An Azure Cosmos DB MongoDB database event.

    :ivar properties: The properties of a MongoDB database event.
    :vartype properties: "RestorableMongodbDatabaseProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableMongodbDatabaseProperties"
    """The properties of a MongoDB database event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableMongodbDatabaseProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB MongoDB database event.

    :ivar resource: The resource of an Azure Cosmos DB MongoDB database event.
    :vartype resource: "RestorableMongodbDatabasePropertiesResource"
    """

    resource: "RestorableMongodbDatabasePropertiesResource"
    """The resource of an Azure Cosmos DB MongoDB database event."""


class RestorableMongodbDatabasePropertiesResource(TypedDict, total=False):  # pylint: disable=name-too-long
    """The resource of an Azure Cosmos DB MongoDB database event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this database event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this database to identify if this database is restorable in same
     account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this database can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this database event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this MongoDB database.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this MongoDB database.
    :vartype owner_resource_id: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this database event. Known values are: \"Create\", \"Replace\",
     \"Delete\", \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this database to identify if this database is restorable in same account."""
    canUndeleteReason: str
    """The reason why this database can not be restored in same account."""
    eventTimestamp: str
    """The time when this database event happened."""
    ownerId: str
    """The name of this MongoDB database."""
    ownerResourceId: str
    """The resource ID of this MongoDB database."""


class RestorableMongodbResourcesGetResult(TypedDict, total=False):
    """Specific Databases to restore.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar database_name: The name of the database available for restore.
    :vartype database_name: str
    :ivar collection_names: The names of the collections available for restore.
    :vartype collection_names: list[str]
    """

    id: str
    """The unique resource identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""
    databaseName: str
    """The name of the database available for restore."""
    collectionNames: list[str]
    """The names of the collections available for restore."""


class RestorableSqlContainerGetResult(TypedDict, total=False):
    """An Azure Cosmos DB SQL container event.

    :ivar properties: The properties of a SQL container event.
    :vartype properties: "RestorableSqlContainerProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableSqlContainerProperties"
    """The properties of a SQL container event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableSqlContainerProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB SQL container event.

    :ivar resource: The resource of an Azure Cosmos DB SQL container event.
    :vartype resource: "RestorableSqlContainerPropertiesResource"
    """

    resource: "RestorableSqlContainerPropertiesResource"
    """The resource of an Azure Cosmos DB SQL container event."""


class RestorableSqlContainerPropertiesResource(TypedDict, total=False):
    """The resource of an Azure Cosmos DB SQL container event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this container event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this container to identify if this container is restorable in
     same account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this container can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The when this container event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this SQL container.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this SQL container.
    :vartype owner_resource_id: str
    :ivar container: Cosmos DB SQL container resource object.
    :vartype container: "RestorableSqlContainerPropertiesResourceContainer"
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this container event. Known values are: \"Create\", \"Replace\",
     \"Delete\", \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this container to identify if this container is restorable in same account."""
    canUndeleteReason: str
    """The reason why this container can not be restored in same account."""
    eventTimestamp: str
    """The when this container event happened."""
    ownerId: str
    """The name of this SQL container."""
    ownerResourceId: str
    """The resource ID of this SQL container."""
    container: "RestorableSqlContainerPropertiesResourceContainer"
    """Cosmos DB SQL container resource object."""


class SqlContainerResource(TypedDict, total=False):
    """Cosmos DB SQL container resource object.

    :ivar id: Name of the Cosmos DB SQL container. Required.
    :vartype id: str
    :ivar indexing_policy: The configuration of the indexing policy. By default, the indexing is
     automatic for all document paths within the container.
    :vartype indexing_policy: "IndexingPolicy"
    :ivar partition_key: The configuration of the partition key to be used for partitioning data
     into multiple partitions.
    :vartype partition_key: "ContainerPartitionKey"
    :ivar default_ttl: Default time to live.
    :vartype default_ttl: int
    :ivar unique_key_policy: The unique key policy configuration for specifying uniqueness
     constraints on documents in the collection in the Azure Cosmos DB service.
    :vartype unique_key_policy: "UniqueKeyPolicy"
    :ivar conflict_resolution_policy: The conflict resolution policy for the container.
    :vartype conflict_resolution_policy: "ConflictResolutionPolicy"
    :ivar client_encryption_policy: The client encryption policy for the container.
    :vartype client_encryption_policy: "ClientEncryptionPolicy"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar computed_properties: List of computed properties.
    :vartype computed_properties: list["ComputedProperty"]
    :ivar vector_embedding_policy: The vector embedding policy for the container.
    :vartype vector_embedding_policy: "VectorEmbeddingPolicy"
    :ivar full_text_policy: The FullText policy for the container.
    :vartype full_text_policy: "FullTextPolicy"
    """

    id: Required[str]
    """Name of the Cosmos DB SQL container. Required."""
    indexingPolicy: "IndexingPolicy"
    """The configuration of the indexing policy. By default, the indexing is automatic for all
     document paths within the container."""
    partitionKey: "ContainerPartitionKey"
    """The configuration of the partition key to be used for partitioning data into multiple
     partitions."""
    defaultTtl: int
    """Default time to live."""
    uniqueKeyPolicy: "UniqueKeyPolicy"
    """The unique key policy configuration for specifying uniqueness constraints on documents in the
     collection in the Azure Cosmos DB service."""
    conflictResolutionPolicy: "ConflictResolutionPolicy"
    """The conflict resolution policy for the container."""
    clientEncryptionPolicy: "ClientEncryptionPolicy"
    """The client encryption policy for the container."""
    analyticalStorageTtl: int
    """Analytical TTL."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""
    computedProperties: list["ComputedProperty"]
    """List of computed properties."""
    vectorEmbeddingPolicy: "VectorEmbeddingPolicy"
    """The vector embedding policy for the container."""
    fullTextPolicy: "FullTextPolicy"
    """The FullText policy for the container."""


class RestorableSqlContainerPropertiesResourceContainer(SqlContainerResource):  # pylint: disable=name-too-long
    """Cosmos DB SQL container resource object.

    :ivar id: Name of the Cosmos DB SQL container. Required.
    :vartype id: str
    :ivar indexing_policy: The configuration of the indexing policy. By default, the indexing is
     automatic for all document paths within the container.
    :vartype indexing_policy: "IndexingPolicy"
    :ivar partition_key: The configuration of the partition key to be used for partitioning data
     into multiple partitions.
    :vartype partition_key: "ContainerPartitionKey"
    :ivar default_ttl: Default time to live.
    :vartype default_ttl: int
    :ivar unique_key_policy: The unique key policy configuration for specifying uniqueness
     constraints on documents in the collection in the Azure Cosmos DB service.
    :vartype unique_key_policy: "UniqueKeyPolicy"
    :ivar conflict_resolution_policy: The conflict resolution policy for the container.
    :vartype conflict_resolution_policy: "ConflictResolutionPolicy"
    :ivar client_encryption_policy: The client encryption policy for the container.
    :vartype client_encryption_policy: "ClientEncryptionPolicy"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar computed_properties: List of computed properties.
    :vartype computed_properties: list["ComputedProperty"]
    :ivar vector_embedding_policy: The vector embedding policy for the container.
    :vartype vector_embedding_policy: "VectorEmbeddingPolicy"
    :ivar full_text_policy: The FullText policy for the container.
    :vartype full_text_policy: "FullTextPolicy"
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    :ivar self_property: A system generated property that specifies the addressable path of the
     container resource.
    :vartype self_property: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""
    _self: str
    """A system generated property that specifies the addressable path of the container resource."""


class RestorableSqlDatabaseGetResult(TypedDict, total=False):
    """An Azure Cosmos DB SQL database event.

    :ivar properties: The properties of a SQL database event.
    :vartype properties: "RestorableSqlDatabaseProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableSqlDatabaseProperties"
    """The properties of a SQL database event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableSqlDatabaseProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB SQL database event.

    :ivar resource: The resource of an Azure Cosmos DB SQL database event.
    :vartype resource: "RestorableSqlDatabasePropertiesResource"
    """

    resource: "RestorableSqlDatabasePropertiesResource"
    """The resource of an Azure Cosmos DB SQL database event."""


class RestorableSqlDatabasePropertiesResource(TypedDict, total=False):
    """The resource of an Azure Cosmos DB SQL database event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this database event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this database to identify if this database is restorable in same
     account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this database can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this database event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of the SQL database.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of the SQL database.
    :vartype owner_resource_id: str
    :ivar database: Cosmos DB SQL database resource object.
    :vartype database: "RestorableSqlDatabasePropertiesResourceDatabase"
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this database event. Known values are: \"Create\", \"Replace\",
     \"Delete\", \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this database to identify if this database is restorable in same account."""
    canUndeleteReason: str
    """The reason why this database can not be restored in same account."""
    eventTimestamp: str
    """The time when this database event happened."""
    ownerId: str
    """The name of the SQL database."""
    ownerResourceId: str
    """The resource ID of the SQL database."""
    database: "RestorableSqlDatabasePropertiesResourceDatabase"
    """Cosmos DB SQL database resource object."""


class SqlDatabaseResource(TypedDict, total=False):
    """Cosmos DB SQL database resource object.

    :ivar id: Name of the Cosmos DB SQL database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB SQL database. Required."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""


class RestorableSqlDatabasePropertiesResourceDatabase(SqlDatabaseResource):  # pylint: disable=name-too-long
    """Cosmos DB SQL database resource object.

    :ivar id: Name of the Cosmos DB SQL database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    :ivar colls: A system generated property that specified the addressable path of the collections
     resource.
    :vartype colls: str
    :ivar users: A system generated property that specifies the addressable path of the users
     resource.
    :vartype users: str
    :ivar self_property: A system generated property that specifies the addressable path of the
     database resource.
    :vartype self_property: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""
    _colls: str
    """A system generated property that specified the addressable path of the collections resource."""
    _users: str
    """A system generated property that specifies the addressable path of the users resource."""
    _self: str
    """A system generated property that specifies the addressable path of the database resource."""


class RestorableSqlResourcesGetResult(TypedDict, total=False):
    """Specific Databases to restore.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar database_name: The name of the database available for restore.
    :vartype database_name: str
    :ivar collection_names: The names of the collections available for restore.
    :vartype collection_names: list[str]
    """

    id: str
    """The unique resource identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""
    databaseName: str
    """The name of the database available for restore."""
    collectionNames: list[str]
    """The names of the collections available for restore."""


class RestorableTableGetResult(TypedDict, total=False):
    """An Azure Cosmos DB Table event.

    :ivar properties: The properties of a Table event.
    :vartype properties: "RestorableTableProperties"
    :ivar id: The unique resource Identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    properties: "RestorableTableProperties"
    """The properties of a Table event."""
    id: str
    """The unique resource Identifier of the ARM resource."""
    name: str
    """The name of the ARM resource."""
    type: str
    """The type of Azure resource."""


class RestorableTableProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB Table event.

    :ivar resource: The resource of an Azure Cosmos DB Table event.
    :vartype resource: "RestorableTablePropertiesResource"
    """

    resource: "RestorableTablePropertiesResource"
    """The resource of an Azure Cosmos DB Table event."""


class RestorableTablePropertiesResource(TypedDict, total=False):
    """The resource of an Azure Cosmos DB Table event.

    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar operation_type: The operation type of this table event. Known values are: "Create",
     "Replace", "Delete", "Recreate", and "SystemOperation".
    :vartype operation_type: Union[str, "OperationType"]
    :ivar can_undelete: A state of this table to identify if this table is restorable in same
     account.
    :vartype can_undelete: str
    :ivar can_undelete_reason: The reason why this table can not be restored in same account.
    :vartype can_undelete_reason: str
    :ivar event_timestamp: The time when this table event happened.
    :vartype event_timestamp: str
    :ivar owner_id: The name of this Table.
    :vartype owner_id: str
    :ivar owner_resource_id: The resource ID of this Table.
    :vartype owner_resource_id: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    operationType: Union[str, "OperationType"]
    """The operation type of this table event. Known values are: \"Create\", \"Replace\", \"Delete\",
     \"Recreate\", and \"SystemOperation\"."""
    canUndelete: str
    """A state of this table to identify if this table is restorable in same account."""
    canUndeleteReason: str
    """The reason why this table can not be restored in same account."""
    eventTimestamp: str
    """The time when this table event happened."""
    ownerId: str
    """The name of this Table."""
    ownerResourceId: str
    """The resource ID of this Table."""


class RestorableTableResourcesGetResult(TypedDict, total=False):
    """Specific Databases to restore.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the Table.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    """

    id: str
    """The unique resource identifier of the ARM resource."""
    name: str
    """The name of the Table."""
    type: str
    """The type of Azure resource."""


class RestoreParameters(RestoreParametersBase):
    """Parameters to indicate the information about the restore.

    :ivar restore_with_ttl_disabled: Specifies whether the restored account will have Time-To-Live
     disabled upon the successful restore.
    :vartype restore_with_ttl_disabled: bool
    :ivar restore_mode: Describes the mode of the restore. "PointInTime"
    :vartype restore_mode: Union[str, "RestoreMode"]
    :ivar restore_source: The id of the restorable database account from which the restore has to
     be initiated. For example:
     /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName}.
    :vartype restore_source: str
    :ivar restore_timestamp_in_utc: Time to which the account has to be restored (ISO-8601 format).
    :vartype restore_timestamp_in_utc: str
    :ivar databases_to_restore: List of specific databases available for restore.
    :vartype databases_to_restore: list["DatabaseRestoreResource"]
    :ivar gremlin_databases_to_restore: List of specific gremlin databases available for restore.
    :vartype gremlin_databases_to_restore: list["GremlinDatabaseRestoreResource"]
    :ivar tables_to_restore: List of specific tables available for restore.
    :vartype tables_to_restore: list[str]
    :ivar source_backup_location: The source backup location for restore.
    :vartype source_backup_location: str
    """

    restoreMode: Union[str, "RestoreMode"]
    """Describes the mode of the restore. \"PointInTime\""""
    databasesToRestore: list["DatabaseRestoreResource"]
    """List of specific databases available for restore."""
    gremlinDatabasesToRestore: list["GremlinDatabaseRestoreResource"]
    """List of specific gremlin databases available for restore."""
    tablesToRestore: list[str]
    """List of specific tables available for restore."""
    sourceBackupLocation: str
    """The source backup location for restore."""


class Role(TypedDict, total=False):
    """The set of roles permitted through this Role Definition.

    :ivar db: The database name the role is applied.
    :vartype db: str
    :ivar role: The role name.
    :vartype role: str
    """

    db: str
    """The database name the role is applied."""
    role: str
    """The role name."""


class SeedNode(TypedDict, total=False):
    """SeedNode.

    :ivar ip_address: IP address of this seed node.
    :vartype ip_address: str
    """

    ipAddress: str
    """IP address of this seed node."""


class ServiceResource(ProxyResource):
    """Properties for the database account.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Services response resource.
    :vartype properties: "ServiceResourceProperties"
    """

    properties: "ServiceResourceProperties"
    """Services response resource."""


class ServiceResourceCreateUpdateParameters(TypedDict, total=False):
    """Parameters for Create or Update request for ServiceResource.

    :ivar properties: Properties in ServiceResourceCreateUpdateParameters.
    :vartype properties: "ServiceResourceCreateUpdateProperties"
    """

    properties: "ServiceResourceCreateUpdateProperties"
    """Properties in ServiceResourceCreateUpdateParameters."""


class SpatialSpec(TypedDict, total=False):
    """SpatialSpec.

    :ivar path: The path for which the indexing behavior applies to. Index paths typically start
     with root and end with wildcard (/path/*).
    :vartype path: str
    :ivar types: List of path's spatial type.
    :vartype types: list[Union[str, "SpatialType"]]
    """

    path: str
    """The path for which the indexing behavior applies to. Index paths typically start with root and
     end with wildcard (/path/*)."""
    types: list[Union[str, "SpatialType"]]
    """List of path's spatial type."""


class SqlContainerCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB container.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB container. Required.
    :vartype properties: "SqlContainerCreateUpdateProperties"
    """

    properties: Required["SqlContainerCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB container. Required."""


class SqlContainerCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB container.

    :ivar resource: The standard JSON format of a container. Required.
    :vartype resource: "SqlContainerResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["SqlContainerResource"]
    """The standard JSON format of a container. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class SqlContainerGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB container.

    :ivar resource:
    :vartype resource: "SqlContainerGetPropertiesResource"
    :ivar options:
    :vartype options: "SqlContainerGetPropertiesOptions"
    """

    resource: "SqlContainerGetPropertiesResource"
    options: "SqlContainerGetPropertiesOptions"


class SqlContainerGetPropertiesOptions(OptionsResource):
    """SqlContainerGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class SqlContainerGetPropertiesResource(SqlContainerResource):
    """SqlContainerGetPropertiesResource.

    :ivar id: Name of the Cosmos DB SQL container. Required.
    :vartype id: str
    :ivar indexing_policy: The configuration of the indexing policy. By default, the indexing is
     automatic for all document paths within the container.
    :vartype indexing_policy: "IndexingPolicy"
    :ivar partition_key: The configuration of the partition key to be used for partitioning data
     into multiple partitions.
    :vartype partition_key: "ContainerPartitionKey"
    :ivar default_ttl: Default time to live.
    :vartype default_ttl: int
    :ivar unique_key_policy: The unique key policy configuration for specifying uniqueness
     constraints on documents in the collection in the Azure Cosmos DB service.
    :vartype unique_key_policy: "UniqueKeyPolicy"
    :ivar conflict_resolution_policy: The conflict resolution policy for the container.
    :vartype conflict_resolution_policy: "ConflictResolutionPolicy"
    :ivar client_encryption_policy: The client encryption policy for the container.
    :vartype client_encryption_policy: "ClientEncryptionPolicy"
    :ivar analytical_storage_ttl: Analytical TTL.
    :vartype analytical_storage_ttl: int
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar computed_properties: List of computed properties.
    :vartype computed_properties: list["ComputedProperty"]
    :ivar vector_embedding_policy: The vector embedding policy for the container.
    :vartype vector_embedding_policy: "VectorEmbeddingPolicy"
    :ivar full_text_policy: The FullText policy for the container.
    :vartype full_text_policy: "FullTextPolicy"
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class SqlContainerGetResults(ProxyResource):
    """An Azure Cosmos DB container.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB container.
    :vartype properties: "SqlContainerGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SqlContainerGetProperties"
    """The properties of an Azure Cosmos DB container."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class SqlDatabaseCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB SQL database.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB SQL database. Required.
    :vartype properties: "SqlDatabaseCreateUpdateProperties"
    """

    properties: Required["SqlDatabaseCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB SQL database. Required."""


class SqlDatabaseCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB SQL database.

    :ivar resource: The standard JSON format of a SQL database. Required.
    :vartype resource: "SqlDatabaseResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["SqlDatabaseResource"]
    """The standard JSON format of a SQL database. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class SqlDatabaseGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB SQL database.

    :ivar resource:
    :vartype resource: "SqlDatabaseGetPropertiesResource"
    :ivar options:
    :vartype options: "SqlDatabaseGetPropertiesOptions"
    """

    resource: "SqlDatabaseGetPropertiesResource"
    options: "SqlDatabaseGetPropertiesOptions"


class SqlDatabaseGetPropertiesOptions(OptionsResource):
    """SqlDatabaseGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class SqlDatabaseGetPropertiesResource(SqlDatabaseResource):
    """SqlDatabaseGetPropertiesResource.

    :ivar id: Name of the Cosmos DB SQL database. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    :ivar colls: A system generated property that specified the addressable path of the collections
     resource.
    :vartype colls: str
    :ivar users: A system generated property that specifies the addressable path of the users
     resource.
    :vartype users: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""
    _colls: str
    """A system generated property that specified the addressable path of the collections resource."""
    _users: str
    """A system generated property that specifies the addressable path of the users resource."""


class SqlDatabaseGetResults(ProxyResource):
    """An Azure Cosmos DB SQL database.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB SQL database.
    :vartype properties: "SqlDatabaseGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SqlDatabaseGetProperties"
    """The properties of an Azure Cosmos DB SQL database."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class SqlDedicatedGatewayRegionalServiceResource(RegionalServiceResource):  # pylint: disable=name-too-long
    """Resource for a regional service location.

    :ivar name: The regional service name.
    :vartype name: str
    :ivar location: The location name.
    :vartype location: str
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar sql_dedicated_gateway_endpoint: The regional endpoint for SqlDedicatedGateway.
    :vartype sql_dedicated_gateway_endpoint: str
    """

    sqlDedicatedGatewayEndpoint: str
    """The regional endpoint for SqlDedicatedGateway."""


class SqlDedicatedGatewayServiceResourceCreateUpdateProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties for Create or Update request for SqlDedicatedGatewayServiceResource.

    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar dedicated_gateway_type: DedicatedGatewayType for the service. Known values are:
     "IntegratedCache" and "DistributedQuery".
    :vartype dedicated_gateway_type: Union[str, "DedicatedGatewayType"]
    :ivar service_type: ServiceType for the service. Required. SQL_DEDICATED_GATEWAY.
    :vartype service_type: Literal[ServiceType.SQL_DEDICATED_GATEWAY]
    """

    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    dedicatedGatewayType: Union[str, "DedicatedGatewayType"]
    """DedicatedGatewayType for the service. Known values are: \"IntegratedCache\" and
     \"DistributedQuery\"."""
    serviceType: Required[Literal[ServiceType.SQL_DEDICATED_GATEWAY]]
    """ServiceType for the service. Required. SQL_DEDICATED_GATEWAY."""


class SqlDedicatedGatewayServiceResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties for SqlDedicatedGatewayServiceResource.

    :ivar creation_time: Time of the last state change (ISO-8601 format).
    :vartype creation_time: str
    :ivar instance_size: Instance type for the service. Known values are: "Cosmos.D4s",
     "Cosmos.D8s", and "Cosmos.D16s".
    :vartype instance_size: Union[str, "ServiceSize"]
    :ivar instance_count: Instance count for the service.
    :vartype instance_count: int
    :ivar status: Describes the status of a service. Known values are: "Creating", "Running",
     "Updating", "Deleting", "Error", and "Stopped".
    :vartype status: Union[str, "ServiceStatus"]
    :ivar sql_dedicated_gateway_endpoint: SqlDedicatedGateway endpoint for the service.
    :vartype sql_dedicated_gateway_endpoint: str
    :ivar dedicated_gateway_type: DedicatedGatewayType for the service. Known values are:
     "IntegratedCache" and "DistributedQuery".
    :vartype dedicated_gateway_type: Union[str, "DedicatedGatewayType"]
    :ivar locations: An array that contains all of the locations for the service.
    :vartype locations: list["SqlDedicatedGatewayRegionalServiceResource"]
    :ivar service_type: ServiceType for the service. Required. SQL_DEDICATED_GATEWAY.
    :vartype service_type: Literal[ServiceType.SQL_DEDICATED_GATEWAY]
    """

    creationTime: str
    """Time of the last state change (ISO-8601 format)."""
    instanceSize: Union[str, "ServiceSize"]
    """Instance type for the service. Known values are: \"Cosmos.D4s\", \"Cosmos.D8s\", and
     \"Cosmos.D16s\"."""
    instanceCount: int
    """Instance count for the service."""
    status: Union[str, "ServiceStatus"]
    """Describes the status of a service. Known values are: \"Creating\", \"Running\", \"Updating\",
     \"Deleting\", \"Error\", and \"Stopped\"."""
    sqlDedicatedGatewayEndpoint: str
    """SqlDedicatedGateway endpoint for the service."""
    dedicatedGatewayType: Union[str, "DedicatedGatewayType"]
    """DedicatedGatewayType for the service. Known values are: \"IntegratedCache\" and
     \"DistributedQuery\"."""
    locations: list["SqlDedicatedGatewayRegionalServiceResource"]
    """An array that contains all of the locations for the service."""
    serviceType: Required[Literal[ServiceType.SQL_DEDICATED_GATEWAY]]
    """ServiceType for the service. Required. SQL_DEDICATED_GATEWAY."""


class SqlRoleAssignmentCreateUpdateParameters(TypedDict, total=False):
    """Parameters to create and update an Azure Cosmos DB SQL Role Assignment.

    :ivar properties: Properties to create and update an Azure Cosmos DB SQL Role Assignment.
    :vartype properties: "SqlRoleAssignmentResource"
    """

    properties: "SqlRoleAssignmentResource"
    """Properties to create and update an Azure Cosmos DB SQL Role Assignment."""


class SqlRoleAssignmentGetResults(ProxyResource):
    """An Azure Cosmos DB Role Assignment.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties related to the Role Assignment.
    :vartype properties: "SqlRoleAssignmentResource"
    """

    properties: "SqlRoleAssignmentResource"
    """Properties related to the Role Assignment."""


class SqlRoleAssignmentResource(TypedDict, total=False):
    """Azure Cosmos DB SQL Role Assignment resource object.

    :ivar role_definition_id: The unique identifier for the associated Role Definition.
    :vartype role_definition_id: str
    :ivar scope: The data plane resource path for which access is being granted through this Role
     Assignment.
    :vartype scope: str
    :ivar principal_id: The unique identifier for the associated AAD principal in the AAD graph to
     which access is being granted through this Role Assignment. Tenant ID for the principal is
     inferred using the tenant associated with the subscription.
    :vartype principal_id: str
    """

    roleDefinitionId: str
    """The unique identifier for the associated Role Definition."""
    scope: str
    """The data plane resource path for which access is being granted through this Role Assignment."""
    principalId: str
    """The unique identifier for the associated AAD principal in the AAD graph to which access is
     being granted through this Role Assignment. Tenant ID for the principal is inferred using the
     tenant associated with the subscription."""


class SqlRoleDefinitionCreateUpdateParameters(TypedDict, total=False):
    """Parameters to create and update an Azure Cosmos DB SQL Role Definition.

    :ivar properties: Properties to create and update an Azure Cosmos DB SQL Role Definition.
    :vartype properties: "SqlRoleDefinitionResource"
    """

    properties: "SqlRoleDefinitionResource"
    """Properties to create and update an Azure Cosmos DB SQL Role Definition."""


class SqlRoleDefinitionGetResults(ProxyResource):
    """An Azure Cosmos DB SQL Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties related to the Role Definition.
    :vartype properties: "SqlRoleDefinitionResource"
    """

    properties: "SqlRoleDefinitionResource"
    """Properties related to the Role Definition."""


class SqlRoleDefinitionResource(TypedDict, total=False):
    """Azure Cosmos DB SQL Role Definition resource object.

    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "RoleDefinitionType"]
    :ivar assignable_scopes: A set of fully qualified Scopes at or below which Role Assignments may
     be created using this Role Definition. This will allow application of this Role Definition on
     the entire database account or any underlying Database / Collection. Must have at least one
     element. Scopes higher than Database account are not enforceable as assignable Scopes. Note
     that resources referenced in assignable Scopes need not exist.
    :vartype assignable_scopes: list[str]
    :ivar permissions: The set of operations allowed through this Role Definition.
    :vartype permissions: list["Permission"]
    """

    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "RoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    assignableScopes: list[str]
    """A set of fully qualified Scopes at or below which Role Assignments may be created using this
     Role Definition. This will allow application of this Role Definition on the entire database
     account or any underlying Database / Collection. Must have at least one element. Scopes higher
     than Database account are not enforceable as assignable Scopes. Note that resources referenced
     in assignable Scopes need not exist."""
    permissions: list["Permission"]
    """The set of operations allowed through this Role Definition."""


class SqlStoredProcedureCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB storedProcedure.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB storedProcedure. Required.
    :vartype properties: "SqlStoredProcedureCreateUpdateProperties"
    """

    properties: Required["SqlStoredProcedureCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB storedProcedure. Required."""


class SqlStoredProcedureCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB storedProcedure.

    :ivar resource: The standard JSON format of a storedProcedure. Required.
    :vartype resource: "SqlStoredProcedureResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["SqlStoredProcedureResource"]
    """The standard JSON format of a storedProcedure. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class SqlStoredProcedureGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB StoredProcedure.

    :ivar resource:
    :vartype resource: "SqlStoredProcedureGetPropertiesResource"
    """

    resource: "SqlStoredProcedureGetPropertiesResource"


class SqlStoredProcedureResource(TypedDict, total=False):
    """Cosmos DB SQL storedProcedure resource object.

    :ivar id: Name of the Cosmos DB SQL storedProcedure. Required.
    :vartype id: str
    :ivar body: Body of the Stored Procedure.
    :vartype body: str
    """

    id: Required[str]
    """Name of the Cosmos DB SQL storedProcedure. Required."""
    body: str
    """Body of the Stored Procedure."""


class SqlStoredProcedureGetPropertiesResource(SqlStoredProcedureResource):
    """SqlStoredProcedureGetPropertiesResource.

    :ivar id: Name of the Cosmos DB SQL storedProcedure. Required.
    :vartype id: str
    :ivar body: Body of the Stored Procedure.
    :vartype body: str
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class SqlStoredProcedureGetResults(ProxyResource):
    """An Azure Cosmos DB storedProcedure.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB storedProcedure.
    :vartype properties: "SqlStoredProcedureGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SqlStoredProcedureGetProperties"
    """The properties of an Azure Cosmos DB storedProcedure."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class SqlTriggerCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB trigger.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB trigger. Required.
    :vartype properties: "SqlTriggerCreateUpdateProperties"
    """

    properties: Required["SqlTriggerCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB trigger. Required."""


class SqlTriggerCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB trigger.

    :ivar resource: The standard JSON format of a trigger. Required.
    :vartype resource: "SqlTriggerResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["SqlTriggerResource"]
    """The standard JSON format of a trigger. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class SqlTriggerGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB trigger.

    :ivar resource:
    :vartype resource: "SqlTriggerGetPropertiesResource"
    """

    resource: "SqlTriggerGetPropertiesResource"


class SqlTriggerResource(TypedDict, total=False):
    """Cosmos DB SQL trigger resource object.

    :ivar id: Name of the Cosmos DB SQL trigger. Required.
    :vartype id: str
    :ivar body: Body of the Trigger.
    :vartype body: str
    :ivar trigger_type: Type of the Trigger. Known values are: "Pre" and "Post".
    :vartype trigger_type: Union[str, "TriggerType"]
    :ivar trigger_operation: The operation the trigger is associated with. Known values are: "All",
     "Create", "Update", "Delete", and "Replace".
    :vartype trigger_operation: Union[str, "TriggerOperation"]
    """

    id: Required[str]
    """Name of the Cosmos DB SQL trigger. Required."""
    body: str
    """Body of the Trigger."""
    triggerType: Union[str, "TriggerType"]
    """Type of the Trigger. Known values are: \"Pre\" and \"Post\"."""
    triggerOperation: Union[str, "TriggerOperation"]
    """The operation the trigger is associated with. Known values are: \"All\", \"Create\",
     \"Update\", \"Delete\", and \"Replace\"."""


class SqlTriggerGetPropertiesResource(SqlTriggerResource):
    """SqlTriggerGetPropertiesResource.

    :ivar id: Name of the Cosmos DB SQL trigger. Required.
    :vartype id: str
    :ivar body: Body of the Trigger.
    :vartype body: str
    :ivar trigger_type: Type of the Trigger. Known values are: "Pre" and "Post".
    :vartype trigger_type: Union[str, "TriggerType"]
    :ivar trigger_operation: The operation the trigger is associated with. Known values are: "All",
     "Create", "Update", "Delete", and "Replace".
    :vartype trigger_operation: Union[str, "TriggerOperation"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class SqlTriggerGetResults(ProxyResource):
    """An Azure Cosmos DB trigger.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB trigger.
    :vartype properties: "SqlTriggerGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SqlTriggerGetProperties"
    """The properties of an Azure Cosmos DB trigger."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class SqlUserDefinedFunctionCreateUpdateParameters(ARMResourceProperties):  # pylint: disable=name-too-long
    """Parameters to create and update Cosmos DB userDefinedFunction.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB userDefinedFunction.
     Required.
    :vartype properties: "SqlUserDefinedFunctionCreateUpdateProperties"
    """

    properties: Required["SqlUserDefinedFunctionCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB userDefinedFunction. Required."""


class SqlUserDefinedFunctionCreateUpdateProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties to create and update Azure Cosmos DB userDefinedFunction.

    :ivar resource: The standard JSON format of a userDefinedFunction. Required.
    :vartype resource: "SqlUserDefinedFunctionResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["SqlUserDefinedFunctionResource"]
    """The standard JSON format of a userDefinedFunction. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class SqlUserDefinedFunctionGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB userDefinedFunction.

    :ivar resource:
    :vartype resource: "SqlUserDefinedFunctionGetPropertiesResource"
    """

    resource: "SqlUserDefinedFunctionGetPropertiesResource"


class SqlUserDefinedFunctionResource(TypedDict, total=False):
    """Cosmos DB SQL userDefinedFunction resource object.

    :ivar id: Name of the Cosmos DB SQL userDefinedFunction. Required.
    :vartype id: str
    :ivar body: Body of the User Defined Function.
    :vartype body: str
    """

    id: Required[str]
    """Name of the Cosmos DB SQL userDefinedFunction. Required."""
    body: str
    """Body of the User Defined Function."""


class SqlUserDefinedFunctionGetPropertiesResource(SqlUserDefinedFunctionResource):  # pylint: disable=name-too-long
    """SqlUserDefinedFunctionGetPropertiesResource.

    :ivar id: Name of the Cosmos DB SQL userDefinedFunction. Required.
    :vartype id: str
    :ivar body: Body of the User Defined Function.
    :vartype body: str
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class SqlUserDefinedFunctionGetResults(ProxyResource):
    """An Azure Cosmos DB userDefinedFunction.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB userDefinedFunction.
    :vartype properties: "SqlUserDefinedFunctionGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SqlUserDefinedFunctionGetProperties"
    """The properties of an Azure Cosmos DB userDefinedFunction."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class SystemData(TypedDict, total=False):
    """Metadata pertaining to creation and last modification of the resource.

    :ivar created_by: The identity that created the resource.
    :vartype created_by: str
    :ivar created_by_type: The type of identity that created the resource. Known values are:
     "User", "Application", "ManagedIdentity", and "Key".
    :vartype created_by_type: Union[str, "CreatedByType"]
    :ivar created_at: The timestamp of resource creation (UTC).
    :vartype created_at: str
    :ivar last_modified_by: The identity that last modified the resource.
    :vartype last_modified_by: str
    :ivar last_modified_by_type: The type of identity that last modified the resource. Known values
     are: "User", "Application", "ManagedIdentity", and "Key".
    :vartype last_modified_by_type: Union[str, "CreatedByType"]
    :ivar last_modified_at: The timestamp of resource last modification (UTC).
    :vartype last_modified_at: str
    """

    createdBy: str
    """The identity that created the resource."""
    createdByType: Union[str, "CreatedByType"]
    """The type of identity that created the resource. Known values are: \"User\", \"Application\",
     \"ManagedIdentity\", and \"Key\"."""
    createdAt: str
    """The timestamp of resource creation (UTC)."""
    lastModifiedBy: str
    """The identity that last modified the resource."""
    lastModifiedByType: Union[str, "CreatedByType"]
    """The type of identity that last modified the resource. Known values are: \"User\",
     \"Application\", \"ManagedIdentity\", and \"Key\"."""
    lastModifiedAt: str
    """The timestamp of resource last modification (UTC)."""


class TableCreateUpdateParameters(ARMResourceProperties):
    """Parameters to create and update Cosmos DB Table.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to create and update Azure Cosmos DB Table. Required.
    :vartype properties: "TableCreateUpdateProperties"
    """

    properties: Required["TableCreateUpdateProperties"]
    """Properties to create and update Azure Cosmos DB Table. Required."""


class TableCreateUpdateProperties(TypedDict, total=False):
    """Properties to create and update Azure Cosmos DB Table.

    :ivar resource: The standard JSON format of a Table. Required.
    :vartype resource: "TableResource"
    :ivar options: A key-value pair of options to be applied for the request. This corresponds to
     the headers sent with the request.
    :vartype options: "CreateUpdateOptions"
    """

    resource: Required["TableResource"]
    """The standard JSON format of a Table. Required."""
    options: "CreateUpdateOptions"
    """A key-value pair of options to be applied for the request. This corresponds to the headers sent
     with the request."""


class TableGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos Table.

    :ivar resource:
    :vartype resource: "TableGetPropertiesResource"
    :ivar options:
    :vartype options: "TableGetPropertiesOptions"
    """

    resource: "TableGetPropertiesResource"
    options: "TableGetPropertiesOptions"


class TableGetPropertiesOptions(OptionsResource):
    """TableGetPropertiesOptions.

    :ivar throughput: Value of the Cosmos DB resource throughput or autoscaleSettings. Use the
     ThroughputSetting resource when retrieving offer details.
    :vartype throughput: int
    :ivar autoscale_settings: Specifies the Autoscale settings.
    :vartype autoscale_settings: "AutoscaleSettings"
    """


class TableResource(TypedDict, total=False):
    """Cosmos DB table resource object.

    :ivar id: Name of the Cosmos DB table. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    """

    id: Required[str]
    """Name of the Cosmos DB table. Required."""
    restoreParameters: "ResourceRestoreParameters"
    """Parameters to indicate the information about the restore."""
    createMode: Union[str, "CreateMode"]
    """Enum to indicate the mode of account creation. Known values are: \"Default\" and \"Restore\"."""


class TableGetPropertiesResource(TableResource):
    """TableGetPropertiesResource.

    :ivar id: Name of the Cosmos DB table. Required.
    :vartype id: str
    :ivar restore_parameters: Parameters to indicate the information about the restore.
    :vartype restore_parameters: "ResourceRestoreParameters"
    :ivar create_mode: Enum to indicate the mode of account creation. Known values are: "Default"
     and "Restore".
    :vartype create_mode: Union[str, "CreateMode"]
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class TableGetResults(ProxyResource):
    """An Azure Cosmos DB Table.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB Table.
    :vartype properties: "TableGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "TableGetProperties"
    """The properties of an Azure Cosmos DB Table."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class TableRoleAssignmentResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Table Role Assignment.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Table Role Assignment.
    :vartype properties: "TableRoleAssignmentResourceProperties"
    """

    properties: "TableRoleAssignmentResourceProperties"
    """Properties to create and update an Azure Cosmos DB Table Role Assignment."""


class TableRoleAssignmentResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB Table Role Assignment resource object.

    :ivar role_definition_id: The unique identifier for the associated Role Definition.
    :vartype role_definition_id: str
    :ivar scope: The data plane resource path for which access is being granted through this Table
     Role Assignment.
    :vartype scope: str
    :ivar principal_id: The unique identifier for the associated AAD principal in the AAD graph to
     which access is being granted through this Table Role Assignment. Tenant ID for the principal
     is inferred using the tenant associated with the subscription.
    :vartype principal_id: str
    :ivar provisioning_state: Provisioning state of the resource.
    :vartype provisioning_state: str
    """

    roleDefinitionId: str
    """The unique identifier for the associated Role Definition."""
    scope: str
    """The data plane resource path for which access is being granted through this Table Role
     Assignment."""
    principalId: str
    """The unique identifier for the associated AAD principal in the AAD graph to which access is
     being granted through this Table Role Assignment. Tenant ID for the principal is inferred using
     the tenant associated with the subscription."""
    provisioningState: str
    """Provisioning state of the resource."""


class TableRoleDefinitionResource(ProxyResource):
    """Parameters to create and update an Azure Cosmos DB Table Role Definition.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Properties to create and update an Azure Cosmos DB Table Role Definition.
    :vartype properties: "TableRoleDefinitionResourceProperties"
    """

    properties: "TableRoleDefinitionResourceProperties"
    """Properties to create and update an Azure Cosmos DB Table Role Definition."""


class TableRoleDefinitionResourceProperties(TypedDict, total=False):
    """Azure Cosmos DB Table Role Definition resource object.

    :ivar id: The path id for the Role Definition.
    :vartype id: str
    :ivar role_name: A user-friendly name for the Role Definition. Must be unique for the database
     account.
    :vartype role_name: str
    :ivar type: Indicates whether the Role Definition was built-in or user created. Known values
     are: "BuiltInRole" and "CustomRole".
    :vartype type: Union[str, "RoleDefinitionType"]
    :ivar assignable_scopes: A set of fully qualified Scopes at or below which Table Role
     Assignments may be created using this Role Definition. This will allow application of this Role
     Definition on the entire database account or any underlying Database / Collection. Must have at
     least one element. Scopes higher than Database account are not enforceable as assignable
     Scopes. Note that resources referenced in assignable Scopes need not exist.
    :vartype assignable_scopes: list[str]
    :ivar permissions: The set of operations allowed through this Role Definition.
    :vartype permissions: list["Permission"]
    """

    id: str
    """The path id for the Role Definition."""
    roleName: str
    """A user-friendly name for the Role Definition. Must be unique for the database account."""
    type: Union[str, "RoleDefinitionType"]
    """Indicates whether the Role Definition was built-in or user created. Known values are:
     \"BuiltInRole\" and \"CustomRole\"."""
    assignableScopes: list[str]
    """A set of fully qualified Scopes at or below which Table Role Assignments may be created using
     this Role Definition. This will allow application of this Role Definition on the entire
     database account or any underlying Database / Collection. Must have at least one element.
     Scopes higher than Database account are not enforceable as assignable Scopes. Note that
     resources referenced in assignable Scopes need not exist."""
    permissions: list["Permission"]
    """The set of operations allowed through this Role Definition."""


class ThroughputPolicyResource(TypedDict, total=False):
    """Cosmos DB resource throughput policy.

    :ivar is_enabled: Determines whether the ThroughputPolicy is active or not.
    :vartype is_enabled: bool
    :ivar increment_percent: Represents the percentage by which throughput can increase every time
     throughput policy kicks in.
    :vartype increment_percent: int
    """

    isEnabled: bool
    """Determines whether the ThroughputPolicy is active or not."""
    incrementPercent: int
    """Represents the percentage by which throughput can increase every time throughput policy kicks
     in."""


class ThroughputSettingsGetProperties(TypedDict, total=False):
    """The properties of an Azure Cosmos DB resource throughput.

    :ivar resource:
    :vartype resource: "ThroughputSettingsGetPropertiesResource"
    """

    resource: "ThroughputSettingsGetPropertiesResource"


class ThroughputSettingsResource(TypedDict, total=False):
    """Cosmos DB resource throughput object. Either throughput is required or autoscaleSettings is
    required, but not both.

    :ivar throughput: Value of the Cosmos DB resource throughput. Either throughput is required or
     autoscaleSettings is required, but not both.
    :vartype throughput: int
    :ivar autoscale_settings: Cosmos DB resource for autoscale settings. Either throughput is
     required or autoscaleSettings is required, but not both.
    :vartype autoscale_settings: "AutoscaleSettingsResource"
    :ivar minimum_throughput: The minimum throughput of the resource.
    :vartype minimum_throughput: str
    :ivar offer_replace_pending: The throughput replace is pending.
    :vartype offer_replace_pending: str
    :ivar instant_maximum_throughput: The offer throughput value to instantly scale up without
     triggering splits.
    :vartype instant_maximum_throughput: str
    :ivar soft_allowed_maximum_throughput: The maximum throughput value or the maximum
     maxThroughput value (for autoscale) that can be specified.
    :vartype soft_allowed_maximum_throughput: str
    """

    throughput: int
    """Value of the Cosmos DB resource throughput. Either throughput is required or autoscaleSettings
     is required, but not both."""
    autoscaleSettings: "AutoscaleSettingsResource"
    """Cosmos DB resource for autoscale settings. Either throughput is required or autoscaleSettings
     is required, but not both."""
    minimumThroughput: str
    """The minimum throughput of the resource."""
    offerReplacePending: str
    """The throughput replace is pending."""
    instantMaximumThroughput: str
    """The offer throughput value to instantly scale up without triggering splits."""
    softAllowedMaximumThroughput: str
    """The maximum throughput value or the maximum maxThroughput value (for autoscale) that can be
     specified."""


class ThroughputSettingsGetPropertiesResource(ThroughputSettingsResource):
    """ThroughputSettingsGetPropertiesResource.

    :ivar throughput: Value of the Cosmos DB resource throughput. Either throughput is required or
     autoscaleSettings is required, but not both.
    :vartype throughput: int
    :ivar autoscale_settings: Cosmos DB resource for autoscale settings. Either throughput is
     required or autoscaleSettings is required, but not both.
    :vartype autoscale_settings: "AutoscaleSettingsResource"
    :ivar minimum_throughput: The minimum throughput of the resource.
    :vartype minimum_throughput: str
    :ivar offer_replace_pending: The throughput replace is pending.
    :vartype offer_replace_pending: str
    :ivar instant_maximum_throughput: The offer throughput value to instantly scale up without
     triggering splits.
    :vartype instant_maximum_throughput: str
    :ivar soft_allowed_maximum_throughput: The maximum throughput value or the maximum
     maxThroughput value (for autoscale) that can be specified.
    :vartype soft_allowed_maximum_throughput: str
    :ivar rid: A system generated property. A unique identifier.
    :vartype rid: str
    :ivar ts: A system generated property that denotes the last updated timestamp of the resource.
    :vartype ts: float
    :ivar etag: A system generated property representing the resource etag required for optimistic
     concurrency control.
    :vartype etag: str
    """

    _rid: str
    """A system generated property. A unique identifier."""
    _ts: float
    """A system generated property that denotes the last updated timestamp of the resource."""
    _etag: str
    """A system generated property representing the resource etag required for optimistic concurrency
     control."""


class ThroughputSettingsGetResults(ProxyResource):
    """An Azure Cosmos DB resource throughput.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of an Azure Cosmos DB resource throughput.
    :vartype properties: "ThroughputSettingsGetProperties"
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "ThroughputSettingsGetProperties"
    """The properties of an Azure Cosmos DB resource throughput."""
    location: str
    """The location of the resource group to which the resource belongs."""
    tags: dict[str, str]
    """Tags are a list of key-value pairs that describe the resource. These tags can be used in
     viewing and grouping this resource (across resource groups). A maximum of 15 tags can be
     provided for a resource. Each tag must have a key no greater than 128 characters and value no
     greater than 256 characters. For example, the default experience for a template type is set
     with \\"defaultExperience\\": \\"Cassandra\\". Current \\"defaultExperience\\" values also
     include \\"Table\\", \\"Graph\\", \\"DocumentDB\\", and \\"MongoDB\\"."""
    identity: "ManagedServiceIdentity"
    """Identity for the resource."""


class ThroughputSettingsUpdateParameters(ARMResourceProperties):
    """Parameters to update Cosmos DB resource throughput.

    :ivar id: The unique resource identifier of the ARM resource.
    :vartype id: str
    :ivar name: The name of the ARM resource.
    :vartype name: str
    :ivar type: The type of Azure resource.
    :vartype type: str
    :ivar location: The location of the resource group to which the resource belongs.
    :vartype location: str
    :ivar tags: Tags are a list of key-value pairs that describe the resource. These tags can be
     used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can
     be provided for a resource. Each tag must have a key no greater than 128 characters and value
     no greater than 256 characters. For example, the default experience for a template type is set
     with "defaultExperience": "Cassandra". Current "defaultExperience" values also include "Table",
     "Graph", "DocumentDB", and "MongoDB".
    :vartype tags: dict[str, str]
    :ivar identity: Identity for the resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar properties: Properties to update Azure Cosmos DB resource throughput. Required.
    :vartype properties: "ThroughputSettingsUpdateProperties"
    """

    properties: Required["ThroughputSettingsUpdateProperties"]
    """Properties to update Azure Cosmos DB resource throughput. Required."""


class ThroughputSettingsUpdateProperties(TypedDict, total=False):
    """Properties to update Azure Cosmos DB resource throughput.

    :ivar resource: The standard JSON format of a resource throughput. Required.
    :vartype resource: "ThroughputSettingsResource"
    """

    resource: Required["ThroughputSettingsResource"]
    """The standard JSON format of a resource throughput. Required."""


class UniqueKey(TypedDict, total=False):
    """The unique key on that enforces uniqueness constraint on documents in the collection in the
    Azure Cosmos DB service.

    :ivar paths: List of paths must be unique for each document in the Azure Cosmos DB service.
    :vartype paths: list[str]
    """

    paths: list[str]
    """List of paths must be unique for each document in the Azure Cosmos DB service."""


class UniqueKeyPolicy(TypedDict, total=False):
    """The unique key policy configuration for specifying uniqueness constraints on documents in the
    collection in the Azure Cosmos DB service.

    :ivar unique_keys: List of unique keys on that enforces uniqueness constraint on documents in
     the collection in the Azure Cosmos DB service.
    :vartype unique_keys: list["UniqueKey"]
    """

    uniqueKeys: list["UniqueKey"]
    """List of unique keys on that enforces uniqueness constraint on documents in the collection in
     the Azure Cosmos DB service."""


class VectorEmbedding(TypedDict, total=False):
    """Represents a vector embedding. A vector embedding is used to define a vector field in the
    documents.

    :ivar path: The path to the vector field in the document. Required.
    :vartype path: str
    :ivar data_type: Indicates the data type of vector. Required. Known values are: "float32",
     "uint8", "int8", and "float16".
    :vartype data_type: Union[str, "VectorDataType"]
    :ivar distance_function: The distance function to use for distance calculation in between
     vectors. Required. Known values are: "euclidean", "cosine", and "dotproduct".
    :vartype distance_function: Union[str, "DistanceFunction"]
    :ivar dimensions: The number of dimensions in the vector. Required.
    :vartype dimensions: int
    """

    path: Required[str]
    """The path to the vector field in the document. Required."""
    dataType: Required[Union[str, "VectorDataType"]]
    """Indicates the data type of vector. Required. Known values are: \"float32\", \"uint8\",
     \"int8\", and \"float16\"."""
    distanceFunction: Required[Union[str, "DistanceFunction"]]
    """The distance function to use for distance calculation in between vectors. Required. Known
     values are: \"euclidean\", \"cosine\", and \"dotproduct\"."""
    dimensions: Required[int]
    """The number of dimensions in the vector. Required."""


class VectorEmbeddingPolicy(TypedDict, total=False):
    """Cosmos DB Vector Embedding Policy.

    :ivar vector_embeddings: List of vector embeddings.
    :vartype vector_embeddings: list["VectorEmbedding"]
    """

    vectorEmbeddings: list["VectorEmbedding"]
    """List of vector embeddings."""


class VectorIndex(TypedDict, total=False):
    """VectorIndex.

    :ivar path: The path to the vector field in the document. Required.
    :vartype path: str
    :ivar type: The index type of the vector. Currently, flat, diskANN, and quantizedFlat are
     supported. Required. Known values are: "flat", "diskANN", and "quantizedFlat".
    :vartype type: Union[str, "VectorIndexType"]
    :ivar quantization_byte_size: The number of bytes used in product quantization of the vectors.
     A larger value may result in better recall for vector searches at the expense of latency. This
     is only applicable for the quantizedFlat and diskANN vector index types.
    :vartype quantization_byte_size: int
    :ivar indexing_search_list_size: This is the size of the candidate list of approximate
     neighbors stored while building the DiskANN index as part of the optimization processes. Large
     values may improve recall at the expense of latency. This is only applicable for the diskANN
     vector index type.
    :vartype indexing_search_list_size: int
    :ivar vector_index_shard_key: Array of shard keys for the vector index. This is only applicable
     for the quantizedFlat and diskANN vector index types.
    :vartype vector_index_shard_key: list[str]
    """

    path: Required[str]
    """The path to the vector field in the document. Required."""
    type: Required[Union[str, "VectorIndexType"]]
    """The index type of the vector. Currently, flat, diskANN, and quantizedFlat are supported.
     Required. Known values are: \"flat\", \"diskANN\", and \"quantizedFlat\"."""
    quantizationByteSize: int
    """The number of bytes used in product quantization of the vectors. A larger value may result in
     better recall for vector searches at the expense of latency. This is only applicable for the
     quantizedFlat and diskANN vector index types."""
    indexingSearchListSize: int
    """This is the size of the candidate list of approximate neighbors stored while building the
     DiskANN index as part of the optimization processes. Large values may improve recall at the
     expense of latency. This is only applicable for the diskANN vector index type."""
    vectorIndexShardKey: list[str]
    """Array of shard keys for the vector index. This is only applicable for the quantizedFlat and
     diskANN vector index types."""


class VirtualNetworkRule(TypedDict, total=False):
    """Virtual Network ACL Rule object.

    :ivar id: Resource ID of a subnet, for example:
     /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}.
    :vartype id: str
    :ivar ignore_missing_v_net_service_endpoint: Create firewall rule before the virtual network
     has vnet service endpoint enabled.
    :vartype ignore_missing_v_net_service_endpoint: bool
    """

    id: str
    """Resource ID of a subnet, for example:
     /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}."""
    ignoreMissingVNetServiceEndpoint: bool
    """Create firewall rule before the virtual network has vnet service endpoint enabled."""


BackupPolicy = Union[ContinuousModeBackupPolicy, PeriodicModeBackupPolicy]
ServiceResourceCreateUpdateProperties = Union[
    DataTransferServiceResourceCreateUpdateProperties,
    GraphAPIComputeServiceResourceCreateUpdateProperties,
    MaterializedViewsBuilderServiceResourceCreateUpdateProperties,
    SqlDedicatedGatewayServiceResourceCreateUpdateProperties,
]
ServiceResourceProperties = Union[
    DataTransferServiceResourceProperties,
    GraphAPIComputeServiceResourceProperties,
    MaterializedViewsBuilderServiceResourceProperties,
    SqlDedicatedGatewayServiceResourceProperties,
]
