# 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

if TYPE_CHECKING:
    from .models import (
        AccessRights,
        CreatedByType,
        DefaultAction,
        EndPointProvisioningState,
        EntityStatus,
        FilterType,
        GeoDRRoleType,
        IpAddressType,
        KeyType,
        ManagedServiceIdentityType,
        Mode,
        NetworkRuleIPAction,
        PrivateLinkConnectionStatus,
        ProvisioningStateDR,
        PublicNetworkAccess,
        PublicNetworkAccessFlag,
        RoleDisasterRecovery,
        SkuName,
        SkuTier,
        TlsVersion,
    )


class Action(TypedDict, total=False):
    """Represents the filter actions which are allowed for the transformation of a message that have
    been matched by a filter expression.

    :ivar sql_expression: SQL expression. e.g. MyProperty='ABC'.
    :vartype sql_expression: str
    :ivar compatibility_level: This property is reserved for future use. An integer value showing
     the compatibility level, currently hard-coded to 20.
    :vartype compatibility_level: int
    :ivar requires_preprocessing: Value that indicates whether the rule action requires
     preprocessing.
    :vartype requires_preprocessing: bool
    """

    sqlExpression: str
    """SQL expression. e.g. MyProperty='ABC'."""
    compatibilityLevel: int
    """This property is reserved for future use. An integer value showing the compatibility level,
     currently hard-coded to 20."""
    requiresPreprocessing: bool
    """Value that indicates whether the rule action requires preprocessing."""


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 ArmDisasterRecovery(ProxyResource):
    """Single item in List or Get Alias(Disaster Recovery configuration) operation.

    :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 required to the Create Or Update Alias(Disaster Recovery
     configurations).
    :vartype properties: "ArmDisasterRecoveryProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "ArmDisasterRecoveryProperties"
    """Properties required to the Create Or Update Alias(Disaster Recovery configurations)."""
    location: str
    """The geo-location where the resource lives."""


class ArmDisasterRecoveryProperties(TypedDict, total=False):
    """Properties required to the Create Or Update Alias(Disaster Recovery configurations).

    :ivar provisioning_state: Provisioning state of the Alias(Disaster Recovery configuration) -
     possible values 'Accepted' or 'Succeeded' or 'Failed'. Known values are: "Accepted",
     "Succeeded", and "Failed".
    :vartype provisioning_state: Union[str, "ProvisioningStateDR"]
    :ivar pending_replication_operations_count: Number of entities pending to be replicated.
    :vartype pending_replication_operations_count: int
    :ivar partner_namespace: ARM Id of the Primary/Secondary eventhub namespace name, which is part
     of GEO DR pairing.
    :vartype partner_namespace: str
    :ivar alternate_name: Primary/Secondary eventhub namespace name, which is part of GEO DR
     pairing.
    :vartype alternate_name: str
    :ivar role: role of namespace in GEO DR - possible values 'Primary' or 'PrimaryNotReplicating'
     or 'Secondary'. Known values are: "Primary", "PrimaryNotReplicating", and "Secondary".
    :vartype role: Union[str, "RoleDisasterRecovery"]
    """

    provisioningState: Union[str, "ProvisioningStateDR"]
    """Provisioning state of the Alias(Disaster Recovery configuration) - possible values 'Accepted'
     or 'Succeeded' or 'Failed'. Known values are: \"Accepted\", \"Succeeded\", and \"Failed\"."""
    pendingReplicationOperationsCount: int
    """Number of entities pending to be replicated."""
    partnerNamespace: str
    """ARM Id of the Primary/Secondary eventhub namespace name, which is part of GEO DR pairing."""
    alternateName: str
    """Primary/Secondary eventhub namespace name, which is part of GEO DR pairing."""
    role: Union[str, "RoleDisasterRecovery"]
    """role of namespace in GEO DR - possible values 'Primary' or 'PrimaryNotReplicating' or
     'Secondary'. Known values are: \"Primary\", \"PrimaryNotReplicating\", and \"Secondary\"."""


class CheckNameAvailability(TypedDict, total=False):
    """Description of a Check Name availability request properties.

    :ivar name: The Name to check the namespace name availability and The namespace name can
     contain only letters, numbers, and hyphens. The namespace must start with a letter, and it must
     end with a letter or number. Required.
    :vartype name: str
    """

    name: Required[str]
    """The Name to check the namespace name availability and The namespace name can contain only
     letters, numbers, and hyphens. The namespace must start with a letter, and it must end with a
     letter or number. Required."""


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

    :ivar mode: Setting to Enable or Disable Confidential Compute. Known values are: "Disabled" and
     "Enabled".
    :vartype mode: Union[str, "Mode"]
    """

    mode: Union[str, "Mode"]
    """Setting to Enable or Disable Confidential Compute. Known values are: \"Disabled\" and
     \"Enabled\"."""


class ConnectionState(TypedDict, total=False):
    """ConnectionState information.

    :ivar status: Status of the connection. Known values are: "Pending", "Approved", "Rejected",
     and "Disconnected".
    :vartype status: Union[str, "PrivateLinkConnectionStatus"]
    :ivar description: Description of the connection state.
    :vartype description: str
    """

    status: Union[str, "PrivateLinkConnectionStatus"]
    """Status of the connection. Known values are: \"Pending\", \"Approved\", \"Rejected\", and
     \"Disconnected\"."""
    description: str
    """Description of the connection state."""


class CorrelationFilter(TypedDict, total=False):
    """Represents the correlation filter expression.

    :ivar properties: dictionary object for custom filters.
    :vartype properties: dict[str, str]
    :ivar correlation_id: Identifier of the correlation.
    :vartype correlation_id: str
    :ivar message_id: Identifier of the message.
    :vartype message_id: str
    :ivar to: Address to send to.
    :vartype to: str
    :ivar reply_to: Address of the queue to reply to.
    :vartype reply_to: str
    :ivar label: Application specific label.
    :vartype label: str
    :ivar session_id: Session identifier.
    :vartype session_id: str
    :ivar reply_to_session_id: Session identifier to reply to.
    :vartype reply_to_session_id: str
    :ivar content_type: Content type of the message.
    :vartype content_type: str
    :ivar requires_preprocessing: Value that indicates whether the rule action requires
     preprocessing.
    :vartype requires_preprocessing: bool
    """

    properties: dict[str, str]
    """dictionary object for custom filters."""
    correlationId: str
    """Identifier of the correlation."""
    messageId: str
    """Identifier of the message."""
    to: str
    """Address to send to."""
    replyTo: str
    """Address of the queue to reply to."""
    label: str
    """Application specific label."""
    sessionId: str
    """Session identifier."""
    replyToSessionId: str
    """Session identifier to reply to."""
    contentType: str
    """Content type of the message."""
    requiresPreprocessing: bool
    """Value that indicates whether the rule action requires preprocessing."""


