# 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 ApplicationGroupPolicyType

if TYPE_CHECKING:
    from .models import (
        AccessRights,
        CaptureIdentityType,
        CleanupPolicyRetentionDescription,
        ClusterSkuName,
        CreatedByType,
        DefaultAction,
        EncodingCaptureDescription,
        EndPointProvisioningState,
        EntityStatus,
        GeoDRRoleType,
        IpAddressType,
        KeyType,
        ManagedServiceIdentityType,
        MetricId,
        Mode,
        NetworkRuleIPAction,
        NetworkSecurityPerimeterConfigurationProvisioningState,
        NspAccessRuleDirection,
        PrivateLinkConnectionStatus,
        ProvisioningState,
        ProvisioningStateDR,
        PublicNetworkAccess,
        PublicNetworkAccessFlag,
        ResourceAssociationAccessMode,
        RoleDisasterRecovery,
        SchemaCompatibility,
        SchemaType,
        SkuName,
        SkuTier,
        TimestampType,
        TlsVersion,
        UnavailableReason,
    )


class AccessKeys(TypedDict, total=False):
    """Namespace/EventHub Connection String.

    :ivar primary_connection_string: Primary connection string of the created namespace
     AuthorizationRule.
    :vartype primary_connection_string: str
    :ivar secondary_connection_string: Secondary connection string of the created namespace
     AuthorizationRule.
    :vartype secondary_connection_string: str
    :ivar alias_primary_connection_string: Primary connection string of the alias if GEO DR is
     enabled.
    :vartype alias_primary_connection_string: str
    :ivar alias_secondary_connection_string: Secondary  connection string of the alias if GEO DR is
     enabled.
    :vartype alias_secondary_connection_string: str
    :ivar primary_key: A base64-encoded 256-bit primary key for signing and validating the SAS
     token.
    :vartype primary_key: str
    :ivar secondary_key: A base64-encoded 256-bit primary key for signing and validating the SAS
     token.
    :vartype secondary_key: str
    :ivar key_name: A string that describes the AuthorizationRule.
    :vartype key_name: str
    """

    primaryConnectionString: str
    """Primary connection string of the created namespace AuthorizationRule."""
    secondaryConnectionString: str
    """Secondary connection string of the created namespace AuthorizationRule."""
    aliasPrimaryConnectionString: str
    """Primary connection string of the alias if GEO DR is enabled."""
    aliasSecondaryConnectionString: str
    """Secondary  connection string of the alias if GEO DR is enabled."""
    primaryKey: str
    """A base64-encoded 256-bit primary key for signing and validating the SAS token."""
    secondaryKey: str
    """A base64-encoded 256-bit primary key for signing and validating the SAS token."""
    keyName: str
    """A string that describes the AuthorizationRule."""


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 ApplicationGroup(ProxyResource):
    """The Application Group object.

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

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


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

    :ivar is_enabled: Determines if Application Group is allowed to create connection with
     namespace or not. Once the isEnabled is set to false, all the existing connections of
     application group gets dropped and no new connections will be allowed.
    :vartype is_enabled: bool
    :ivar client_app_group_identifier: The Unique identifier for application group.Supports
     SAS(SASKeyName=KeyName) or AAD(AADAppID=Guid). Required.
    :vartype client_app_group_identifier: str
    :ivar policies: List of group policies that define the behavior of application group. The
     policies can support resource governance scenarios such as limiting ingress or egress traffic.
    :vartype policies: list["ApplicationGroupPolicy"]
    """

    isEnabled: bool
    """Determines if Application Group is allowed to create connection with namespace or not. Once the
     isEnabled is set to false, all the existing connections of application group gets dropped and
     no new connections will be allowed."""
    clientAppGroupIdentifier: Required[str]
    """The Unique identifier for application group.Supports SAS(SASKeyName=KeyName) or
     AAD(AADAppID=Guid). Required."""
    policies: list["ApplicationGroupPolicy"]
    """List of group policies that define the behavior of application group. The policies can support
     resource governance scenarios such as limiting ingress or egress traffic."""


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 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: Alternate name specified when alias and namespace names are same.
    :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"]
    :ivar pending_replication_operations_count: Number of entities pending to be replicated.
    :vartype pending_replication_operations_count: int
    """

    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\"."""
    partnerNamespace: str
    """ARM Id of the Primary/Secondary eventhub namespace name, which is part of GEO DR pairing."""
    alternateName: str
    """Alternate name specified when alias and namespace names are same."""
    role: Union[str, "RoleDisasterRecovery"]
    """role of namespace in GEO DR - possible values 'Primary' or 'PrimaryNotReplicating' or
     'Secondary'. Known values are: \"Primary\", \"PrimaryNotReplicating\", and \"Secondary\"."""
    pendingReplicationOperationsCount: int
    """Number of entities pending to be replicated."""


class AuthorizationRule(ProxyResource):
    """Single item in a List or Get AuthorizationRule 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 supplied to create or update AuthorizationRule.
    :vartype properties: "AuthorizationRuleProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "AuthorizationRuleProperties"
    """Properties supplied to create or update AuthorizationRule."""
    location: str
    """The geo-location where the resource lives."""


class AuthorizationRuleProperties(TypedDict, total=False):
    """Properties supplied to create or update AuthorizationRule.

    :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 AvailableCluster(TypedDict, total=False):
    """Pre-provisioned and readily available Event Hubs Cluster count per region.

    :ivar location: Location fo the Available Cluster.
    :vartype location: str
    """

    location: str
    """Location fo the Available Cluster."""