class Encryption(TypedDict, total=False):
    """Properties to configure Encryption.

    :ivar key_vault_properties: Properties of KeyVault.
    :vartype key_vault_properties: list["KeyVaultProperties"]
    :ivar key_source: Enumerates the possible value of keySource for Encryption. Default value is
     "Microsoft.KeyVault".
    :vartype key_source: Literal["Microsoft.KeyVault"]
    :ivar require_infrastructure_encryption: Enable Infrastructure Encryption (Double Encryption).
    :vartype require_infrastructure_encryption: bool
    """

    keyVaultProperties: list["KeyVaultProperties"]
    """Properties of KeyVault."""
    keySource: Literal["Microsoft.KeyVault"]
    """Enumerates the possible value of keySource for Encryption. Default value is
     \"Microsoft.KeyVault\"."""
    requireInfrastructureEncryption: bool
    """Enable Infrastructure Encryption (Double Encryption)."""


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

    :ivar properties:
    :vartype properties: "FailOverProperties"
    """

    properties: "FailOverProperties"


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

    :ivar primary_location: Query parameter for the new primary location after failover.
    :vartype primary_location: str
    :ivar force: If Force is false then graceful failover is attempted after ensuring no data loss.
     If Force flag is set to true, Forced failover is attempted with possible data loss.
    :vartype force: bool
    """

    primaryLocation: str
    """Query parameter for the new primary location after failover."""
    force: bool
    """If Force is false then graceful failover is attempted after ensuring no data loss. If Force
     flag is set to true, Forced failover is attempted with possible data loss."""


class FailoverPropertiesProperties(TypedDict, total=False):
    """Safe failover is to indicate the service should wait for pending replication to finish before
    switching to the secondary.

    :ivar is_safe_failover: Safe failover is to indicate the service should wait for pending
     replication to finish before switching to the secondary.
    :vartype is_safe_failover: bool
    """

    IsSafeFailover: bool
    """Safe failover is to indicate the service should wait for pending replication to finish before
     switching to the secondary."""


class GeoDataReplicationProperties(TypedDict, total=False):
    """GeoDR Replication properties.

    :ivar max_replication_lag_duration_in_seconds: The maximum acceptable lag for data replication
     operations from the primary replica to a quorum of secondary replicas.  When the lag exceeds
     the configured amount, operations on the primary replica will be failed. The allowed values are
     0 and 5 minutes to 1 day.
    :vartype max_replication_lag_duration_in_seconds: int
    :ivar locations: A list of regions where replicas of the namespace are maintained.
    :vartype locations: list["NamespaceReplicaLocation"]
    """

    maxReplicationLagDurationInSeconds: int
    """The maximum acceptable lag for data replication operations from the primary replica to a quorum
     of secondary replicas.  When the lag exceeds the configured amount, operations on the primary
     replica will be failed. The allowed values are 0 and 5 minutes to 1 day."""
    locations: list["NamespaceReplicaLocation"]
    """A list of regions where replicas of the namespace are maintained."""


class Identity(TypedDict, total=False):
    """Properties to configure User Assigned Identities for Bring your Own Keys.

    :ivar principal_id: ObjectId from the KeyVault.
    :vartype principal_id: str
    :ivar tenant_id: TenantId from the KeyVault.
    :vartype tenant_id: str
    :ivar type: Type of managed service identity. Known values are: "SystemAssigned",
     "UserAssigned", "SystemAssigned, UserAssigned", and "None".
    :vartype type: Union[str, "ManagedServiceIdentityType"]
    :ivar user_assigned_identities: Properties for User Assigned Identities.
    :vartype user_assigned_identities: dict[str, "UserAssignedIdentity"]
    """

    principalId: str
    """ObjectId from the KeyVault."""
    tenantId: str
    """TenantId from the KeyVault."""
    type: Union[str, "ManagedServiceIdentityType"]
    """Type of managed service identity. Known values are: \"SystemAssigned\", \"UserAssigned\",
     \"SystemAssigned, UserAssigned\", and \"None\"."""
    userAssignedIdentities: dict[str, "UserAssignedIdentity"]
    """Properties for User Assigned Identities."""


class KeyVaultProperties(TypedDict, total=False):
    """Properties to configure keyVault Properties.

    :ivar key_name: Name of the Key from KeyVault.
    :vartype key_name: str
    :ivar key_vault_uri: Uri of KeyVault.
    :vartype key_vault_uri: str
    :ivar key_version: Version of KeyVault.
    :vartype key_version: str
    :ivar identity:
    :vartype identity: "UserAssignedIdentityProperties"
    """

    keyName: str
    """Name of the Key from KeyVault."""
    keyVaultUri: str
    """Uri of KeyVault."""
    keyVersion: str
    """Version of KeyVault."""
    identity: "UserAssignedIdentityProperties"


class MessageCountDetails(TypedDict, total=False):
    """Message Count Details.

    :ivar active_message_count: Number of active messages in the queue, topic, or subscription.
    :vartype active_message_count: int
    :ivar dead_letter_message_count: Number of messages that are dead lettered.
    :vartype dead_letter_message_count: int
    :ivar scheduled_message_count: Number of scheduled messages.
    :vartype scheduled_message_count: int
    :ivar transfer_message_count: Number of messages transferred to another queue, topic, or
     subscription.
    :vartype transfer_message_count: int
    :ivar transfer_dead_letter_message_count: Number of messages transferred into dead letters.
    :vartype transfer_dead_letter_message_count: int
    """

    activeMessageCount: int
    """Number of active messages in the queue, topic, or subscription."""
    deadLetterMessageCount: int
    """Number of messages that are dead lettered."""
    scheduledMessageCount: int
    """Number of scheduled messages."""
    transferMessageCount: int
    """Number of messages transferred to another queue, topic, or subscription."""
    transferDeadLetterMessageCount: int
    """Number of messages transferred into dead letters."""


class MigrationConfigProperties(ProxyResource):
    """Single item in List or Get Migration Config operation.

    :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 required to the Create Migration Configuration.
    :vartype properties: "MigrationConfigPropertiesProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "MigrationConfigPropertiesProperties"
    """Properties required to the Create Migration Configuration."""
    location: str
    """The geo-location where the resource lives."""


class MigrationConfigPropertiesProperties(TypedDict, total=False):
    """Properties required to the Create Migration Configuration.

    :ivar provisioning_state: Provisioning state of Migration ConfigurationProvisioning state of
     Migration Configuration.
    :vartype provisioning_state: str
    :ivar pending_replication_operations_count: Number of entities pending to be replicated.
    :vartype pending_replication_operations_count: int
    :ivar target_namespace: Existing premium Namespace ARM Id name which has no entities, will be
     used for migration. Required.
    :vartype target_namespace: str
    :ivar post_migration_name: Name to access Standard Namespace after migration. Required.
    :vartype post_migration_name: str
    :ivar migration_state: State in which Standard to Premium Migration is, possible values :
     Unknown, Reverting, Completing, Initiating, Syncing, Active.
    :vartype migration_state: str
    """

    provisioningState: str
    """Provisioning state of Migration ConfigurationProvisioning state of Migration Configuration."""
    pendingReplicationOperationsCount: int
    """Number of entities pending to be replicated."""
    targetNamespace: Required[str]
    """Existing premium Namespace ARM Id name which has no entities, will be used for migration.
     Required."""
    postMigrationName: Required[str]
    """Name to access Standard Namespace after migration. Required."""
    migrationState: str
    """State in which Standard to Premium Migration is, possible values : Unknown, Reverting,
     Completing, Initiating, Syncing, Active."""


class NamespaceFailoverProperties(TypedDict, total=False):
    """Safe failover is to indicate the service should wait for pending replication to finish before
    switching to the secondary.

    :ivar properties: Safe failover is to indicate the service should wait for pending replication
     to finish before switching to the secondary.
    :vartype properties: "FailoverPropertiesProperties"
    """

    properties: "FailoverPropertiesProperties"
    """Safe failover is to indicate the service should wait for pending replication to finish before
     switching to the secondary."""


class NamespaceReplicaLocation(TypedDict, total=False):
    """Namespace replication properties.

    :ivar location_name: Azure regions where a replica of the namespace is maintained.
    :vartype location_name: str
    :ivar role_type: GeoDR Role Types. Known values are: "Primary" and "Secondary".
    :vartype role_type: Union[str, "GeoDRRoleType"]
    """

    locationName: str
    """Azure regions where a replica of the namespace is maintained."""
    roleType: Union[str, "GeoDRRoleType"]
    """GeoDR Role Types. Known values are: \"Primary\" and \"Secondary\"."""


class NetworkRuleSet(ProxyResource):
    """Description of NetworkRuleSet 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: NetworkRuleSet properties.
    :vartype properties: "NetworkRuleSetProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "NetworkRuleSetProperties"
    """NetworkRuleSet properties."""
    location: str
    """The geo-location where the resource lives."""


class NetworkRuleSetProperties(TypedDict, total=False):
    """NetworkRuleSet properties.

    :ivar trusted_service_access_enabled: Value that indicates whether Trusted Service Access is
     Enabled or not.
    :vartype trusted_service_access_enabled: bool
    :ivar default_action: Default Action for Network Rule Set. Known values are: "Allow" and
     "Deny".
    :vartype default_action: Union[str, "DefaultAction"]
    :ivar virtual_network_rules: List VirtualNetwork Rules.
    :vartype virtual_network_rules: list["NWRuleSetVirtualNetworkRules"]
    :ivar ip_rules: List of IpRules.
    :vartype ip_rules: list["NWRuleSetIpRules"]
    :ivar public_network_access: This determines if traffic is allowed over public network. By
     default it is enabled. Known values are: "Enabled" and "Disabled".
    :vartype public_network_access: Union[str, "PublicNetworkAccessFlag"]
    """

    trustedServiceAccessEnabled: bool
    """Value that indicates whether Trusted Service Access is Enabled or not."""
    defaultAction: Union[str, "DefaultAction"]
    """Default Action for Network Rule Set. Known values are: \"Allow\" and \"Deny\"."""
    virtualNetworkRules: list["NWRuleSetVirtualNetworkRules"]
    """List VirtualNetwork Rules."""
    ipRules: list["NWRuleSetIpRules"]
    """List of IpRules."""
    publicNetworkAccess: Union[str, "PublicNetworkAccessFlag"]
    """This determines if traffic is allowed over public network. By default it is enabled. Known
     values are: \"Enabled\" and \"Disabled\"."""


class NWRuleSetIpRules(TypedDict, total=False):
    """Description of NetWorkRuleSet - IpRules resource.

    :ivar ip_mask: IP Mask.
    :vartype ip_mask: str
    :ivar action: The IP Filter Action. "Allow"
    :vartype action: Union[str, "NetworkRuleIPAction"]
    """

    ipMask: str
    """IP Mask."""
    action: Union[str, "NetworkRuleIPAction"]
    """The IP Filter Action. \"Allow\""""


class NWRuleSetVirtualNetworkRules(TypedDict, total=False):
    """Description of VirtualNetworkRules - NetworkRules resource.

    :ivar subnet: Subnet properties.
    :vartype subnet: "Subnet"
    :ivar ignore_missing_vnet_service_endpoint: Value that indicates whether to ignore missing VNet
     Service Endpoint.
    :vartype ignore_missing_vnet_service_endpoint: bool
    """

    subnet: "Subnet"
    """Subnet properties."""
    ignoreMissingVnetServiceEndpoint: bool
    """Value that indicates whether to ignore missing VNet Service Endpoint."""


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

    :ivar confidential_compute:
    :vartype confidential_compute: "ConfidentialCompute"
    """

    confidentialCompute: "ConfidentialCompute"


class PrivateEndpoint(TypedDict, total=False):
    """PrivateEndpoint information.

    :ivar id: The ARM identifier for Private Endpoint.
    :vartype id: str
    """

    id: str
    """The ARM identifier for Private Endpoint."""


class PrivateEndpointConnection(ProxyResource):
    """Properties of the PrivateEndpointConnection.

    :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 the PrivateEndpointConnection.
    :vartype properties: "PrivateEndpointConnectionProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "PrivateEndpointConnectionProperties"
    """Properties of the PrivateEndpointConnection."""
    location: str
    """The geo-location where the resource lives."""


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

    :ivar private_endpoint: The Private Endpoint resource for this Connection.
    :vartype private_endpoint: "PrivateEndpoint"
    :ivar private_link_service_connection_state: Details about the state of the connection.
    :vartype private_link_service_connection_state: "ConnectionState"
    :ivar provisioning_state: Provisioning state of the Private Endpoint Connection. Known values
     are: "Creating", "Updating", "Deleting", "Succeeded", "Canceled", and "Failed".
    :vartype provisioning_state: Union[str, "EndPointProvisioningState"]
    """

    privateEndpoint: "PrivateEndpoint"
    """The Private Endpoint resource for this Connection."""
    privateLinkServiceConnectionState: "ConnectionState"
    """Details about the state of the connection."""
    provisioningState: Union[str, "EndPointProvisioningState"]
    """Provisioning state of the Private Endpoint Connection. Known values are: \"Creating\",
     \"Updating\", \"Deleting\", \"Succeeded\", \"Canceled\", and \"Failed\"."""