class AvailableClustersList(TypedDict, total=False):
    """The response of the List Available Clusters operation.

    :ivar value: The count of readily available and pre-provisioned Event Hubs Clusters per region.
    :vartype value: list["AvailableCluster"]
    """

    value: list["AvailableCluster"]
    """The count of readily available and pre-provisioned Event Hubs Clusters per region."""


class CaptureDescription(TypedDict, total=False):
    """Properties to configure capture description for eventhub.

    :ivar enabled: A value that indicates whether capture description is enabled.
    :vartype enabled: bool
    :ivar encoding: Enumerates the possible values for the encoding format of capture description.
     Note: 'AvroDeflate' will be deprecated in New API Version. Known values are: "Avro" and
     "AvroDeflate".
    :vartype encoding: Union[str, "EncodingCaptureDescription"]
    :ivar interval_in_seconds: The time window allows you to set the frequency with which the
     capture to Azure Blobs will happen, value should between 60 to 900 seconds.
    :vartype interval_in_seconds: int
    :ivar size_limit_in_bytes: The size window defines the amount of data built up in your Event
     Hub before an capture operation, value should be between 10485760 to 524288000 bytes.
    :vartype size_limit_in_bytes: int
    :ivar destination: Properties of Destination where capture will be stored. (Storage Account,
     Blob Names).
    :vartype destination: "Destination"
    :ivar skip_empty_archives: A value that indicates whether to Skip Empty Archives.
    :vartype skip_empty_archives: bool
    """

    enabled: bool
    """A value that indicates whether capture description is enabled."""
    encoding: Union[str, "EncodingCaptureDescription"]
    """Enumerates the possible values for the encoding format of capture description. Note:
     'AvroDeflate' will be deprecated in New API Version. Known values are: \"Avro\" and
     \"AvroDeflate\"."""
    intervalInSeconds: int
    """The time window allows you to set the frequency with which the capture to Azure Blobs will
     happen, value should between 60 to 900 seconds."""
    sizeLimitInBytes: int
    """The size window defines the amount of data built up in your Event Hub before an capture
     operation, value should be between 10485760 to 524288000 bytes."""
    destination: "Destination"
    """Properties of Destination where capture will be stored. (Storage Account, Blob Names)."""
    skipEmptyArchives: bool
    """A value that indicates whether to Skip Empty Archives."""


class CaptureIdentity(TypedDict, total=False):
    """A value that indicates whether capture description is enabled.

    :ivar type: Type of Azure Active Directory Managed Identity. Known values are: "SystemAssigned"
     and "UserAssigned".
    :vartype type: Union[str, "CaptureIdentityType"]
    :ivar user_assigned_identity: ARM ID of Managed User Identity. This property is required is the
     type is UserAssignedIdentity. If type is SystemAssigned, then the System Assigned Identity
     Associated with the namespace will be used.
    :vartype user_assigned_identity: str
    """

    type: Union[str, "CaptureIdentityType"]
    """Type of Azure Active Directory Managed Identity. Known values are: \"SystemAssigned\" and
     \"UserAssigned\"."""
    userAssignedIdentity: str
    """ARM ID of Managed User Identity. This property is required is the type is UserAssignedIdentity.
     If type is SystemAssigned, then the System Assigned Identity Associated with the namespace will
     be used."""


class CheckNameAvailabilityParameter(TypedDict, total=False):
    """Parameter supplied to check Namespace name availability operation.

    :ivar name: Name to check the namespace name availability. Required.
    :vartype name: str
    """

    name: Required[str]
    """Name to check the namespace name availability. Required."""


class CheckNameAvailabilityResult(TypedDict, total=False):
    """The Result of the CheckNameAvailability operation.

    :ivar message: The detailed info regarding the reason associated with the Namespace.
    :vartype message: str
    :ivar name_available: Value indicating Namespace is availability, true if the Namespace is
     available; otherwise, false.
    :vartype name_available: bool
    :ivar reason: The reason for unavailability of a Namespace. Known values are: "None",
     "InvalidName", "SubscriptionIsDisabled", "NameInUse", "NameInLockdown", and
     "TooManyNamespaceInCurrentSubscription".
    :vartype reason: Union[str, "UnavailableReason"]
    """

    message: str
    """The detailed info regarding the reason associated with the Namespace."""
    nameAvailable: bool
    """Value indicating Namespace is availability, true if the Namespace is available; otherwise,
     false."""
    reason: Union[str, "UnavailableReason"]
    """The reason for unavailability of a Namespace. Known values are: \"None\", \"InvalidName\",
     \"SubscriptionIsDisabled\", \"NameInUse\", \"NameInLockdown\", and
     \"TooManyNamespaceInCurrentSubscription\"."""


class Cluster(ProxyResource):
    """Single Event Hubs Cluster resource in List or Get operations.

    :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: Event Hubs Cluster properties supplied in responses in List or Get
     operations.
    :vartype properties: "ClusterProperties"
    :ivar sku: Properties of the cluster SKU.
    :vartype sku: "ClusterSku"
    :ivar location: Resource location.
    :vartype location: str
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    """

    properties: "ClusterProperties"
    """Event Hubs Cluster properties supplied in responses in List or Get operations."""
    sku: "ClusterSku"
    """Properties of the cluster SKU."""
    location: str
    """Resource location."""
    tags: dict[str, str]
    """Resource tags."""