class RegenerateAccessKeyParameters(TypedDict, total=False):
    """Parameters supplied to the Regenerate Authorization Rule operation, specifies which key needs
    to be reset.

    :ivar key_type: The access key to regenerate. Required. Known values are: "PrimaryKey" and
     "SecondaryKey".
    :vartype key_type: Union[str, "KeyType"]
    :ivar key: Optional, if the key value provided, is reset for KeyType value or autogenerate Key
     value set for keyType.
    :vartype key: str
    """

    keyType: Required[Union[str, "KeyType"]]
    """The access key to regenerate. Required. Known values are: \"PrimaryKey\" and \"SecondaryKey\"."""
    key: str
    """Optional, if the key value provided, is reset for KeyType value or autogenerate Key value set
     for keyType."""


class ResourceNamespacePatch(Resource):
    """The Resource 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 location: Resource location.
    :vartype location: str
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    """

    location: str
    """Resource location."""
    tags: dict[str, str]
    """Resource tags."""


class Rule(ProxyResource):
    """Description of Rule 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: Properties of Rule resource.
    :vartype properties: "Ruleproperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "Ruleproperties"
    """Properties of Rule resource."""
    location: str
    """The geo-location where the resource lives."""


class Ruleproperties(TypedDict, total=False):
    """Description of Rule Resource.

    :ivar action: Represents the filter actions which are allowed for the transformation of a
     message that have been matched by a filter expression.
    :vartype action: "Action"
    :ivar filter_type: Filter type that is evaluated against a BrokeredMessage. Known values are:
     "SqlFilter" and "CorrelationFilter".
    :vartype filter_type: Union[str, "FilterType"]
    :ivar sql_filter: Properties of sqlFilter.
    :vartype sql_filter: "SqlFilter"
    :ivar correlation_filter: Properties of correlationFilter.
    :vartype correlation_filter: "CorrelationFilter"
    """

    action: "Action"
    """Represents the filter actions which are allowed for the transformation of a message that have
     been matched by a filter expression."""
    filterType: Union[str, "FilterType"]
    """Filter type that is evaluated against a BrokeredMessage. Known values are: \"SqlFilter\" and
     \"CorrelationFilter\"."""
    sqlFilter: "SqlFilter"
    """Properties of sqlFilter."""
    correlationFilter: "CorrelationFilter"
    """Properties of correlationFilter."""


class SBAuthorizationRule(ProxyResource):
    """Description of a namespace authorization rule.

    :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: AuthorizationRule properties.
    :vartype properties: "SBAuthorizationRuleProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "SBAuthorizationRuleProperties"
    """AuthorizationRule properties."""
    location: str
    """The geo-location where the resource lives."""


class SBAuthorizationRuleProperties(TypedDict, total=False):
    """AuthorizationRule properties.

    :ivar rights: The rights associated with the rule. Required.
    :vartype rights: list[Union[str, "AccessRights"]]
    """

    rights: Required[list[Union[str, "AccessRights"]]]
    """The rights associated with the rule. Required."""


class SBClientAffineProperties(TypedDict, total=False):
    """Properties specific to client affine subscriptions.

    :ivar client_id: Indicates the Client ID of the application that created the client-affine
     subscription.
    :vartype client_id: str
    :ivar is_durable: For client-affine subscriptions, this value indicates whether the
     subscription is durable or not.
    :vartype is_durable: bool
    :ivar is_shared: For client-affine subscriptions, this value indicates whether the subscription
     is shared or not.
    :vartype is_shared: bool
    """

    clientId: str
    """Indicates the Client ID of the application that created the client-affine subscription."""
    isDurable: bool
    """For client-affine subscriptions, this value indicates whether the subscription is durable or
     not."""
    isShared: bool
    """For client-affine subscriptions, this value indicates whether the subscription is shared or
     not."""


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 SBNamespace(TrackedResource):
    """Description of a namespace 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
    :ivar properties: Properties of the namespace.
    :vartype properties: "SBNamespaceProperties"
    :ivar sku: Properties of SKU.
    :vartype sku: "SBSku"
    :ivar identity: Properties of BYOK Identity description.
    :vartype identity: "Identity"
    """

    properties: "SBNamespaceProperties"
    """Properties of the namespace."""
    sku: "SBSku"
    """Properties of SKU."""
    identity: "Identity"
    """Properties of BYOK Identity description."""


class SBNamespaceProperties(TypedDict, total=False):
    """Properties of the namespace.

    :ivar minimum_tls_version: The minimum TLS version for the cluster to support, e.g. '1.2'.
     Known values are: "1.0", "1.1", "1.2", and "1.3".
    :vartype minimum_tls_version: Union[str, "TlsVersion"]
    :ivar provisioning_state: Provisioning state of the namespace.
    :vartype provisioning_state: str
    :ivar status: Status of the namespace.
    :vartype status: str
    :ivar created_at: The time the namespace was created.
    :vartype created_at: str
    :ivar updated_at: The time the namespace was updated.
    :vartype updated_at: str
    :ivar service_bus_endpoint: Endpoint you can use to perform Service Bus operations.
    :vartype service_bus_endpoint: str
    :ivar metric_id: Identifier for Azure Insights metrics.
    :vartype metric_id: str
    :ivar zone_redundant: Enabling this property creates a Premium Service Bus Namespace in regions
     supported availability zones.
    :vartype zone_redundant: bool
    :ivar encryption: Properties of BYOK Encryption description.
    :vartype encryption: "Encryption"
    :ivar private_endpoint_connections: List of private endpoint connections.
    :vartype private_endpoint_connections: list["PrivateEndpointConnection"]
    :ivar disable_local_auth: This property disables SAS authentication for the Service Bus
     namespace.
    :vartype disable_local_auth: bool
    :ivar alternate_name: Alternate name for namespace.
    :vartype alternate_name: str
    :ivar public_network_access: This determines if traffic is allowed over public network. By
     default it is enabled. Known values are: "Enabled", "Disabled", and "SecuredByPerimeter".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar premium_messaging_partitions: The number of partitions of a Service Bus namespace. This
     property is only applicable to Premium SKU namespaces. The default value is 1 and possible
     values are 1, 2 and 4.
    :vartype premium_messaging_partitions: int
    :ivar platform_capabilities:
    :vartype platform_capabilities: "PlatformCapabilities"
    :ivar geo_data_replication: Geo Data Replication settings for the namespace.
    :vartype geo_data_replication: "GeoDataReplicationProperties"
    :ivar ip_address_type: The IP address type for the namespace. Determines whether the namespace
     supports IPv4 only or both IPv4 and IPv6 (dual stack). Known values are: "IPv4" and
     "DualStack".
    :vartype ip_address_type: Union[str, "IpAddressType"]
    """

    minimumTlsVersion: Union[str, "TlsVersion"]
    """The minimum TLS version for the cluster to support, e.g. '1.2'. Known values are: \"1.0\",
     \"1.1\", \"1.2\", and \"1.3\"."""
    provisioningState: str
    """Provisioning state of the namespace."""
    status: str
    """Status of the namespace."""
    createdAt: str
    """The time the namespace was created."""
    updatedAt: str
    """The time the namespace was updated."""
    serviceBusEndpoint: str
    """Endpoint you can use to perform Service Bus operations."""
    metricId: str
    """Identifier for Azure Insights metrics."""
    zoneRedundant: bool
    """Enabling this property creates a Premium Service Bus Namespace in regions supported
     availability zones."""
    encryption: "Encryption"
    """Properties of BYOK Encryption description."""
    privateEndpointConnections: list["PrivateEndpointConnection"]
    """List of private endpoint connections."""
    disableLocalAuth: bool
    """This property disables SAS authentication for the Service Bus namespace."""
    alternateName: str
    """Alternate name for namespace."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """This determines if traffic is allowed over public network. By default it is enabled. Known
     values are: \"Enabled\", \"Disabled\", and \"SecuredByPerimeter\"."""
    premiumMessagingPartitions: int
    """The number of partitions of a Service Bus namespace. This property is only applicable to
     Premium SKU namespaces. The default value is 1 and possible values are 1, 2 and 4."""
    platformCapabilities: "PlatformCapabilities"
    geoDataReplication: "GeoDataReplicationProperties"
    """Geo Data Replication settings for the namespace."""
    ipAddressType: Union[str, "IpAddressType"]
    """The IP address type for the namespace. Determines whether the namespace supports IPv4 only or
     both IPv4 and IPv6 (dual stack). Known values are: \"IPv4\" and \"DualStack\"."""


class SBNamespaceUpdateParameters(ResourceNamespacePatch):
    """Description of a namespace 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 location: Resource location.
    :vartype location: str
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar sku: Properties of SKU.
    :vartype sku: "SBSku"
    :ivar properties: Properties of the namespace.
    :vartype properties: "SBNamespaceUpdateProperties"
    :ivar identity: Properties of BYOK Identity description.
    :vartype identity: "Identity"
    """

    sku: "SBSku"
    """Properties of SKU."""
    properties: "SBNamespaceUpdateProperties"
    """Properties of the namespace."""
    identity: "Identity"
    """Properties of BYOK Identity description."""


class SBNamespaceUpdateProperties(TypedDict, total=False):
    """Properties of the namespace.

    :ivar provisioning_state: Provisioning state of the namespace.
    :vartype provisioning_state: str
    :ivar status: Status of the namespace.
    :vartype status: str
    :ivar created_at: The time the namespace was created.
    :vartype created_at: str
    :ivar updated_at: The time the namespace was updated.
    :vartype updated_at: str
    :ivar service_bus_endpoint: Endpoint you can use to perform Service Bus operations.
    :vartype service_bus_endpoint: str
    :ivar metric_id: Identifier for Azure Insights metrics.
    :vartype metric_id: str
    :ivar encryption: Properties of BYOK Encryption description.
    :vartype encryption: "Encryption"
    :ivar private_endpoint_connections: List of private endpoint connections.
    :vartype private_endpoint_connections: list["PrivateEndpointConnection"]
    :ivar disable_local_auth: This property disables SAS authentication for the Service Bus
     namespace.
    :vartype disable_local_auth: bool
    :ivar alternate_name: Alternate name for namespace.
    :vartype alternate_name: str
    """

    provisioningState: str
    """Provisioning state of the namespace."""
    status: str
    """Status of the namespace."""
    createdAt: str
    """The time the namespace was created."""
    updatedAt: str
    """The time the namespace was updated."""
    serviceBusEndpoint: str
    """Endpoint you can use to perform Service Bus operations."""
    metricId: str
    """Identifier for Azure Insights metrics."""
    encryption: "Encryption"
    """Properties of BYOK Encryption description."""
    privateEndpointConnections: list["PrivateEndpointConnection"]
    """List of private endpoint connections."""
    disableLocalAuth: bool
    """This property disables SAS authentication for the Service Bus namespace."""
    alternateName: str
    """Alternate name for namespace."""