class ClusterProperties(TypedDict, total=False):
    """Event Hubs Cluster properties supplied in responses in List or Get operations.

    :ivar created_at: The UTC time when the Event Hubs Cluster was created.
    :vartype created_at: str
    :ivar provisioning_state: Provisioning state of the Cluster. Known values are: "Unknown",
     "Creating", "Deleting", "Scaling", "Active", "Failed", "Succeeded", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar updated_at: The UTC time when the Event Hubs Cluster was last updated.
    :vartype updated_at: str
    :ivar metric_id: The metric ID of the cluster resource. Provided by the service and not
     modifiable by the user.
    :vartype metric_id: str
    :ivar status: Status of the Cluster resource.
    :vartype status: str
    :ivar supports_scaling: A value that indicates whether Scaling is Supported.
    :vartype supports_scaling: bool
    :ivar platform_capabilities:
    :vartype platform_capabilities: "PlatformCapabilities"
    :ivar zone_redundant: A value that indicates whether the cluster is zone redundant.
    :vartype zone_redundant: bool
    """

    createdAt: str
    """The UTC time when the Event Hubs Cluster was created."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the Cluster. Known values are: \"Unknown\", \"Creating\", \"Deleting\",
     \"Scaling\", \"Active\", \"Failed\", \"Succeeded\", and \"Canceled\"."""
    updatedAt: str
    """The UTC time when the Event Hubs Cluster was last updated."""
    metricId: str
    """The metric ID of the cluster resource. Provided by the service and not modifiable by the user."""
    status: str
    """Status of the Cluster resource."""
    supportsScaling: bool
    """A value that indicates whether Scaling is Supported."""
    platformCapabilities: "PlatformCapabilities"
    zoneRedundant: bool
    """A value that indicates whether the cluster is zone redundant."""


class ClusterQuotaConfigurationProperties(TypedDict, total=False):
    """Contains all settings for the cluster.

    :ivar settings: All possible Cluster settings - a collection of key/value paired settings which
     apply to quotas and configurations imposed on the cluster.
    :vartype settings: dict[str, str]
    """

    settings: dict[str, str]
    """All possible Cluster settings - a collection of key/value paired settings which apply to quotas
     and configurations imposed on the cluster."""


class ClusterSku(TypedDict, total=False):
    """SKU parameters particular to a cluster instance.

    :ivar name: Name of this SKU. Required. "Dedicated"
    :vartype name: Union[str, "ClusterSkuName"]
    :ivar capacity: The quantity of Event Hubs Cluster Capacity Units contained in this cluster.
    :vartype capacity: int
    """

    name: Required[Union[str, "ClusterSkuName"]]
    """Name of this SKU. Required. \"Dedicated\""""
    capacity: int
    """The quantity of Event Hubs Cluster Capacity Units contained in this cluster."""


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 ConsumerGroup(ProxyResource):
    """Single item in List or Get Consumer group 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: Single item in List or Get Consumer group operation.
    :vartype properties: "ConsumerGroupProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "ConsumerGroupProperties"
    """Single item in List or Get Consumer group operation."""
    location: str
    """The geo-location where the resource lives."""


class ConsumerGroupProperties(TypedDict, total=False):
    """Single item in List or Get Consumer group operation.

    :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 user_metadata: User Metadata is a placeholder to store user-defined string data with
     maximum length 1024. e.g. it can be used to store descriptive data, such as list of teams and
     their contact information also user-defined configuration settings can be stored.
    :vartype user_metadata: str
    """

    createdAt: str
    """Exact time the message was created."""
    updatedAt: str
    """The exact time the message was updated."""
    userMetadata: str
    """User Metadata is a placeholder to store user-defined string data with maximum length 1024. e.g.
     it can be used to store descriptive data, such as list of teams and their contact information
     also user-defined configuration settings can be stored."""


class Destination(TypedDict, total=False):
    """Capture storage details for capture description.

    :ivar name: Name for capture destination.
    :vartype name: str
    :ivar identity: A value that indicates whether capture description is enabled.
    :vartype identity: "CaptureIdentity"
    :ivar properties: Properties describing the storage account, blob container and archive name
     format for capture destination.
    :vartype properties: "DestinationProperties"
    """

    name: str
    """Name for capture destination."""
    identity: "CaptureIdentity"
    """A value that indicates whether capture description is enabled."""
    properties: "DestinationProperties"
    """Properties describing the storage account, blob container and archive name format for capture
     destination."""


class DestinationProperties(TypedDict, total=False):
    """Properties describing the storage account, blob container and archive name format for capture
    destination.

    :ivar storage_account_resource_id: Resource id of the storage account to be used to create the
     blobs.
    :vartype storage_account_resource_id: str
    :ivar blob_container: Blob container Name.
    :vartype blob_container: str
    :ivar archive_name_format: Blob naming convention for archive, e.g.
     {Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}. Here all
     the parameters (Namespace,EventHub .. etc) are mandatory irrespective of order.
    :vartype archive_name_format: str
    :ivar data_lake_subscription_id: Subscription Id of Azure Data Lake Store.
    :vartype data_lake_subscription_id: str
    :ivar data_lake_account_name: The Azure Data Lake Store name for the captured events.
    :vartype data_lake_account_name: str
    :ivar data_lake_folder_path: The destination folder path for the captured events.
    :vartype data_lake_folder_path: str
    """

    storageAccountResourceId: str
    """Resource id of the storage account to be used to create the blobs."""
    blobContainer: str
    """Blob container Name."""
    archiveNameFormat: str
    """Blob naming convention for archive, e.g.
     {Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}. Here all
     the parameters (Namespace,EventHub .. etc) are mandatory irrespective of order."""
    dataLakeSubscriptionId: str
    """Subscription Id of Azure Data Lake Store."""
    dataLakeAccountName: str
    """The Azure Data Lake Store name for the captured events."""
    dataLakeFolderPath: str
    """The destination folder path for the captured events."""


class EHNamespace(ProxyResource):
    """Single Namespace item in List or Get 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: Namespace properties supplied for create namespace operation.
    :vartype properties: "EHNamespaceProperties"
    :ivar sku: Properties of sku resource.
    :vartype sku: "Sku"
    :ivar identity: Properties of BYOK Identity description.
    :vartype identity: "Identity"
    :ivar location: Resource location.
    :vartype location: str
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    """

    properties: "EHNamespaceProperties"
    """Namespace properties supplied for create namespace operation."""
    sku: "Sku"
    """Properties of sku resource."""
    identity: "Identity"
    """Properties of BYOK Identity description."""
    location: str
    """Resource location."""
    tags: dict[str, str]
    """Resource tags."""


class EHNamespaceIdContainer(TypedDict, total=False):
    """The full ARM ID of an Event Hubs Namespace.

    :ivar id: id parameter.
    :vartype id: str
    """

    id: str
    """id parameter."""


class EHNamespaceIdListResult(TypedDict, total=False):
    """The response of the List Namespace IDs operation.

    :ivar value: Result of the List Namespace IDs operation.
    :vartype value: list["EHNamespaceIdContainer"]
    """

    value: list["EHNamespaceIdContainer"]
    """Result of the List Namespace IDs operation."""


class EHNamespaceProperties(TypedDict, total=False):
    """Namespace properties supplied for create namespace operation.

    :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 cluster_arm_id: Cluster ARM ID of the Namespace.
    :vartype cluster_arm_id: str
    :ivar metric_id: Identifier for Azure Insights metrics.
    :vartype metric_id: str
    :ivar is_auto_inflate_enabled: Value that indicates whether AutoInflate is enabled for eventhub
     namespace.
    :vartype is_auto_inflate_enabled: bool
    :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 maximum_throughput_units: Upper limit of throughput units when AutoInflate is enabled,
     value should be within 0 to 20 throughput units. ( '0' if AutoInflateEnabled = true).
    :vartype maximum_throughput_units: int
    :ivar kafka_enabled: Value that indicates whether Kafka is enabled for eventhub namespace.
    :vartype kafka_enabled: bool
    :ivar zone_redundant: Enabling this property creates a Standard Event Hubs 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 Event Hubs
     namespace.
    :vartype disable_local_auth: bool
    :ivar alternate_name: Alternate name specified when alias and namespace names are same.
    :vartype alternate_name: str
    :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."""
    clusterArmId: str
    """Cluster ARM ID of the Namespace."""
    metricId: str
    """Identifier for Azure Insights metrics."""
    isAutoInflateEnabled: bool
    """Value that indicates whether AutoInflate is enabled for eventhub 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\"."""
    maximumThroughputUnits: int
    """Upper limit of throughput units when AutoInflate is enabled, value should be within 0 to 20
     throughput units. ( '0' if AutoInflateEnabled = true)."""
    kafkaEnabled: bool
    """Value that indicates whether Kafka is enabled for eventhub namespace."""
    zoneRedundant: bool
    """Enabling this property creates a Standard Event Hubs 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 Event Hubs namespace."""
    alternateName: str
    """Alternate name specified when alias and namespace names are same."""
    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 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 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 indicates Event Hub service is not able to process the incoming request. The
    reason is provided in the error message.

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

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