class SBQueue(ProxyResource):
    """Description of queue 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: Queue Properties.
    :vartype properties: "SBQueueProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "SBQueueProperties"
    """Queue Properties."""
    location: str
    """The geo-location where the resource lives."""


class SBQueueProperties(TypedDict, total=False):
    """The Queue Properties definition.

    :ivar count_details: Message Count Details.
    :vartype count_details: "MessageCountDetails"
    :ivar created_at: The exact time the message was created.
    :vartype created_at: str
    :ivar updated_at: The exact time the message was updated.
    :vartype updated_at: str
    :ivar accessed_at: Last time a message was sent, or the last time there was a receive request
     to this queue.
    :vartype accessed_at: str
    :ivar size_in_bytes: The size of the queue, in bytes.
    :vartype size_in_bytes: int
    :ivar message_count: The number of messages in the queue.
    :vartype message_count: int
    :ivar lock_duration: ISO 8601 timespan duration of a peek-lock; that is, the amount of time
     that the message is locked for other receivers. The maximum value for LockDuration is 5
     minutes; the default value is 1 minute.
    :vartype lock_duration: str
    :ivar max_size_in_megabytes: The maximum size of the queue in megabytes, which is the size of
     memory allocated for the queue. Default is 1024.
    :vartype max_size_in_megabytes: int
    :ivar max_message_size_in_kilobytes: Maximum size (in KB) of the message payload that can be
     accepted by the queue. This property is only used in Premium today and default is 1024.
    :vartype max_message_size_in_kilobytes: int
    :ivar requires_duplicate_detection: A value indicating if this queue requires duplicate
     detection.
    :vartype requires_duplicate_detection: bool
    :ivar requires_session: A value that indicates whether the queue supports the concept of
     sessions.
    :vartype requires_session: bool
    :ivar default_message_time_to_live: ISO 8601 default message timespan to live value. This is
     the duration after which the message expires, starting from when the message is sent to Service
     Bus. This is the default value used when TimeToLive is not set on a message itself.
    :vartype default_message_time_to_live: str
    :ivar dead_lettering_on_message_expiration: A value that indicates whether this queue has dead
     letter support when a message expires.
    :vartype dead_lettering_on_message_expiration: bool
    :ivar duplicate_detection_history_time_window: ISO 8601 timeSpan structure that defines the
     duration of the duplicate detection history. The default value is 10 minutes.
    :vartype duplicate_detection_history_time_window: str
    :ivar max_delivery_count: The maximum delivery count. A message is automatically deadlettered
     after this number of deliveries. default value is 10.
    :vartype max_delivery_count: int
    :ivar status: Enumerates the possible values for the status of a messaging entity. Known values
     are: "Active", "Disabled", "Restoring", "SendDisabled", "ReceiveDisabled", "Creating",
     "Deleting", "Renaming", and "Unknown".
    :vartype status: Union[str, "EntityStatus"]
    :ivar enable_batched_operations: Value that indicates whether server-side batched operations
     are enabled.
    :vartype enable_batched_operations: bool
    :ivar auto_delete_on_idle: ISO 8061 timeSpan idle interval after which the queue is
     automatically deleted. The minimum duration is 5 minutes.
    :vartype auto_delete_on_idle: str
    :ivar enable_partitioning: A value that indicates whether the queue is to be partitioned across
     multiple message brokers.
    :vartype enable_partitioning: bool
    :ivar enable_express: A value that indicates whether Express Entities are enabled. An express
     queue holds a message in memory temporarily before writing it to persistent storage.
    :vartype enable_express: bool
    :ivar forward_to: Queue/Topic name to forward the messages.
    :vartype forward_to: str
    :ivar forward_dead_lettered_messages_to: Queue/Topic name to forward the Dead Letter message.
    :vartype forward_dead_lettered_messages_to: str
    :ivar user_metadata: Gets and Sets Metadata of User.
    :vartype user_metadata: str
    """

    countDetails: "MessageCountDetails"
    """Message Count Details."""
    createdAt: str
    """The exact time the message was created."""
    updatedAt: str
    """The exact time the message was updated."""
    accessedAt: str
    """Last time a message was sent, or the last time there was a receive request to this queue."""
    sizeInBytes: int
    """The size of the queue, in bytes."""
    messageCount: int
    """The number of messages in the queue."""
    lockDuration: str
    """ISO 8601 timespan duration of a peek-lock; that is, the amount of time that the message is
     locked for other receivers. The maximum value for LockDuration is 5 minutes; the default value
     is 1 minute."""
    maxSizeInMegabytes: int
    """The maximum size of the queue in megabytes, which is the size of memory allocated for the
     queue. Default is 1024."""
    maxMessageSizeInKilobytes: int
    """Maximum size (in KB) of the message payload that can be accepted by the queue. This property is
     only used in Premium today and default is 1024."""
    requiresDuplicateDetection: bool
    """A value indicating if this queue requires duplicate detection."""
    requiresSession: bool
    """A value that indicates whether the queue supports the concept of sessions."""
    defaultMessageTimeToLive: str
    """ISO 8601 default message timespan to live value. This is the duration after which the message
     expires, starting from when the message is sent to Service Bus. This is the default value used
     when TimeToLive is not set on a message itself."""
    deadLetteringOnMessageExpiration: bool
    """A value that indicates whether this queue has dead letter support when a message expires."""
    duplicateDetectionHistoryTimeWindow: str
    """ISO 8601 timeSpan structure that defines the duration of the duplicate detection history. The
     default value is 10 minutes."""
    maxDeliveryCount: int
    """The maximum delivery count. A message is automatically deadlettered after this number of
     deliveries. default value is 10."""
    status: Union[str, "EntityStatus"]
    """Enumerates the possible values for the status of a messaging entity. Known values are:
     \"Active\", \"Disabled\", \"Restoring\", \"SendDisabled\", \"ReceiveDisabled\", \"Creating\",
     \"Deleting\", \"Renaming\", and \"Unknown\"."""
    enableBatchedOperations: bool
    """Value that indicates whether server-side batched operations are enabled."""
    autoDeleteOnIdle: str
    """ISO 8061 timeSpan idle interval after which the queue is automatically deleted. The minimum
     duration is 5 minutes."""
    enablePartitioning: bool
    """A value that indicates whether the queue is to be partitioned across multiple message brokers."""
    enableExpress: bool
    """A value that indicates whether Express Entities are enabled. An express queue holds a message
     in memory temporarily before writing it to persistent storage."""
    forwardTo: str
    """Queue/Topic name to forward the messages."""
    forwardDeadLetteredMessagesTo: str
    """Queue/Topic name to forward the Dead Letter message."""
    userMetadata: str
    """Gets and Sets Metadata of User."""


class SBSku(TypedDict, total=False):
    """SKU of the namespace.

    :ivar name: Name of this SKU. Required. Known values are: "Basic", "Standard", and "Premium".
    :vartype name: Union[str, "SkuName"]
    :ivar tier: The billing tier of this particular SKU. Known values are: "Basic", "Standard", and
     "Premium".
    :vartype tier: Union[str, "SkuTier"]
    :ivar capacity: Messaging units for your service bus premium namespace. Valid capacities are
     {1, 2, 4, 8, 16} multiples of your properties.premiumMessagingPartitions setting. For example,
     If properties.premiumMessagingPartitions is 1 then possible capacity values are 1, 2, 4, 8, and
     16. If properties.premiumMessagingPartitions is 4 then possible capacity values are 4, 8, 16,
     32 and 64.
    :vartype capacity: int
    """

    name: Required[Union[str, "SkuName"]]
    """Name of this SKU. Required. Known values are: \"Basic\", \"Standard\", and \"Premium\"."""
    tier: Union[str, "SkuTier"]
    """The billing tier of this particular SKU. Known values are: \"Basic\", \"Standard\", and
     \"Premium\"."""
    capacity: int
    """Messaging units for your service bus premium namespace. Valid capacities are {1, 2, 4, 8, 16}
     multiples of your properties.premiumMessagingPartitions setting. For example, If
     properties.premiumMessagingPartitions is 1 then possible capacity values are 1, 2, 4, 8, and
     16. If properties.premiumMessagingPartitions is 4 then possible capacity values are 4, 8, 16,
     32 and 64."""