class Eventhub(ProxyResource):
    """Single item in List or Get Event Hub 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 supplied to the Create Or Update Event Hub operation.
    :vartype properties: "EventhubProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "EventhubProperties"
    """Properties supplied to the Create Or Update Event Hub operation."""
    location: str
    """The geo-location where the resource lives."""


class EventhubProperties(TypedDict, total=False):
    """Properties supplied to the Create Or Update Event Hub operation.

    :ivar partition_ids: Current number of shards on the Event Hub.
    :vartype partition_ids: list[str]
    :ivar created_at: Exact time the Event Hub was created.
    :vartype created_at: str
    :ivar updated_at: The exact time the message was updated.
    :vartype updated_at: str
    :ivar message_retention_in_days: Number of days to retain the events for this Event Hub, value
     should be 1 to 7 days.
    :vartype message_retention_in_days: int
    :ivar partition_count: Number of partitions created for the Event Hub, allowed values are from
     1 to 32 partitions.
    :vartype partition_count: int
    :ivar status: Enumerates the possible values for the status of the Event Hub. Known values are:
     "Active", "Disabled", "Restoring", "SendDisabled", "ReceiveDisabled", "Creating", "Deleting",
     "Renaming", and "Unknown".
    :vartype status: Union[str, "EntityStatus"]
    :ivar capture_description: Properties of capture description.
    :vartype capture_description: "CaptureDescription"
    :ivar retention_description: Event Hub retention settings.
    :vartype retention_description: "RetentionDescription"
    :ivar message_timestamp_description: Properties of MessageTimestamp Description.
    :vartype message_timestamp_description: "MessageTimestampDescription"
    :ivar identifier: Denotes the unique identifier for event hub and is generated by service while
     creating topic. This identifier can be used in kafka runtime apis wherever a UUID is required
     e.g Fetch & Delete Topic. This identifier is not supported in AMQP runtime operations yet.
    :vartype identifier: str
    :ivar user_metadata: Gets and Sets Metadata of User.
    :vartype user_metadata: str
    """

    partitionIds: list[str]
    """Current number of shards on the Event Hub."""
    createdAt: str
    """Exact time the Event Hub was created."""
    updatedAt: str
    """The exact time the message was updated."""
    messageRetentionInDays: int
    """Number of days to retain the events for this Event Hub, value should be 1 to 7 days."""
    partitionCount: int
    """Number of partitions created for the Event Hub, allowed values are from 1 to 32 partitions."""
    status: Union[str, "EntityStatus"]
    """Enumerates the possible values for the status of the Event Hub. Known values are: \"Active\",
     \"Disabled\", \"Restoring\", \"SendDisabled\", \"ReceiveDisabled\", \"Creating\", \"Deleting\",
     \"Renaming\", and \"Unknown\"."""
    captureDescription: "CaptureDescription"
    """Properties of capture description."""
    retentionDescription: "RetentionDescription"
    """Event Hub retention settings."""
    messageTimestampDescription: "MessageTimestampDescription"
    """Properties of MessageTimestamp Description."""
    identifier: str
    """Denotes the unique identifier for event hub and is generated by service while creating topic.
     This identifier can be used in kafka runtime apis wherever a UUID is required e.g Fetch &
     Delete Topic. This identifier is not supported in AMQP runtime operations yet."""
    userMetadata: str
    """Gets and Sets Metadata of User."""


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 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 Identity 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: Key Version.
    :vartype key_version: str
    :ivar identity:
    :vartype identity: "UserAssignedIdentityProperties"
    """

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


class MessageTimestampDescription(TypedDict, total=False):
    """Properties of MessageTimestamp Description.

    :ivar timestamp_type: Denotes the type of timestamp the message will hold.Two types of
     timestamp types - "AppendTime" and "CreateTime". AppendTime refers the time in which message
     got appended inside broker log. CreateTime refers to the time in which the message was
     generated on source side and producers can set this timestamp while sending the message.
     Default value is AppendTime. If you are using AMQP protocol, CreateTime equals AppendTime and
     its behavior remains the same. Known values are: "LogAppend" and "Create".
    :vartype timestamp_type: Union[str, "TimestampType"]
    """

    timestampType: Union[str, "TimestampType"]
    """Denotes the type of timestamp the message will hold.Two types of timestamp types -
     \"AppendTime\" and \"CreateTime\". AppendTime refers the time in which message got appended
     inside broker log. CreateTime refers to the time in which the message was generated on source
     side and producers can set this timestamp while sending the message. Default value is
     AppendTime. If you are using AMQP protocol, CreateTime equals AppendTime and its behavior
     remains the same. Known values are: \"LogAppend\" and \"Create\"."""


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"]
    :ivar replica_state: state of Namespace replica.
    :vartype replica_state: str
    :ivar cluster_arm_id: Optional property that denotes the ARM ID of the Cluster. This is
     required, if a namespace replica should be placed in a Dedicated Event Hub Cluster.
    :vartype cluster_arm_id: str
    """

    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\"."""
    replicaState: str
    """state of Namespace replica."""
    clusterArmId: str
    """Optional property that denotes the ARM ID of the Cluster. This is required, if a namespace
     replica should be placed in a Dedicated Event Hub Cluster."""