class SBSubscription(ProxyResource):
    """Description of subscription 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: Properties of subscriptions resource.
    :vartype properties: "SBSubscriptionProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "SBSubscriptionProperties"
    """Properties of subscriptions resource."""
    location: str
    """The geo-location where the resource lives."""


class SBSubscriptionProperties(TypedDict, total=False):
    """Description of Subscription Resource.

    :ivar message_count: Number of messages.
    :vartype message_count: int
    :ivar created_at: Exact time the message was created.
    :vartype created_at: str
    :ivar accessed_at: Last time there was a receive request to this subscription.
    :vartype accessed_at: str
    :ivar updated_at: The exact time the message was updated.
    :vartype updated_at: str
    :ivar count_details: Message count details.
    :vartype count_details: "MessageCountDetails"
    :ivar lock_duration: ISO 8061 lock duration timespan for the subscription. The default value is
     1 minute.
    :vartype lock_duration: str
    :ivar requires_session: Value indicating if a subscription supports the concept of sessions.
    :vartype requires_session: bool
    :ivar default_message_time_to_live: ISO 8061 Default message timespan to live value. This is
     the duration after which the message expires, starting from when the message is sent to Service
     Bus. This is the default value used when TimeToLive is not set on a message itself.
    :vartype default_message_time_to_live: str
    :ivar dead_lettering_on_filter_evaluation_exceptions: Value that indicates whether a
     subscription has dead letter support on filter evaluation exceptions.
    :vartype dead_lettering_on_filter_evaluation_exceptions: bool
    :ivar dead_lettering_on_message_expiration: Value that indicates whether a subscription has
     dead letter support when a message expires.
    :vartype dead_lettering_on_message_expiration: bool
    :ivar duplicate_detection_history_time_window: ISO 8601 timeSpan structure that defines the
     duration of the duplicate detection history. The default value is 10 minutes.
    :vartype duplicate_detection_history_time_window: str
    :ivar max_delivery_count: Number of maximum deliveries.
    :vartype max_delivery_count: int
    :ivar status: Enumerates the possible values for the status of a messaging entity. Known values
     are: "Active", "Disabled", "Restoring", "SendDisabled", "ReceiveDisabled", "Creating",
     "Deleting", "Renaming", and "Unknown".
    :vartype status: Union[str, "EntityStatus"]
    :ivar enable_batched_operations: Value that indicates whether server-side batched operations
     are enabled.
    :vartype enable_batched_operations: bool
    :ivar auto_delete_on_idle: ISO 8061 timeSpan idle interval after which the topic is
     automatically deleted. The minimum duration is 5 minutes.
    :vartype auto_delete_on_idle: str
    :ivar forward_to: Queue/Topic name to forward the messages.
    :vartype forward_to: str
    :ivar forward_dead_lettered_messages_to: Queue/Topic name to forward the Dead Letter message.
    :vartype forward_dead_lettered_messages_to: str
    :ivar is_client_affine: Value that indicates whether the subscription has an affinity to the
     client id.
    :vartype is_client_affine: bool
    :ivar user_metadata: Gets and Sets Metadata of User.
    :vartype user_metadata: str
    :ivar client_affine_properties: Properties specific to client affine subscriptions.
    :vartype client_affine_properties: "SBClientAffineProperties"
    """

    messageCount: int
    """Number of messages."""
    createdAt: str
    """Exact time the message was created."""
    accessedAt: str
    """Last time there was a receive request to this subscription."""
    updatedAt: str
    """The exact time the message was updated."""
    countDetails: "MessageCountDetails"
    """Message count details."""
    lockDuration: str
    """ISO 8061 lock duration timespan for the subscription. The default value is 1 minute."""
    requiresSession: bool
    """Value indicating if a subscription supports the concept of sessions."""
    defaultMessageTimeToLive: str
    """ISO 8061 Default message timespan to live value. This is the duration after which the message
     expires, starting from when the message is sent to Service Bus. This is the default value used
     when TimeToLive is not set on a message itself."""
    deadLetteringOnFilterEvaluationExceptions: bool
    """Value that indicates whether a subscription has dead letter support on filter evaluation
     exceptions."""
    deadLetteringOnMessageExpiration: bool
    """Value that indicates whether a subscription has dead letter support when a message expires."""
    duplicateDetectionHistoryTimeWindow: str
    """ISO 8601 timeSpan structure that defines the duration of the duplicate detection history. The
     default value is 10 minutes."""
    maxDeliveryCount: int
    """Number of maximum deliveries."""
    status: Union[str, "EntityStatus"]
    """Enumerates the possible values for the status of a messaging entity. Known values are:
     \"Active\", \"Disabled\", \"Restoring\", \"SendDisabled\", \"ReceiveDisabled\", \"Creating\",
     \"Deleting\", \"Renaming\", and \"Unknown\"."""
    enableBatchedOperations: bool
    """Value that indicates whether server-side batched operations are enabled."""
    autoDeleteOnIdle: str
    """ISO 8061 timeSpan idle interval after which the topic is automatically deleted. The minimum
     duration is 5 minutes."""
    forwardTo: str
    """Queue/Topic name to forward the messages."""
    forwardDeadLetteredMessagesTo: str
    """Queue/Topic name to forward the Dead Letter message."""
    isClientAffine: bool
    """Value that indicates whether the subscription has an affinity to the client id."""
    userMetadata: str
    """Gets and Sets Metadata of User."""
    clientAffineProperties: "SBClientAffineProperties"
    """Properties specific to client affine subscriptions."""