class NetworkRuleSet(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: 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 NetworkRuleSetListResult(TypedDict, total=False):
    """Paged collection of NetworkRuleSet items.

    :ivar value: The NetworkRuleSet items on this page. Required.
    :vartype value: list["NetworkRuleSet"]
    :ivar next_link: The link to the next page of items.
    :vartype next_link: str
    """

    value: Required[list["NetworkRuleSet"]]
    """The NetworkRuleSet items on this page. Required."""
    nextLink: str
    """The link to the next page of items."""


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. If value is SecuredByPerimeter then Inbound and Outbound communication
     is controlled by the network security perimeter and profile's access rules. Known values are:
     "Enabled", "Disabled", and "SecuredByPerimeter".
    :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. If value
     is SecuredByPerimeter then Inbound and Outbound communication is controlled by the network
     security perimeter and profile's access rules. Known values are: \"Enabled\", \"Disabled\", and
     \"SecuredByPerimeter\"."""


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

    :ivar id: Fully qualified identifier of the resource.
    :vartype id: str
    :ivar perimeter_guid: Guid of the resource.
    :vartype perimeter_guid: str
    :ivar location: Location of the resource.
    :vartype location: str
    """

    id: str
    """Fully qualified identifier of the resource."""
    perimeterGuid: str
    """Guid of the resource."""
    location: str
    """Location of the resource."""


class NetworkSecurityPerimeterConfiguration(ProxyResource):
    """Network Security Perimeter related configurations of a given namespace.

    :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 Network Security Perimeter Configuration.
    :vartype properties: "NetworkSecurityPerimeterConfigurationProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

    properties: "NetworkSecurityPerimeterConfigurationProperties"
    """Properties of the Network Security Perimeter Configuration."""
    location: str
    """The geo-location where the resource lives."""


class NetworkSecurityPerimeterConfigurationList(TypedDict, total=False):  # pylint: disable=name-too-long
    """Result of the List NetworkSecurityPerimeterConfiguration operation.

    :ivar value: A collection of NetworkSecurityPerimeterConfigurations.
    :vartype value: list["NetworkSecurityPerimeterConfiguration"]
    """

    value: list["NetworkSecurityPerimeterConfiguration"]
    """A collection of NetworkSecurityPerimeterConfigurations."""


class NetworkSecurityPerimeterConfigurationProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """Properties of NetworkSecurityPerimeterConfiguration.

    :ivar provisioning_state: Provisioning state of NetworkSecurityPerimeter configuration
     propagation. Known values are: "Unknown", "Creating", "Updating", "Accepted",
     "InvalidResponse", "Succeeded", "SucceededWithIssues", "Failed", "Deleting", "Deleted", and
     "Canceled".
    :vartype provisioning_state: Union[str,
     "NetworkSecurityPerimeterConfigurationProvisioningState"]
    :ivar provisioning_issues: List of Provisioning Issues if any.
    :vartype provisioning_issues: list["ProvisioningIssue"]
    :ivar network_security_perimeter: NetworkSecurityPerimeter related information.
    :vartype network_security_perimeter: "NetworkSecurityPerimeter"
    :ivar resource_association: Information about resource association.
    :vartype resource_association:
     "NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation"
    :ivar profile: Information about current network profile.
    :vartype profile: "NetworkSecurityPerimeterConfigurationPropertiesProfile"
    :ivar is_backing_resource: True if the EventHub namespace is backed by another Azure resource
     and not visible to end users.
    :vartype is_backing_resource: bool
    :ivar applicable_features: Indicates that the NSP controls related to backing association are
     only applicable to a specific feature in backing resource's data plane.
    :vartype applicable_features: list[str]
    :ivar parent_association_name: Source Resource Association name.
    :vartype parent_association_name: str
    :ivar source_resource_id: ARM Id of source resource.
    :vartype source_resource_id: str
    """

    provisioningState: Union[str, "NetworkSecurityPerimeterConfigurationProvisioningState"]
    """Provisioning state of NetworkSecurityPerimeter configuration propagation. Known values are:
     \"Unknown\", \"Creating\", \"Updating\", \"Accepted\", \"InvalidResponse\", \"Succeeded\",
     \"SucceededWithIssues\", \"Failed\", \"Deleting\", \"Deleted\", and \"Canceled\"."""
    provisioningIssues: list["ProvisioningIssue"]
    """List of Provisioning Issues if any."""
    networkSecurityPerimeter: "NetworkSecurityPerimeter"
    """NetworkSecurityPerimeter related information."""
    resourceAssociation: "NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation"
    """Information about resource association."""
    profile: "NetworkSecurityPerimeterConfigurationPropertiesProfile"
    """Information about current network profile."""
    isBackingResource: bool
    """True if the EventHub namespace is backed by another Azure resource and not visible to end
     users."""
    applicableFeatures: list[str]
    """Indicates that the NSP controls related to backing association are only applicable to a
     specific feature in backing resource's data plane."""
    parentAssociationName: str
    """Source Resource Association name."""
    sourceResourceId: str
    """ARM Id of source resource."""


class NetworkSecurityPerimeterConfigurationPropertiesProfile(TypedDict, total=False):  # pylint: disable=name-too-long
    """Information about current network profile.

    :ivar name: Name of the resource.
    :vartype name: str
    :ivar access_rules_version: Current access rules version.
    :vartype access_rules_version: str
    :ivar access_rules: List of Access Rules.
    :vartype access_rules: list["NspAccessRule"]
    """

    name: str
    """Name of the resource."""
    accessRulesVersion: str
    """Current access rules version."""
    accessRules: list["NspAccessRule"]
    """List of Access Rules."""


class NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation(
    TypedDict, total=False
):  # pylint: disable=name-too-long
    """Information about resource association.

    :ivar name: Name of the resource association.
    :vartype name: str
    :ivar access_mode: Access Mode of the resource association. Known values are:
     "NoAssociationMode", "EnforcedMode", "LearningMode", "AuditMode", and "UnspecifiedMode".
    :vartype access_mode: Union[str, "ResourceAssociationAccessMode"]
    """

    name: str
    """Name of the resource association."""
    accessMode: Union[str, "ResourceAssociationAccessMode"]
    """Access Mode of the resource association. Known values are: \"NoAssociationMode\",
     \"EnforcedMode\", \"LearningMode\", \"AuditMode\", and \"UnspecifiedMode\"."""


class NspAccessRule(TypedDict, total=False):
    """Information of Access Rule in Network Profile.

    :ivar id: Fully qualified identifier of the resource.
    :vartype id: str
    :ivar name: Name of the resource.
    :vartype name: str
    :ivar type: Type of the resource.
    :vartype type: str
    :ivar properties: Properties of Access Rule.
    :vartype properties: "NspAccessRuleProperties"
    """

    id: str
    """Fully qualified identifier of the resource."""
    name: str
    """Name of the resource."""
    type: str
    """Type of the resource."""
    properties: "NspAccessRuleProperties"
    """Properties of Access Rule."""


class NspAccessRuleProperties(TypedDict, total=False):
    """Properties of Access Rule.

    :ivar direction: Direction of Access Rule. Known values are: "Inbound" and "Outbound".
    :vartype direction: Union[str, "NspAccessRuleDirection"]
    :ivar address_prefixes: Address prefixes in the CIDR format for inbound rules.
    :vartype address_prefixes: list[str]
    :ivar subscriptions: Subscriptions for inbound rules.
    :vartype subscriptions: list["NspAccessRulePropertiesSubscriptionsItem"]
    :ivar network_security_perimeters: NetworkSecurityPerimeters for inbound rules.
    :vartype network_security_perimeters: list["NetworkSecurityPerimeter"]
    :ivar fully_qualified_domain_names: FQDN for outbound rules.
    :vartype fully_qualified_domain_names: list[str]
    """

    direction: Union[str, "NspAccessRuleDirection"]
    """Direction of Access Rule. Known values are: \"Inbound\" and \"Outbound\"."""
    addressPrefixes: list[str]
    """Address prefixes in the CIDR format for inbound rules."""
    subscriptions: list["NspAccessRulePropertiesSubscriptionsItem"]
    """Subscriptions for inbound rules."""
    networkSecurityPerimeters: list["NetworkSecurityPerimeter"]
    """NetworkSecurityPerimeters for inbound rules."""
    fullyQualifiedDomainNames: list[str]
    """FQDN for outbound rules."""


class NspAccessRulePropertiesSubscriptionsItem(TypedDict, total=False):
    """Subscription for inbound rule.

    :ivar id: Fully qualified identifier of subscription.
    :vartype id: str
    """

    id: str
    """Fully qualified identifier of subscription."""


class NWRuleSetIpRules(TypedDict, total=False):
    """The response from the List namespace operation.

    :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):
    """The response from the List namespace operation.

    :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 Operation(TypedDict, total=False):
    """A Event Hub REST API operation.

    :ivar name: Operation name: {provider}/{resource}/{operation}.
    :vartype name: str
    :ivar is_data_action: Indicates whether the operation is a data action.
    :vartype is_data_action: bool
    :ivar display: Display of the operation.
    :vartype display: "OperationDisplay"
    :ivar origin: Origin of the operation.
    :vartype origin: str
    :ivar properties: Properties of the operation.
    :vartype properties: Any
    """

    name: str
    """Operation name: {provider}/{resource}/{operation}."""
    isDataAction: bool
    """Indicates whether the operation is a data action."""
    display: "OperationDisplay"
    """Display of the operation."""
    origin: str
    """Origin of the operation."""
    properties: Any
    """Properties of the operation."""


class OperationDisplay(TypedDict, total=False):
    """Operation display payload.

    :ivar provider: Resource provider of the operation.
    :vartype provider: str
    :ivar resource: Resource of the operation.
    :vartype resource: str
    :ivar operation: Localized friendly name for the operation.
    :vartype operation: str
    :ivar description: Localized friendly description for the operation.
    :vartype description: str
    """

    provider: str
    """Resource provider of the operation."""
    resource: str
    """Resource of the operation."""
    operation: str
    """Localized friendly name for the operation."""
    description: str
    """Localized friendly description for the operation."""


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 PrivateLinkResource(TypedDict, total=False):
    """Information of the private link resource.

    :ivar properties: Properties of the private link resource.
    :vartype properties: "PrivateLinkResourceProperties"
    :ivar id: Fully qualified identifier of the resource.
    :vartype id: str
    :ivar name: Name of the resource.
    :vartype name: str
    :ivar type: Type of the resource.
    :vartype type: str
    """

    properties: "PrivateLinkResourceProperties"
    """Properties of the private link resource."""
    id: str
    """Fully qualified identifier of the resource."""
    name: str
    """Name of the resource."""
    type: str
    """Type of the resource."""


class PrivateLinkResourceProperties(TypedDict, total=False):
    """Properties of PrivateLinkResource.

    :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 Private link DNS zone name.
    :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 Private link DNS zone name."""


class PrivateLinkResourcesListResult(TypedDict, total=False):
    """Paged collection of PrivateLinkResource items.

    :ivar value: The PrivateLinkResource items on this page. Required.
    :vartype value: list["PrivateLinkResource"]
    :ivar next_link: The link to the next page of items.
    :vartype next_link: str
    """

    value: Required[list["PrivateLinkResource"]]
    """The PrivateLinkResource items on this page. Required."""
    nextLink: str
    """The link to the next page of items."""


class ProvisioningIssue(TypedDict, total=False):
    """Describes Provisioning issue for given NetworkSecurityPerimeterConfiguration.

    :ivar name: Name of the issue.
    :vartype name: str
    :ivar properties: Properties of Provisioning Issue.
    :vartype properties: "ProvisioningIssueProperties"
    """

    name: str
    """Name of the issue."""
    properties: "ProvisioningIssueProperties"
    """Properties of Provisioning Issue."""


class ProvisioningIssueProperties(TypedDict, total=False):
    """Properties of Provisioning Issue.

    :ivar issue_type: Type of Issue.
    :vartype issue_type: str
    :ivar description: Description of the issue.
    :vartype description: str
    """

    issueType: str
    """Type of Issue."""
    description: str
    """Description of the issue."""


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 set for KeyType or autogenerated 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 set for KeyType or autogenerated Key value set for
     keyType."""


class RetentionDescription(TypedDict, total=False):
    """Properties to configure retention settings for the  eventhub.

    :ivar cleanup_policy: Enumerates the possible values for cleanup policy. Known values are:
     "Delete", "Compact", and "DeleteOrCompact".
    :vartype cleanup_policy: Union[str, "CleanupPolicyRetentionDescription"]
    :ivar retention_time_in_hours: Number of hours to retain the events for this Event Hub. This
     should be positive value upto namespace SKU max. -1 is a special case where retention time is
     infinite, but the size of an entity is restricted and its size depends on namespace SKU type.
    :vartype retention_time_in_hours: int
    :ivar min_compaction_lag_time_in_minutes: The minimum time a message will remain ineligible for
     compaction in the log. This value is used when cleanupPolicy is Compact or DeleteOrCompact.
    :vartype min_compaction_lag_time_in_minutes: int
    :ivar tombstone_retention_time_in_hours: Number of hours to retain the tombstone markers of a
     compacted Event Hub. This value is used when cleanupPolicy is Compact or DeleteOrCompact.
     Consumer must complete reading the tombstone marker within this specified amount of time if
     consumer begins from starting offset to ensure they get a valid snapshot for the specific key
     described by the tombstone marker within the compacted Event Hub.
    :vartype tombstone_retention_time_in_hours: int
    """

    cleanupPolicy: Union[str, "CleanupPolicyRetentionDescription"]
    """Enumerates the possible values for cleanup policy. Known values are: \"Delete\", \"Compact\",
     and \"DeleteOrCompact\"."""
    retentionTimeInHours: int
    """Number of hours to retain the events for this Event Hub. This should be positive value upto
     namespace SKU max. -1 is a special case where retention time is infinite, but the size of an
     entity is restricted and its size depends on namespace SKU type."""
    minCompactionLagTimeInMinutes: int
    """The minimum time a message will remain ineligible for compaction in the log. This value is used
     when cleanupPolicy is Compact or DeleteOrCompact."""
    tombstoneRetentionTimeInHours: int
    """Number of hours to retain the tombstone markers of a compacted Event Hub. This value is used
     when cleanupPolicy is Compact or DeleteOrCompact. Consumer must complete reading the tombstone
     marker within this specified amount of time if consumer begins from starting offset to ensure
     they get a valid snapshot for the specific key described by the tombstone marker within the
     compacted Event Hub."""


class SchemaGroup(ProxyResource):
    """Single item in List or Get Schema Group 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:
    :vartype properties: "SchemaGroupProperties"
    :ivar location: The geo-location where the resource lives.
    :vartype location: str
    """

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


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

    :ivar updated_at_utc: Exact time the Schema Group was updated.
    :vartype updated_at_utc: str
    :ivar created_at_utc: Exact time the Schema Group was created.
    :vartype created_at_utc: str
    :ivar e_tag: The ETag value.
    :vartype e_tag: str
    :ivar group_properties: dictionary object for SchemaGroup group properties.
    :vartype group_properties: dict[str, str]
    :ivar schema_compatibility: Known values are: "None", "Backward", and "Forward".
    :vartype schema_compatibility: Union[str, "SchemaCompatibility"]
    :ivar schema_type: Known values are: "Unknown", "Avro", "ProtoBuf", and "Json".
    :vartype schema_type: Union[str, "SchemaType"]
    """

    updatedAtUtc: str
    """Exact time the Schema Group was updated."""
    createdAtUtc: str
    """Exact time the Schema Group was created."""
    eTag: str
    """The ETag value."""
    groupProperties: dict[str, str]
    """dictionary object for SchemaGroup group properties."""
    schemaCompatibility: Union[str, "SchemaCompatibility"]
    """Known values are: \"None\", \"Backward\", and \"Forward\"."""
    schemaType: Union[str, "SchemaType"]
    """Known values are: \"Unknown\", \"Avro\", \"ProtoBuf\", and \"Json\"."""


class Sku(TypedDict, total=False):
    """SKU parameters supplied to the create namespace operation.

    :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: The Event Hubs throughput units for Basic or Standard tiers, where value should
     be 0 to 20 throughput units. The Event Hubs premium units for Premium tier, where value should
     be 0 to 10 premium units.
    :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
    """The Event Hubs throughput units for Basic or Standard tiers, where value should be 0 to 20
     throughput units. The Event Hubs premium units for Premium tier, where value should be 0 to 10
     premium units."""


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

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

    id: str
    """Resource ID of Virtual Network Subnet."""


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 ThrottlingPolicy(TypedDict, total=False):
    """Properties of the throttling policy.

    :ivar name: The Name of this policy. Required.
    :vartype name: str
    :ivar rate_limit_threshold: The Threshold limit above which the application group will be
     throttled.Rate limit is always per second. Required.
    :vartype rate_limit_threshold: int
    :ivar metric_id: Metric Id on which the throttle limit should be set, MetricId can be
     discovered by hovering over Metric in the Metrics section of Event Hub Namespace inside Azure
     Portal. Required. Known values are: "IncomingBytes", "OutgoingBytes", "IncomingMessages", and
     "OutgoingMessages".
    :vartype metric_id: Union[str, "MetricId"]
    :ivar type: Application Group Policy types. Required. THROTTLING_POLICY.
    :vartype type: Literal[ApplicationGroupPolicyType.THROTTLING_POLICY]
    """

    name: Required[str]
    """The Name of this policy. Required."""
    rateLimitThreshold: Required[int]
    """The Threshold limit above which the application group will be throttled.Rate limit is always
     per second. Required."""
    metricId: Required[Union[str, "MetricId"]]
    """Metric Id on which the throttle limit should be set, MetricId can be discovered by hovering
     over Metric in the Metrics section of Event Hub Namespace inside Azure Portal. Required. Known
     values are: \"IncomingBytes\", \"OutgoingBytes\", \"IncomingMessages\", and
     \"OutgoingMessages\"."""
    type: Required[Literal[ApplicationGroupPolicyType.THROTTLING_POLICY]]
    """Application Group Policy types. Required. THROTTLING_POLICY."""


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."""


ApplicationGroupPolicy = Union[ThrottlingPolicy]