class SBTopic(ProxyResource):
    """Description of topic 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: Properties of topic resource.
    :vartype properties: "SBTopicProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "SBTopicProperties"
    """Properties of topic resource."""
    location: str
    """The geo-location where the resource lives."""


class SBTopicProperties(TypedDict, total=False):
    """The Topic Properties definition.

    :ivar size_in_bytes: Size of the topic, in bytes.
    :vartype size_in_bytes: int
    :ivar created_at: Exact time the message was created.
    :vartype created_at: str
    :ivar updated_at: The exact time the message was updated.
    :vartype updated_at: str
    :ivar accessed_at: Last time the message was sent, or a request was received, for this topic.
    :vartype accessed_at: str
    :ivar subscription_count: Number of subscriptions.
    :vartype subscription_count: int
    :ivar count_details: Message count details.
    :vartype count_details: "MessageCountDetails"
    :ivar default_message_time_to_live: ISO 8601 Default message timespan to live value. This is
     the duration after which the message expires, starting from when the message is sent to Service
     Bus. This is the default value used when TimeToLive is not set on a message itself.
    :vartype default_message_time_to_live: str
    :ivar max_size_in_megabytes: Maximum size of the topic in megabytes, which is the size of the
     memory allocated for the topic. Default is 1024.
    :vartype max_size_in_megabytes: int
    :ivar max_message_size_in_kilobytes: Maximum size (in KB) of the message payload that can be
     accepted by the topic. This property is only used in Premium today and default is 1024.
    :vartype max_message_size_in_kilobytes: int
    :ivar requires_duplicate_detection: Value indicating if this topic requires duplicate
     detection.
    :vartype requires_duplicate_detection: bool
    :ivar duplicate_detection_history_time_window: ISO8601 timespan structure that defines the
     duration of the duplicate detection history. The default value is 10 minutes.
    :vartype duplicate_detection_history_time_window: str
    :ivar enable_batched_operations: Value that indicates whether server-side batched operations
     are enabled.
    :vartype enable_batched_operations: bool
    :ivar status: Enumerates the possible values for the status of a messaging entity. Known values
     are: "Active", "Disabled", "Restoring", "SendDisabled", "ReceiveDisabled", "Creating",
     "Deleting", "Renaming", and "Unknown".
    :vartype status: Union[str, "EntityStatus"]
    :ivar support_ordering: Value that indicates whether the topic supports ordering.
    :vartype support_ordering: bool
    :ivar auto_delete_on_idle: ISO 8601 timespan idle interval after which the topic is
     automatically deleted. The minimum duration is 5 minutes.
    :vartype auto_delete_on_idle: str
    :ivar enable_partitioning: Value that indicates whether the topic to be partitioned across
     multiple message brokers is enabled.
    :vartype enable_partitioning: bool
    :ivar enable_express: Value that indicates whether Express Entities are enabled. An express
     topic holds a message in memory temporarily before writing it to persistent storage.
    :vartype enable_express: bool
    :ivar user_metadata: Gets and Sets Metadata of User.
    :vartype user_metadata: str
    """

    sizeInBytes: int
    """Size of the topic, in bytes."""
    createdAt: str
    """Exact time the message was created."""
    updatedAt: str
    """The exact time the message was updated."""
    accessedAt: str
    """Last time the message was sent, or a request was received, for this topic."""
    subscriptionCount: int
    """Number of subscriptions."""
    countDetails: "MessageCountDetails"
    """Message count details."""
    defaultMessageTimeToLive: str
    """ISO 8601 Default message timespan to live value. This is the duration after which the message
     expires, starting from when the message is sent to Service Bus. This is the default value used
     when TimeToLive is not set on a message itself."""
    maxSizeInMegabytes: int
    """Maximum size of the topic in megabytes, which is the size of the memory allocated for the
     topic. Default is 1024."""
    maxMessageSizeInKilobytes: int
    """Maximum size (in KB) of the message payload that can be accepted by the topic. This property is
     only used in Premium today and default is 1024."""
    requiresDuplicateDetection: bool
    """Value indicating if this topic requires duplicate detection."""
    duplicateDetectionHistoryTimeWindow: str
    """ISO8601 timespan structure that defines the duration of the duplicate detection history. The
     default value is 10 minutes."""
    enableBatchedOperations: bool
    """Value that indicates whether server-side batched operations are enabled."""
    status: Union[str, "EntityStatus"]
    """Enumerates the possible values for the status of a messaging entity. Known values are:
     \"Active\", \"Disabled\", \"Restoring\", \"SendDisabled\", \"ReceiveDisabled\", \"Creating\",
     \"Deleting\", \"Renaming\", and \"Unknown\"."""
    supportOrdering: bool
    """Value that indicates whether the topic supports ordering."""
    autoDeleteOnIdle: str
    """ISO 8601 timespan idle interval after which the topic is automatically deleted. The minimum
     duration is 5 minutes."""
    enablePartitioning: bool
    """Value that indicates whether the topic to be partitioned across multiple message brokers is
     enabled."""
    enableExpress: bool
    """Value that indicates whether Express Entities are enabled. An express topic holds a message in
     memory temporarily before writing it to persistent storage."""
    userMetadata: str
    """Gets and Sets Metadata of User."""


class SqlFilter(TypedDict, total=False):
    """Represents a filter which is a composition of an expression and an action that is executed in
    the pub/sub pipeline.

    :ivar sql_expression: The SQL expression. e.g. MyProperty='ABC'.
    :vartype sql_expression: str
    :ivar compatibility_level: This property is reserved for future use. An integer value showing
     the compatibility level, currently hard-coded to 20.
    :vartype compatibility_level: int
    :ivar requires_preprocessing: Value that indicates whether the rule action requires
     preprocessing.
    :vartype requires_preprocessing: bool
    """

    sqlExpression: str
    """The SQL expression. e.g. MyProperty='ABC'."""
    compatibilityLevel: int
    """This property is reserved for future use. An integer value showing the compatibility level,
     currently hard-coded to 20."""
    requiresPreprocessing: bool
    """Value that indicates whether the rule action requires preprocessing."""


class Subnet(TypedDict, total=False):
    """Properties supplied for Subnet.

    :ivar id: Resource ID of Virtual Network Subnet. Required.
    :vartype id: str
    """

    id: Required[str]
    """Resource ID of Virtual Network Subnet. Required."""


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 UserAssignedIdentity(TypedDict, total=False):
    """Recognized Dictionary value.

    :ivar principal_id: Principal Id of user assigned identity.
    :vartype principal_id: str
    :ivar client_id: Client Id of user assigned identity.
    :vartype client_id: str
    """

    principalId: str
    """Principal Id of user assigned identity."""
    clientId: str
    """Client Id of user assigned identity."""


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

    :ivar user_assigned_identity: ARM ID of user Identity selected for encryption.
    :vartype user_assigned_identity: str
    """

    userAssignedIdentity: str
    """ARM ID of user Identity selected for encryption."""
