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

if TYPE_CHECKING:
    from .models import (
        Action,
        ActionsRequired,
        ActivationStatus,
        AuditLogStatus,
        AutoGeneratedDomainNameLabelScope,
        AzureADAuthenticationAsArmPolicyStatus,
        CertificateType,
        ConnectedRegistryMode,
        ConnectionState,
        ConnectionStatus,
        ContainerRegistryResourceType,
        CreatedByType,
        CredentialHealthStatus,
        CredentialName,
        DefaultAction,
        EncryptionStatus,
        EndpointProtocol,
        ExportPolicyStatus,
        ImportMode,
        LogLevel,
        MetadataSearch,
        NetworkRuleBypassOptions,
        PackageSourceType,
        PasswordName,
        PipelineOptions,
        PipelineRunSourceType,
        PipelineRunTargetType,
        PipelineSourceType,
        PolicyStatus,
        ProvisioningState,
        PublicNetworkAccess,
        RegionalEndpoints,
        RegistryUsageUnit,
        ResourceIdentityType,
        RoleAssignmentMode,
        SkuName,
        SkuTier,
        StorageAccessMode,
        SyncState,
        SyncTrigger,
        TlsStatus,
        TokenCertificateName,
        TokenPasswordName,
        TokenStatus,
        TriggerStatus,
        TrustPolicyType,
        WebhookAction,
        WebhookStatus,
        WritableCacheRepos,
        ZoneRedundancy,
    )


class ActivationProperties(TypedDict, total=False):
    """The activation properties of the connected registry.

    :ivar status: The activation status of the connected registry. Known values are: "Active" and
     "Inactive".
    :vartype status: Union[str, "ActivationStatus"]
    """

    status: Union[str, "ActivationStatus"]
    """The activation status of the connected registry. Known values are: \"Active\" and \"Inactive\"."""


class Actor(TypedDict, total=False):
    """The agent that initiated the event. For most situations, this could be from the authorization
    context of the request.

    :ivar name: The subject or username associated with the request context that generated the
     event.
    :vartype name: str
    """

    name: str
    """The subject or username associated with the request context that generated the event."""


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 private link 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 private link 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 private link 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 Archive(ProxyResource):
    """An object that represents a archive for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the archive.
    :vartype properties: "ArchiveProperties"
    """

    properties: "ArchiveProperties"
    """The properties of the archive."""


class ArchivePackageSourceProperties(TypedDict, total=False):
    """The properties of the archive package source.

    :ivar type: The type of package source for a archive. "remote"
    :vartype type: Union[str, "PackageSourceType"]
    :ivar url: The external repository url.
    :vartype url: str
    """

    type: Union[str, "PackageSourceType"]
    """The type of package source for a archive. \"remote\""""
    url: str
    """The external repository url."""


class ArchiveProperties(TypedDict, total=False):
    """The properties of a archive.

    :ivar package_source: The package source of the archive.
    :vartype package_source: "ArchivePackageSourceProperties"
    :ivar published_version: The published version of the archive.
    :vartype published_version: str
    :ivar repository_endpoint_prefix:
    :vartype repository_endpoint_prefix: str
    :ivar repository_endpoint:
    :vartype repository_endpoint: str
    :ivar provisioning_state: The provisioning state of the archive at the time the operation was
     called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    packageSource: "ArchivePackageSourceProperties"
    """The package source of the archive."""
    publishedVersion: str
    """The published version of the archive."""
    repositoryEndpointPrefix: str
    repositoryEndpoint: str
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the archive at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""


class ArchiveUpdateParameters(TypedDict, total=False):
    """The parameters for updating a archive.

    :ivar properties: The properties of the connected registry update parameters.
    :vartype properties: "ArchiveUpdateProperties"
    """

    properties: "ArchiveUpdateProperties"
    """The properties of the connected registry update parameters."""


class ArchiveUpdateProperties(TypedDict, total=False):
    """The properties of a archive.

    :ivar published_version: The published version of the archive.
    :vartype published_version: str
    """

    publishedVersion: str
    """The published version of the archive."""


class ArchiveVersion(ProxyResource):
    """An object that represents an export pipeline for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the archive.
    :vartype properties: "ArchiveVersionProperties"
    """

    properties: "ArchiveVersionProperties"
    """The properties of the archive."""


class ArchiveVersionProperties(TypedDict, total=False):
    """The properties of an archive version.

    :ivar provisioning_state: The provisioning state of the archive at the time the operation was
     called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar archive_version_error_message: The detailed error message for the archive version in the
     case of failure.
    :vartype archive_version_error_message: str
    """

    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the archive at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""
    archiveVersionErrorMessage: str
    """The detailed error message for the archive version in the case of failure."""


class AuthCredential(TypedDict, total=False):
    """Authentication credential stored for an upstream.

    :ivar name: The name of the credential. "Credential1"
    :vartype name: Union[str, "CredentialName"]
    :ivar username_secret_identifier: KeyVault Secret URI for accessing the username.
    :vartype username_secret_identifier: str
    :ivar password_secret_identifier: KeyVault Secret URI for accessing the password.
    :vartype password_secret_identifier: str
    :ivar credential_health: This provides data pertaining to the health of the auth credential.
    :vartype credential_health: "CredentialHealth"
    """

    name: Union[str, "CredentialName"]
    """The name of the credential. \"Credential1\""""
    usernameSecretIdentifier: str
    """KeyVault Secret URI for accessing the username."""
    passwordSecretIdentifier: str
    """KeyVault Secret URI for accessing the password."""
    credentialHealth: "CredentialHealth"
    """This provides data pertaining to the health of the auth credential."""


class AzureADAuthenticationAsArmPolicy(TypedDict, total=False):
    """The policy for using Azure Resource Manager audience token for a container registry.

    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "AzureADAuthenticationAsArmPolicyStatus"]
    """

    status: Union[str, "AzureADAuthenticationAsArmPolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


class CacheRule(ProxyResource):
    """An object that represents a cache rule for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the cache rule.
    :vartype properties: "CacheRuleProperties"
    :ivar identity: The identity of the cache rule.
    :vartype identity: "IdentityProperties"
    """

    properties: "CacheRuleProperties"
    """The properties of the cache rule."""
    identity: "IdentityProperties"
    """The identity of the cache rule."""


class CacheRuleProperties(TypedDict, total=False):
    """The properties of a cache rule.

    :ivar credential_set_resource_id: The ARM resource ID of the credential store which is
     associated with the cache rule.
    :vartype credential_set_resource_id: str
    :ivar additional_authentication_properties: Authentication configuration used by the cache rule
     to access the upstream source repository.
    :vartype additional_authentication_properties: "AdditionalAuthenticationProperties"
    :ivar source_repository: Source repository pulled from upstream.
    :vartype source_repository: str
    :ivar target_repository: Target repository specified in docker pull command. Eg: docker pull
     myregistry.azurecr.io/{targetRepository}:{tag}.
    :vartype target_repository: str
    :ivar creation_date: The creation date of the cache rule.
    :vartype creation_date: str
    :ivar provisioning_state: Provisioning state of the resource. Known values are: "Creating",
     "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    credentialSetResourceId: str
    """The ARM resource ID of the credential store which is associated with the cache rule."""
    additionalAuthenticationProperties: "AdditionalAuthenticationProperties"
    """Authentication configuration used by the cache rule to access the upstream source repository."""
    sourceRepository: str
    """Source repository pulled from upstream."""
    targetRepository: str
    """Target repository specified in docker pull command. Eg: docker pull
     myregistry.azurecr.io/{targetRepository}:{tag}."""
    creationDate: str
    """The creation date of the cache rule."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the resource. Known values are: \"Creating\", \"Updating\", \"Deleting\",
     \"Succeeded\", \"Failed\", and \"Canceled\"."""


class CacheRuleUpdateParameters(TypedDict, total=False):
    """The parameters for updating a cache rule.

    :ivar properties: The properties of the cache rule update parameters.
    :vartype properties: "CacheRuleUpdateProperties"
    :ivar identity: The identity of the cache rule.
    :vartype identity: "IdentityProperties"
    """

    properties: "CacheRuleUpdateProperties"
    """The properties of the cache rule update parameters."""
    identity: "IdentityProperties"
    """The identity of the cache rule."""


class CacheRuleUpdateProperties(TypedDict, total=False):
    """The parameters for updating cache rule properties.

    :ivar credential_set_resource_id: The ARM resource ID of the credential store which is
     associated with the Cache rule.
    :vartype credential_set_resource_id: str
    :ivar additional_authentication_properties: Authentication configuration used by the cache rule
     to access the upstream source repository.
    :vartype additional_authentication_properties: "AdditionalAuthenticationProperties"
    """

    credentialSetResourceId: str
    """The ARM resource ID of the credential store which is associated with the Cache rule."""
    additionalAuthenticationProperties: "AdditionalAuthenticationProperties"
    """Authentication configuration used by the cache rule to access the upstream source repository."""


class CallbackConfig(TypedDict, total=False):
    """The configuration of service URI and custom headers for the webhook.

    :ivar service_uri: The service URI for the webhook to post notifications. Required.
    :vartype service_uri: str
    :ivar custom_headers: Custom headers that will be added to the webhook notifications.
    :vartype custom_headers: dict[str, str]
    """

    serviceUri: Required[str]
    """The service URI for the webhook to post notifications. Required."""
    customHeaders: dict[str, str]
    """Custom headers that will be added to the webhook notifications."""


class ConnectedRegistry(ProxyResource):
    """An object that represents a connected registry for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the connected registry.
    :vartype properties: "ConnectedRegistryProperties"
    """

    properties: "ConnectedRegistryProperties"
    """The properties of the connected registry."""


class ConnectedRegistryProperties(TypedDict, total=False):
    """The properties of a connected registry.

    :ivar provisioning_state: Provisioning state of the resource. Known values are: "Creating",
     "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar mode: The mode of the connected registry resource that indicates the permissions of the
     registry. Required. Known values are: "ReadWrite", "ReadOnly", "Registry", and "Mirror".
    :vartype mode: Union[str, "ConnectedRegistryMode"]
    :ivar version: The current version of ACR runtime on the connected registry.
    :vartype version: str
    :ivar connection_state: The current connection state of the connected registry. Known values
     are: "Online", "Offline", "Syncing", and "Unhealthy".
    :vartype connection_state: Union[str, "ConnectionState"]
    :ivar last_activity_time: The last activity time of the connected registry.
    :vartype last_activity_time: str
    :ivar activation: The activation properties of the connected registry.
    :vartype activation: "ActivationProperties"
    :ivar parent: The parent of the connected registry. Required.
    :vartype parent: "ParentProperties"
    :ivar client_token_ids: The list of the ACR token resource IDs used to authenticate clients to
     the connected registry.
    :vartype client_token_ids: list[str]
    :ivar login_server: The login server properties of the connected registry.
    :vartype login_server: "LoginServerProperties"
    :ivar logging: The logging properties of the connected registry.
    :vartype logging: "LoggingProperties"
    :ivar status_details: The list of current statuses of the connected registry.
    :vartype status_details: list["StatusDetailProperties"]
    :ivar notifications_list: The list of notifications subscription information for the connected
     registry.
    :vartype notifications_list: list[str]
    :ivar garbage_collection: The garbage collection properties of the connected registry.
    :vartype garbage_collection: "GarbageCollectionProperties"
    :ivar registry_sync_result: The result of the connected registry's most recent sync with its
     parent.
    :vartype registry_sync_result: "RegistrySyncResult"
    """

    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the resource. Known values are: \"Creating\", \"Updating\", \"Deleting\",
     \"Succeeded\", \"Failed\", and \"Canceled\"."""
    mode: Required[Union[str, "ConnectedRegistryMode"]]
    """The mode of the connected registry resource that indicates the permissions of the registry.
     Required. Known values are: \"ReadWrite\", \"ReadOnly\", \"Registry\", and \"Mirror\"."""
    version: str
    """The current version of ACR runtime on the connected registry."""
    connectionState: Union[str, "ConnectionState"]
    """The current connection state of the connected registry. Known values are: \"Online\",
     \"Offline\", \"Syncing\", and \"Unhealthy\"."""
    lastActivityTime: str
    """The last activity time of the connected registry."""
    activation: "ActivationProperties"
    """The activation properties of the connected registry."""
    parent: Required["ParentProperties"]
    """The parent of the connected registry. Required."""
    clientTokenIds: list[str]
    """The list of the ACR token resource IDs used to authenticate clients to the connected registry."""
    loginServer: "LoginServerProperties"
    """The login server properties of the connected registry."""
    logging: "LoggingProperties"
    """The logging properties of the connected registry."""
    statusDetails: list["StatusDetailProperties"]
    """The list of current statuses of the connected registry."""
    notificationsList: list[str]
    """The list of notifications subscription information for the connected registry."""
    garbageCollection: "GarbageCollectionProperties"
    """The garbage collection properties of the connected registry."""
    registrySyncResult: "RegistrySyncResult"
    """The result of the connected registry's most recent sync with its parent."""


class ConnectedRegistryUpdateParameters(TypedDict, total=False):
    """The parameters for updating a connected registry.

    :ivar properties: The properties of the connected registry update parameters.
    :vartype properties: "ConnectedRegistryUpdateProperties"
    """

    properties: "ConnectedRegistryUpdateProperties"
    """The properties of the connected registry update parameters."""


class ConnectedRegistryUpdateProperties(TypedDict, total=False):
    """The parameters for updating token properties.

    :ivar sync_properties: The sync properties of the connected registry with its parent.
    :vartype sync_properties: "SyncUpdateProperties"
    :ivar logging: The logging properties of the connected registry.
    :vartype logging: "LoggingProperties"
    :ivar client_token_ids: The list of the ACR token resource IDs used to authenticate clients to
     the connected registry.
    :vartype client_token_ids: list[str]
    :ivar notifications_list: The list of notifications subscription information for the connected
     registry.
    :vartype notifications_list: list[str]
    :ivar garbage_collection: The garbage collection properties of the connected registry.
    :vartype garbage_collection: "GarbageCollectionProperties"
    """

    syncProperties: "SyncUpdateProperties"
    """The sync properties of the connected registry with its parent."""
    logging: "LoggingProperties"
    """The logging properties of the connected registry."""
    clientTokenIds: list[str]
    """The list of the ACR token resource IDs used to authenticate clients to the connected registry."""
    notificationsList: list[str]
    """The list of notifications subscription information for the connected registry."""
    garbageCollection: "GarbageCollectionProperties"
    """The garbage collection properties of the connected registry."""


class CredentialHealth(TypedDict, total=False):
    """The health of the auth credential.

    :ivar status: The health status of credential. Known values are: "Healthy" and "Unhealthy".
    :vartype status: Union[str, "CredentialHealthStatus"]
    :ivar error_code: Error code representing the health check error.
    :vartype error_code: str
    :ivar error_message: Descriptive message representing the health check error.
    :vartype error_message: str
    """

    status: Union[str, "CredentialHealthStatus"]
    """The health status of credential. Known values are: \"Healthy\" and \"Unhealthy\"."""
    errorCode: str
    """Error code representing the health check error."""
    errorMessage: str
    """Descriptive message representing the health check error."""


class CredentialSet(ProxyResource):
    """An object that represents a credential set resource for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the credential set.
    :vartype properties: "CredentialSetProperties"
    :ivar identity: Identities associated with the resource. This is used to access the KeyVault
     secrets.
    :vartype identity: "IdentityProperties"
    """

    properties: "CredentialSetProperties"
    """The properties of the credential set."""
    identity: "IdentityProperties"
    """Identities associated with the resource. This is used to access the KeyVault secrets."""


class CredentialSetProperties(TypedDict, total=False):
    """The properties of a credential set resource.

    :ivar login_server: The credentials are stored for this upstream or login server.
    :vartype login_server: str
    :ivar auth_credentials: List of authentication credentials stored for an upstream. Usually
     consists of a primary and an optional secondary credential.
    :vartype auth_credentials: list["AuthCredential"]
    :ivar creation_date: The creation date of credential store resource.
    :vartype creation_date: str
    :ivar provisioning_state: Provisioning state of the resource. Known values are: "Creating",
     "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    loginServer: str
    """The credentials are stored for this upstream or login server."""
    authCredentials: list["AuthCredential"]
    """List of authentication credentials stored for an upstream. Usually consists of a primary and an
     optional secondary credential."""
    creationDate: str
    """The creation date of credential store resource."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the resource. Known values are: \"Creating\", \"Updating\", \"Deleting\",
     \"Succeeded\", \"Failed\", and \"Canceled\"."""


class CredentialSetUpdateParameters(TypedDict, total=False):
    """The parameters for updating a credential set.

    :ivar properties: The properties of the credential set update parameters.
    :vartype properties: "CredentialSetUpdateProperties"
    :ivar identity: Identities associated with the resource. This is used to access the KeyVault
     secrets.
    :vartype identity: "IdentityProperties"
    """

    properties: "CredentialSetUpdateProperties"
    """The properties of the credential set update parameters."""
    identity: "IdentityProperties"
    """Identities associated with the resource. This is used to access the KeyVault secrets."""


class CredentialSetUpdateProperties(TypedDict, total=False):
    """The parameters for updating credential set properties.

    :ivar auth_credentials: List of authentication credentials stored for an upstream. Usually
     consists of a primary and an optional secondary credential.
    :vartype auth_credentials: list["AuthCredential"]
    """

    authCredentials: list["AuthCredential"]
    """List of authentication credentials stored for an upstream. Usually consists of a primary and an
     optional secondary credential."""


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

    :ivar status: Indicates whether or not the encryption is enabled for container registry. Known
     values are: "enabled" and "disabled".
    :vartype status: Union[str, "EncryptionStatus"]
    :ivar key_vault_properties: Key vault properties.
    :vartype key_vault_properties: "KeyVaultProperties"
    """

    status: Union[str, "EncryptionStatus"]
    """Indicates whether or not the encryption is enabled for container registry. Known values are:
     \"enabled\" and \"disabled\"."""
    keyVaultProperties: "KeyVaultProperties"
    """Key vault properties."""


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

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

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


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

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

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


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

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

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


class EventInfo(TypedDict, total=False):
    """The basic information of an event.

    :ivar id: The event ID.
    :vartype id: str
    """

    id: str
    """The event ID."""


class Event(EventInfo):
    """The event for a webhook.

    :ivar id: The event ID.
    :vartype id: str
    :ivar event_request_message: The event request message sent to the service URI.
    :vartype event_request_message: "EventRequestMessage"
    :ivar event_response_message: The event response message received from the service URI.
    :vartype event_response_message: "EventResponseMessage"
    """

    eventRequestMessage: "EventRequestMessage"
    """The event request message sent to the service URI."""
    eventResponseMessage: "EventResponseMessage"
    """The event response message received from the service URI."""


class EventContent(TypedDict, total=False):
    """The content of the event request message.

    :ivar id: The event ID.
    :vartype id: str
    :ivar timestamp: The time at which the event occurred.
    :vartype timestamp: str
    :ivar action: The action that encompasses the provided event.
    :vartype action: str
    :ivar target: The target of the event.
    :vartype target: "Target"
    :ivar request: The request that generated the event.
    :vartype request: "Request"
    :ivar actor: The agent that initiated the event. For most situations, this could be from the
     authorization context of the request.
    :vartype actor: "Actor"
    :ivar source: The registry node that generated the event. Put differently, while the actor
     initiates the event, the source generates it.
    :vartype source: "Source"
    """

    id: str
    """The event ID."""
    timestamp: str
    """The time at which the event occurred."""
    action: str
    """The action that encompasses the provided event."""
    target: "Target"
    """The target of the event."""
    request: "Request"
    """The request that generated the event."""
    actor: "Actor"
    """The agent that initiated the event. For most situations, this could be from the authorization
     context of the request."""
    source: "Source"
    """The registry node that generated the event. Put differently, while the actor initiates the
     event, the source generates it."""


class EventRequestMessage(TypedDict, total=False):
    """The event request message sent to the service URI.

    :ivar content: The content of the event request message.
    :vartype content: "EventContent"
    :ivar headers: The headers of the event request message.
    :vartype headers: dict[str, str]
    :ivar method: The HTTP method used to send the event request message.
    :vartype method: str
    :ivar request_uri: The URI used to send the event request message.
    :vartype request_uri: str
    :ivar version: The HTTP message version.
    :vartype version: str
    """

    content: "EventContent"
    """The content of the event request message."""
    headers: dict[str, str]
    """The headers of the event request message."""
    method: str
    """The HTTP method used to send the event request message."""
    requestUri: str
    """The URI used to send the event request message."""
    version: str
    """The HTTP message version."""


class EventResponseMessage(TypedDict, total=False):
    """The event response message received from the service URI.

    :ivar content: The content of the event response message.
    :vartype content: str
    :ivar headers: The headers of the event response message.
    :vartype headers: dict[str, str]
    :ivar reason_phrase: The reason phrase of the event response message.
    :vartype reason_phrase: str
    :ivar status_code: The status code of the event response message.
    :vartype status_code: str
    :ivar version: The HTTP message version.
    :vartype version: str
    """

    content: str
    """The content of the event response message."""
    headers: dict[str, str]
    """The headers of the event response message."""
    reasonPhrase: str
    """The reason phrase of the event response message."""
    statusCode: str
    """The status code of the event response message."""
    version: str
    """The HTTP message version."""


class ExportPipeline(ProxyResource):
    """An object that represents an export pipeline for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the export pipeline.
    :vartype properties: "ExportPipelineProperties"
    :ivar location: The location of the export pipeline.
    :vartype location: str
    :ivar identity: The identity of the export pipeline.
    :vartype identity: "IdentityProperties"
    """

    properties: "ExportPipelineProperties"
    """The properties of the export pipeline."""
    location: str
    """The location of the export pipeline."""
    identity: "IdentityProperties"
    """The identity of the export pipeline."""


class ExportPipelineProperties(TypedDict, total=False):
    """The properties of an export pipeline.

    :ivar target: The target properties of the export pipeline. Required.
    :vartype target: "ExportPipelineTargetProperties"
    :ivar options: The list of all options configured for the pipeline.
    :vartype options: list[Union[str, "PipelineOptions"]]
    :ivar provisioning_state: The provisioning state of the pipeline at the time the operation was
     called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    target: Required["ExportPipelineTargetProperties"]
    """The target properties of the export pipeline. Required."""
    options: list[Union[str, "PipelineOptions"]]
    """The list of all options configured for the pipeline."""
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the pipeline at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""


class ExportPipelineTargetProperties(TypedDict, total=False):
    """The properties of the export pipeline target.

    :ivar type: The type of target for the export pipeline.
    :vartype type: str
    :ivar uri: The target uri of the export pipeline. When 'AzureStorageBlob':
     "`https://accountName.blob.core.windows.net/containerName/blobName
     <https://accountName.blob.core.windows.net/containerName/blobName>`_" When
     'AzureStorageBlobContainer':  "`https://accountName.blob.core.windows.net/containerName
     <https://accountName.blob.core.windows.net/containerName>`_".
    :vartype uri: str
    :ivar key_vault_uri: They key vault secret uri to obtain the target storage SAS token.
    :vartype key_vault_uri: str
    :ivar storage_access_mode: The storage access mode used for the customer storage account. Known
     values are: "ManagedIdentity" and "SasToken".
    :vartype storage_access_mode: Union[str, "StorageAccessMode"]
    """

    type: str
    """The type of target for the export pipeline."""
    uri: str
    """The target uri of the export pipeline. When 'AzureStorageBlob':
     \"`https://accountName.blob.core.windows.net/containerName/blobName
     <https://accountName.blob.core.windows.net/containerName/blobName>`_\" When
     'AzureStorageBlobContainer':  \"`https://accountName.blob.core.windows.net/containerName
     <https://accountName.blob.core.windows.net/containerName>`_\"."""
    keyVaultUri: str
    """They key vault secret uri to obtain the target storage SAS token."""
    storageAccessMode: Union[str, "StorageAccessMode"]
    """The storage access mode used for the customer storage account. Known values are:
     \"ManagedIdentity\" and \"SasToken\"."""


class ExportPolicy(TypedDict, total=False):
    """The export policy for a container registry.

    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "ExportPolicyStatus"]
    """

    status: Union[str, "ExportPolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


class GarAuthenticationProperties(TypedDict, total=False):
    """Google Artifact Registry (GAR) authentication configuration.

    :ivar authentication_type: Required. Google Artifact Registry (GAR) authentication via workload
     identity federation.
    :vartype authentication_type: Literal[AdditionalAuthenticationType.GOOGLE_ARTIFACT_REGISTRY]
    :ivar project_number: The Google Cloud Platform project that is configured for authentication
     Permissions should be granted to
     principal://iam.googleapis.com/projects/{ProjectNumber}/locations/global/workloadIdentityPools/{WorkloadIdentityPool}/providers/{WorkloadIdentityProvider}/subject/{ManagedIdentityPrincipal}.
     Required.
    :vartype project_number: str
    :ivar workload_identity_pool: The Google Cloud platform workload identity pool used for
     authentication. Required.
    :vartype workload_identity_pool: str
    :ivar workload_identity_provider: The Google Cloud Platform workload identity provider used for
     authentication. Required.
    :vartype workload_identity_provider: str
    """

    authenticationType: Required[Literal[AdditionalAuthenticationType.GOOGLE_ARTIFACT_REGISTRY]]
    """Required. Google Artifact Registry (GAR) authentication via workload identity federation."""
    projectNumber: Required[str]
    """The Google Cloud Platform project that is configured for authentication Permissions should be
     granted to
     principal://iam.googleapis.com/projects/{ProjectNumber}/locations/global/workloadIdentityPools/{WorkloadIdentityPool}/providers/{WorkloadIdentityProvider}/subject/{ManagedIdentityPrincipal}.
     Required."""
    workloadIdentityPool: Required[str]
    """The Google Cloud platform workload identity pool used for authentication. Required."""
    workloadIdentityProvider: Required[str]
    """The Google Cloud Platform workload identity provider used for authentication. Required."""


class GarbageCollectionProperties(TypedDict, total=False):
    """The garbage collection properties of the connected registry.

    :ivar enabled: Indicates whether garbage collection is enabled for the connected registry.
    :vartype enabled: bool
    :ivar schedule: The cron expression indicating the schedule that the connected registry will
     run garbage collection.
    :vartype schedule: str
    """

    enabled: bool
    """Indicates whether garbage collection is enabled for the connected registry."""
    schedule: str
    """The cron expression indicating the schedule that the connected registry will run garbage
     collection."""


class GenerateCredentialsParameters(TypedDict, total=False):
    """The parameters used to generate credentials for a specified token or user of a container
    registry.

    :ivar token_id: The resource ID of the token for which credentials have to be generated.
    :vartype token_id: str
    :ivar expiry: The expiry date of the generated credentials after which the credentials become
     invalid.
    :vartype expiry: str
    :ivar name: Specifies name of the password which should be regenerated if any -- password1 or
     password2. Known values are: "password1" and "password2".
    :vartype name: Union[str, "TokenPasswordName"]
    """

    tokenId: str
    """The resource ID of the token for which credentials have to be generated."""
    expiry: str
    """The expiry date of the generated credentials after which the credentials become invalid."""
    name: Union[str, "TokenPasswordName"]
    """Specifies name of the password which should be regenerated if any -- password1 or password2.
     Known values are: \"password1\" and \"password2\"."""


class GenerateCredentialsResult(TypedDict, total=False):
    """The response from the GenerateCredentials operation.

    :ivar username: The username for a container registry.
    :vartype username: str
    :ivar passwords: The list of passwords for a container registry.
    :vartype passwords: list["TokenPassword"]
    """

    username: str
    """The username for a container registry."""
    passwords: list["TokenPassword"]
    """The list of passwords for a container registry."""


class IdentityProperties(TypedDict, total=False):
    """Managed identity for the resource.

    :ivar principal_id: The principal ID of resource identity.
    :vartype principal_id: str
    :ivar tenant_id: The tenant ID of resource.
    :vartype tenant_id: str
    :ivar type: The identity type. Known values are: "SystemAssigned", "UserAssigned",
     "SystemAssigned, UserAssigned", and "None".
    :vartype type: Union[str, "ResourceIdentityType"]
    :ivar user_assigned_identities: The list of user identities associated with the resource. The
     user identity dictionary key references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
     providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
    :vartype user_assigned_identities: dict[str, "UserIdentityProperties"]
    """

    principalId: str
    """The principal ID of resource identity."""
    tenantId: str
    """The tenant ID of resource."""
    type: Union[str, "ResourceIdentityType"]
    """The identity type. Known values are: \"SystemAssigned\", \"UserAssigned\", \"SystemAssigned,
     UserAssigned\", and \"None\"."""
    userAssignedIdentities: dict[str, "UserIdentityProperties"]
    """The list of user identities associated with the resource. The user identity dictionary key
     references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
     providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'."""


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

    :ivar source: The source of the image. Required.
    :vartype source: "ImportSource"
    :ivar target_tags: List of strings of the form repo[:tag]. When tag is omitted the source will
     be used (or 'latest' if source tag is also omitted).
    :vartype target_tags: list[str]
    :ivar untagged_target_repositories: List of strings of repository names to do a manifest only
     copy. No tag will be created.
    :vartype untagged_target_repositories: list[str]
    :ivar mode: When Force, any existing target tags will be overwritten. When NoForce, any
     existing target tags will fail the operation before any copying begins. Known values are:
     "NoForce" and "Force".
    :vartype mode: Union[str, "ImportMode"]
    """

    source: Required["ImportSource"]
    """The source of the image. Required."""
    targetTags: list[str]
    """List of strings of the form repo[:tag]. When tag is omitted the source will be used (or
     'latest' if source tag is also omitted)."""
    untaggedTargetRepositories: list[str]
    """List of strings of repository names to do a manifest only copy. No tag will be created."""
    mode: Union[str, "ImportMode"]
    """When Force, any existing target tags will be overwritten. When NoForce, any existing target
     tags will fail the operation before any copying begins. Known values are: \"NoForce\" and
     \"Force\"."""


class ImportPipeline(ProxyResource):
    """An object that represents an import pipeline for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the import pipeline.
    :vartype properties: "ImportPipelineProperties"
    :ivar location: The location of the import pipeline.
    :vartype location: str
    :ivar identity: The identity of the import pipeline.
    :vartype identity: "IdentityProperties"
    """

    properties: "ImportPipelineProperties"
    """The properties of the import pipeline."""
    location: str
    """The location of the import pipeline."""
    identity: "IdentityProperties"
    """The identity of the import pipeline."""


class ImportPipelineProperties(TypedDict, total=False):
    """The properties of an import pipeline.

    :ivar source: The source properties of the import pipeline. Required.
    :vartype source: "ImportPipelineSourceProperties"
    :ivar trigger: The properties that describe the trigger of the import pipeline.
    :vartype trigger: "PipelineTriggerProperties"
    :ivar options: The list of all options configured for the pipeline.
    :vartype options: list[Union[str, "PipelineOptions"]]
    :ivar provisioning_state: The provisioning state of the pipeline at the time the operation was
     called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    source: Required["ImportPipelineSourceProperties"]
    """The source properties of the import pipeline. Required."""
    trigger: "PipelineTriggerProperties"
    """The properties that describe the trigger of the import pipeline."""
    options: list[Union[str, "PipelineOptions"]]
    """The list of all options configured for the pipeline."""
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the pipeline at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""


class ImportPipelineSourceProperties(TypedDict, total=False):
    """The properties of the import pipeline source.

    :ivar type: The type of source for the import pipeline. "AzureStorageBlobContainer"
    :vartype type: Union[str, "PipelineSourceType"]
    :ivar uri: The source uri of the import pipeline. When 'AzureStorageBlob':
     "`https://accountName.blob.core.windows.net/containerName/blobName
     <https://accountName.blob.core.windows.net/containerName/blobName>`_" When
     'AzureStorageBlobContainer': "`https://accountName.blob.core.windows.net/containerName
     <https://accountName.blob.core.windows.net/containerName>`_".
    :vartype uri: str
    :ivar key_vault_uri: They key vault secret uri to obtain the source storage SAS token.
    :vartype key_vault_uri: str
    :ivar storage_access_mode: The storage access mode used for the customer storage account. Known
     values are: "ManagedIdentity" and "SasToken".
    :vartype storage_access_mode: Union[str, "StorageAccessMode"]
    """

    type: Union[str, "PipelineSourceType"]
    """The type of source for the import pipeline. \"AzureStorageBlobContainer\""""
    uri: str
    """The source uri of the import pipeline. When 'AzureStorageBlob':
     \"`https://accountName.blob.core.windows.net/containerName/blobName
     <https://accountName.blob.core.windows.net/containerName/blobName>`_\" When
     'AzureStorageBlobContainer': \"`https://accountName.blob.core.windows.net/containerName
     <https://accountName.blob.core.windows.net/containerName>`_\"."""
    keyVaultUri: str
    """They key vault secret uri to obtain the source storage SAS token."""
    storageAccessMode: Union[str, "StorageAccessMode"]
    """The storage access mode used for the customer storage account. Known values are:
     \"ManagedIdentity\" and \"SasToken\"."""


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

    :ivar resource_id: The resource identifier of the source Azure Container Registry.
    :vartype resource_id: str
    :ivar registry_uri: The address of the source registry (e.g. 'mcr.microsoft.com').
    :vartype registry_uri: str
    :ivar credentials: Credentials used when importing from a registry uri.
    :vartype credentials: "ImportSourceCredentials"
    :ivar source_image: Repository name of the source image. Specify an image by repository
     ('hello-world'). This will use the 'latest' tag. Specify an image by tag
     ('hello-world:latest'). Specify an image by sha256-based manifest digest
     ('hello-world@sha256:abc123'). Required.
    :vartype source_image: str
    """

    resourceId: str
    """The resource identifier of the source Azure Container Registry."""
    registryUri: str
    """The address of the source registry (e.g. 'mcr.microsoft.com')."""
    credentials: "ImportSourceCredentials"
    """Credentials used when importing from a registry uri."""
    sourceImage: Required[str]
    """Repository name of the source image. Specify an image by repository ('hello-world'). This will
     use the 'latest' tag. Specify an image by tag ('hello-world:latest'). Specify an image by
     sha256-based manifest digest ('hello-world@sha256:abc123'). Required."""


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

    :ivar username: The username to authenticate with the source registry.
    :vartype username: str
    :ivar password: The password used to authenticate with the source registry. Required.
    :vartype password: str
    """

    username: str
    """The username to authenticate with the source registry."""
    password: Required[str]
    """The password used to authenticate with the source registry. Required."""


class IPRule(TypedDict, total=False):
    """IP rule with specific IP or IP range in CIDR format.

    :ivar action: The action of IP ACL rule. "Allow"
    :vartype action: Union[str, "Action"]
    :ivar ip_address_or_range: Specifies the IP or IP range in CIDR format. Only IPV4 address is
     allowed. Required.
    :vartype ip_address_or_range: str
    """

    action: Union[str, "Action"]
    """The action of IP ACL rule. \"Allow\""""
    value: Required[str]
    """Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed. Required."""


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

    :ivar key_identifier: Key vault uri to access the encryption key.
    :vartype key_identifier: str
    :ivar versioned_key_identifier: The fully qualified key identifier that includes the version of
     the key that is actually used for encryption.
    :vartype versioned_key_identifier: str
    :ivar identity: The client id of the identity which will be used to access key vault.
    :vartype identity: str
    :ivar key_rotation_enabled: Auto key rotation status for a CMK enabled registry.
    :vartype key_rotation_enabled: bool
    :ivar last_key_rotation_timestamp: Timestamp of the last successful key rotation.
    :vartype last_key_rotation_timestamp: str
    """

    keyIdentifier: str
    """Key vault uri to access the encryption key."""
    versionedKeyIdentifier: str
    """The fully qualified key identifier that includes the version of the key that is actually used
     for encryption."""
    identity: str
    """The client id of the identity which will be used to access key vault."""
    keyRotationEnabled: bool
    """Auto key rotation status for a CMK enabled registry."""
    lastKeyRotationTimestamp: str
    """Timestamp of the last successful key rotation."""


class LoggingProperties(TypedDict, total=False):
    """The logging properties of the connected registry.

    :ivar log_level: The verbosity of logs persisted on the connected registry. Known values are:
     "Debug", "Information", "Warning", "Error", and "None".
    :vartype log_level: Union[str, "LogLevel"]
    :ivar audit_log_status: Indicates whether audit logs are enabled on the connected registry.
     Known values are: "Enabled" and "Disabled".
    :vartype audit_log_status: Union[str, "AuditLogStatus"]
    """

    logLevel: Union[str, "LogLevel"]
    """The verbosity of logs persisted on the connected registry. Known values are: \"Debug\",
     \"Information\", \"Warning\", \"Error\", and \"None\"."""
    auditLogStatus: Union[str, "AuditLogStatus"]
    """Indicates whether audit logs are enabled on the connected registry. Known values are:
     \"Enabled\" and \"Disabled\"."""


class LoginServerProperties(TypedDict, total=False):
    """The login server properties of the connected registry.

    :ivar host: The host of the connected registry. Can be FQDN or IP.
    :vartype host: str
    :ivar tls: The TLS properties of the connected registry login server.
    :vartype tls: "TlsProperties"
    """

    host: str
    """The host of the connected registry. Can be FQDN or IP."""
    tls: "TlsProperties"
    """The TLS properties of the connected registry login server."""


class NetworkRuleSet(TypedDict, total=False):
    """The network rule set for a container registry.

    :ivar default_action: The default action of allow or deny when no other rules match. Required.
     Known values are: "Allow" and "Deny".
    :vartype default_action: Union[str, "DefaultAction"]
    :ivar virtual_network_rules: The virtual network rules.
    :vartype virtual_network_rules: list["VirtualNetworkRule"]
    :ivar ip_rules: The IP ACL rules.
    :vartype ip_rules: list["IPRule"]
    """

    defaultAction: Required[Union[str, "DefaultAction"]]
    """The default action of allow or deny when no other rules match. Required. Known values are:
     \"Allow\" and \"Deny\"."""
    virtualNetworkRules: list["VirtualNetworkRule"]
    """The virtual network rules."""
    ipRules: list["IPRule"]
    """The IP ACL rules."""


class OperationDefinition(TypedDict, total=False):
    """The definition of a container registry operation.

    :ivar origin: The origin information of the container registry operation.
    :vartype origin: str
    :ivar name: Operation name: {provider}/{resource}/{operation}.
    :vartype name: str
    :ivar display: The display information for the container registry operation.
    :vartype display: "OperationDisplayDefinition"
    :ivar properties: The properties information for the container registry operation.
    :vartype properties: "OperationPropertiesDefinition"
    :ivar is_data_action: This property indicates if the operation is an action or a data action
     ref:
     `https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#management-and-data-operations
     <https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#management-and-data-operations>`_.
    :vartype is_data_action: bool
    """

    origin: str
    """The origin information of the container registry operation."""
    name: str
    """Operation name: {provider}/{resource}/{operation}."""
    display: "OperationDisplayDefinition"
    """The display information for the container registry operation."""
    properties: "OperationPropertiesDefinition"
    """The properties information for the container registry operation."""
    isDataAction: bool
    """This property indicates if the operation is an action or a data action ref:
     `https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#management-and-data-operations
     <https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#management-and-data-operations>`_."""


class OperationDisplayDefinition(TypedDict, total=False):
    """The display information for a container registry operation.

    :ivar provider: The resource provider name: Microsoft.ContainerRegistry.
    :vartype provider: str
    :ivar resource: The resource on which the operation is performed.
    :vartype resource: str
    :ivar operation: The operation that users can perform.
    :vartype operation: str
    :ivar description: The description for the operation.
    :vartype description: str
    """

    provider: str
    """The resource provider name: Microsoft.ContainerRegistry."""
    resource: str
    """The resource on which the operation is performed."""
    operation: str
    """The operation that users can perform."""
    description: str
    """The description for the operation."""


class OperationLogSpecificationDefinition(TypedDict, total=False):
    """The definition of Azure Monitoring log.

    :ivar name: Log name.
    :vartype name: str
    :ivar display_name: Log display name.
    :vartype display_name: str
    :ivar blob_duration: Log blob duration.
    :vartype blob_duration: str
    """

    name: str
    """Log name."""
    displayName: str
    """Log display name."""
    blobDuration: str
    """Log blob duration."""


class OperationMetricSpecificationDefinition(TypedDict, total=False):
    """The definition of Azure Monitoring metric.

    :ivar name: Metric name.
    :vartype name: str
    :ivar display_name: Metric display name.
    :vartype display_name: str
    :ivar display_description: Metric description.
    :vartype display_description: str
    :ivar unit: Metric unit.
    :vartype unit: str
    :ivar aggregation_type: Metric aggregation type.
    :vartype aggregation_type: str
    :ivar internal_metric_name: Internal metric name.
    :vartype internal_metric_name: str
    """

    name: str
    """Metric name."""
    displayName: str
    """Metric display name."""
    displayDescription: str
    """Metric description."""
    unit: str
    """Metric unit."""
    aggregationType: str
    """Metric aggregation type."""
    internalMetricName: str
    """Internal metric name."""


class OperationPropertiesDefinition(TypedDict, total=False):
    """The definition of Azure Monitoring properties.

    :ivar service_specification: The definition of Azure Monitoring service.
    :vartype service_specification: "OperationServiceSpecificationDefinition"
    """

    serviceSpecification: "OperationServiceSpecificationDefinition"
    """The definition of Azure Monitoring service."""


class OperationServiceSpecificationDefinition(TypedDict, total=False):
    """The definition of Azure Monitoring list.

    :ivar metric_specifications: A list of Azure Monitoring metrics definition.
    :vartype metric_specifications: list["OperationMetricSpecificationDefinition"]
    :ivar log_specifications: A list of Azure Monitoring log definitions.
    :vartype log_specifications: list["OperationLogSpecificationDefinition"]
    """

    metricSpecifications: list["OperationMetricSpecificationDefinition"]
    """A list of Azure Monitoring metrics definition."""
    logSpecifications: list["OperationLogSpecificationDefinition"]
    """A list of Azure Monitoring log definitions."""


class ParentProperties(TypedDict, total=False):
    """The properties of the connected registry parent.

    :ivar id: The resource ID of the parent to which the connected registry will be associated.
    :vartype id: str
    :ivar sync_properties: The sync properties of the connected registry with its parent. Required.
    :vartype sync_properties: "SyncProperties"
    """

    id: str
    """The resource ID of the parent to which the connected registry will be associated."""
    syncProperties: Required["SyncProperties"]
    """The sync properties of the connected registry with its parent. Required."""


class PipelineRun(ProxyResource):
    """An object that represents a pipeline run for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of a pipeline run.
    :vartype properties: "PipelineRunProperties"
    """

    properties: "PipelineRunProperties"
    """The properties of a pipeline run."""


class PipelineRunProperties(TypedDict, total=False):
    """The properties of a pipeline run.

    :ivar provisioning_state: The provisioning state of a pipeline run. Known values are:
     "Creating", "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar request: The request parameters for a pipeline run.
    :vartype request: "PipelineRunRequest"
    :ivar response: The response of a pipeline run.
    :vartype response: "PipelineRunResponse"
    :ivar force_update_tag: How the pipeline run should be forced to recreate even if the pipeline
     run configuration has not changed.
    :vartype force_update_tag: str
    """

    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of a pipeline run. Known values are: \"Creating\", \"Updating\",
     \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""
    request: "PipelineRunRequest"
    """The request parameters for a pipeline run."""
    response: "PipelineRunResponse"
    """The response of a pipeline run."""
    forceUpdateTag: str
    """How the pipeline run should be forced to recreate even if the pipeline run configuration has
     not changed."""


class PipelineRunRequest(TypedDict, total=False):
    """The request properties provided for a pipeline run.

    :ivar pipeline_resource_id: The resource ID of the pipeline to run.
    :vartype pipeline_resource_id: str
    :ivar artifacts: List of source artifacts to be transferred by the pipeline. Specify an image
     by repository ('hello-world'). This will use the 'latest' tag. Specify an image by tag
     ('hello-world:latest'). Specify an image by sha256-based manifest digest
     ('hello-world@sha256:abc123').
    :vartype artifacts: list[str]
    :ivar source: The source properties of the pipeline run.
    :vartype source: "PipelineRunSourceProperties"
    :ivar target: The target properties of the pipeline run.
    :vartype target: "PipelineRunTargetProperties"
    :ivar catalog_digest: The digest of the tar used to transfer the artifacts.
    :vartype catalog_digest: str
    """

    pipelineResourceId: str
    """The resource ID of the pipeline to run."""
    artifacts: list[str]
    """List of source artifacts to be transferred by the pipeline. Specify an image by repository
     ('hello-world'). This will use the 'latest' tag. Specify an image by tag
     ('hello-world:latest'). Specify an image by sha256-based manifest digest
     ('hello-world@sha256:abc123')."""
    source: "PipelineRunSourceProperties"
    """The source properties of the pipeline run."""
    target: "PipelineRunTargetProperties"
    """The target properties of the pipeline run."""
    catalogDigest: str
    """The digest of the tar used to transfer the artifacts."""


class PipelineRunResponse(TypedDict, total=False):
    """The response properties returned for a pipeline run.

    :ivar status: The current status of the pipeline run.
    :vartype status: str
    :ivar imported_artifacts: The artifacts imported in the pipeline run.
    :vartype imported_artifacts: list[str]
    :ivar progress: The current progress of the copy operation.
    :vartype progress: "ProgressProperties"
    :ivar start_time: The time the pipeline run started.
    :vartype start_time: str
    :ivar finish_time: The time the pipeline run finished.
    :vartype finish_time: str
    :ivar source: The source of the pipeline run.
    :vartype source: "ImportPipelineSourceProperties"
    :ivar target: The target of the pipeline run.
    :vartype target: "ExportPipelineTargetProperties"
    :ivar catalog_digest: The digest of the tar used to transfer the artifacts.
    :vartype catalog_digest: str
    :ivar trigger: The trigger that caused the pipeline run.
    :vartype trigger: "PipelineTriggerDescriptor"
    :ivar pipeline_run_error_message: The detailed error message for the pipeline run in the case
     of failure.
    :vartype pipeline_run_error_message: str
    """

    status: str
    """The current status of the pipeline run."""
    importedArtifacts: list[str]
    """The artifacts imported in the pipeline run."""
    progress: "ProgressProperties"
    """The current progress of the copy operation."""
    startTime: str
    """The time the pipeline run started."""
    finishTime: str
    """The time the pipeline run finished."""
    source: "ImportPipelineSourceProperties"
    """The source of the pipeline run."""
    target: "ExportPipelineTargetProperties"
    """The target of the pipeline run."""
    catalogDigest: str
    """The digest of the tar used to transfer the artifacts."""
    trigger: "PipelineTriggerDescriptor"
    """The trigger that caused the pipeline run."""
    pipelineRunErrorMessage: str
    """The detailed error message for the pipeline run in the case of failure."""


class PipelineRunSourceProperties(TypedDict, total=False):
    """The pipeline run source properties.

    :ivar type: The type of the source. "AzureStorageBlob"
    :vartype type: Union[str, "PipelineRunSourceType"]
    :ivar name: The name of the source.
    :vartype name: str
    """

    type: Union[str, "PipelineRunSourceType"]
    """The type of the source. \"AzureStorageBlob\""""
    name: str
    """The name of the source."""


class PipelineRunTargetProperties(TypedDict, total=False):
    """The pipeline run target properties.

    :ivar type: The type of the target. "AzureStorageBlob"
    :vartype type: Union[str, "PipelineRunTargetType"]
    :ivar name: The name of the target.
    :vartype name: str
    """

    type: Union[str, "PipelineRunTargetType"]
    """The type of the target. \"AzureStorageBlob\""""
    name: str
    """The name of the target."""


class PipelineSourceTriggerDescriptor(TypedDict, total=False):
    """The pipeline source trigger descriptor.

    :ivar timestamp: The timestamp when the source update happened.
    :vartype timestamp: str
    """

    timestamp: str
    """The timestamp when the source update happened."""


class PipelineSourceTriggerProperties(TypedDict, total=False):
    """The source trigger properties of the import pipeline.

    :ivar status: The current status of the source trigger. Required. Known values are: "Enabled"
     and "Disabled".
    :vartype status: Union[str, "TriggerStatus"]
    """

    status: Required[Union[str, "TriggerStatus"]]
    """The current status of the source trigger. Required. Known values are: \"Enabled\" and
     \"Disabled\"."""


class PipelineTriggerDescriptor(TypedDict, total=False):
    """The pipeline trigger descriptor.

    :ivar source_trigger: The source trigger that caused the pipeline run.
    :vartype source_trigger: "PipelineSourceTriggerDescriptor"
    """

    sourceTrigger: "PipelineSourceTriggerDescriptor"
    """The source trigger that caused the pipeline run."""


class PipelineTriggerProperties(TypedDict, total=False):
    """The trigger properties of the import pipeline.

    :ivar source_trigger: The source trigger properties of the pipeline.
    :vartype source_trigger: "PipelineSourceTriggerProperties"
    """

    sourceTrigger: "PipelineSourceTriggerProperties"
    """The source trigger properties of the pipeline."""


class Policies(TypedDict, total=False):
    """The policies for a container registry.

    :ivar quarantine_policy: The quarantine policy for a container registry.
    :vartype quarantine_policy: "QuarantinePolicy"
    :ivar trust_policy: The content trust policy for a container registry.
    :vartype trust_policy: "TrustPolicy"
    :ivar retention_policy: The retention policy for a container registry.
    :vartype retention_policy: "RetentionPolicy"
    :ivar export_policy: The export policy for a container registry.
    :vartype export_policy: "ExportPolicy"
    :ivar azure_ad_authentication_as_arm_policy: The policy for using Azure Resource Manager
     audience token for a container registry.
    :vartype azure_ad_authentication_as_arm_policy: "AzureADAuthenticationAsArmPolicy"
    :ivar soft_delete_policy: The soft delete policy for a container registry.
    :vartype soft_delete_policy: "SoftDeletePolicy"
    """

    quarantinePolicy: "QuarantinePolicy"
    """The quarantine policy for a container registry."""
    trustPolicy: "TrustPolicy"
    """The content trust policy for a container registry."""
    retentionPolicy: "RetentionPolicy"
    """The retention policy for a container registry."""
    exportPolicy: "ExportPolicy"
    """The export policy for a container registry."""
    azureADAuthenticationAsArmPolicy: "AzureADAuthenticationAsArmPolicy"
    """The policy for using Azure Resource Manager audience token for a container registry."""
    softDeletePolicy: "SoftDeletePolicy"
    """The soft delete policy for a container registry."""


class PrivateEndpoint(TypedDict, total=False):
    """The Private Endpoint resource.

    :ivar id: This is private endpoint resource created with Microsoft.Network resource provider.
    :vartype id: str
    """

    id: str
    """This is private endpoint resource created with Microsoft.Network resource provider."""


class PrivateEndpointConnection(ProxyResource):
    """An object that represents a private endpoint connection for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of a private endpoint connection.
    :vartype properties: "PrivateEndpointConnectionProperties"
    """

    properties: "PrivateEndpointConnectionProperties"
    """The properties of a private endpoint connection."""


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

    :ivar private_endpoint: The resource of private endpoint.
    :vartype private_endpoint: "PrivateEndpoint"
    :ivar private_link_service_connection_state: A collection of information about the state of the
     connection between service consumer and provider.
    :vartype private_link_service_connection_state: "PrivateLinkServiceConnectionState"
    :ivar provisioning_state: The provisioning state of private endpoint connection resource. Known
     values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    privateEndpoint: "PrivateEndpoint"
    """The resource of private endpoint."""
    privateLinkServiceConnectionState: "PrivateLinkServiceConnectionState"
    """A collection of information about the state of the connection between service consumer and
     provider."""
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of private endpoint connection resource. Known values are: \"Creating\",
     \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""


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

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the private link 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: A resource that supports private link capabilities.
    :vartype properties: "PrivateLinkResourceProperties"
    """

    properties: "PrivateLinkResourceProperties"
    """A resource that supports private link capabilities."""


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

    :ivar group_id: The private link resource group id.
    :vartype group_id: str
    :ivar required_members: The private link resource required member names.
    :vartype required_members: list[str]
    :ivar required_zone_names: The private link resource 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 PrivateLinkServiceConnectionState(TypedDict, total=False):
    """The state of a private link service connection.

    :ivar status: The private link service connection status. Known values are: "Approved",
     "Pending", "Rejected", and "Disconnected".
    :vartype status: Union[str, "ConnectionStatus"]
    :ivar description: The description for connection status. For example if connection is rejected
     it can indicate reason for rejection.
    :vartype description: str
    :ivar actions_required: A message indicating if changes on the service provider require any
     updates on the consumer. Known values are: "None" and "Recreate".
    :vartype actions_required: Union[str, "ActionsRequired"]
    """

    status: Union[str, "ConnectionStatus"]
    """The private link service connection status. Known values are: \"Approved\", \"Pending\",
     \"Rejected\", and \"Disconnected\"."""
    description: str
    """The description for connection status. For example if connection is rejected it can indicate
     reason for rejection."""
    actionsRequired: Union[str, "ActionsRequired"]
    """A message indicating if changes on the service provider require any updates on the consumer.
     Known values are: \"None\" and \"Recreate\"."""


class ProgressProperties(TypedDict, total=False):
    """The progress properties.

    :ivar percentage: The percentage complete of the copy operation.
    :vartype percentage: str
    """

    percentage: str
    """The percentage complete of the copy operation."""


class QuarantinePolicy(TypedDict, total=False):
    """The quarantine policy for a container registry.

    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "PolicyStatus"]
    """

    status: Union[str, "PolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


class RegenerateCredentialParameters(TypedDict, total=False):
    """The parameters used to regenerate the login credential.

    :ivar name: Specifies name of the password which should be regenerated -- password or
     password2. Required. Known values are: "password" and "password2".
    :vartype name: Union[str, "PasswordName"]
    """

    name: Required[Union[str, "PasswordName"]]
    """Specifies name of the password which should be regenerated -- password or password2. Required.
     Known values are: \"password\" and \"password2\"."""


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 private link 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 Registry(TrackedResource):
    """An object that represents a container registry.

    :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 private link 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: The properties of the container registry.
    :vartype properties: "RegistryProperties"
    :ivar sku: The SKU of the container registry. Required.
    :vartype sku: "Sku"
    :ivar identity: The identity of the container registry.
    :vartype identity: "IdentityProperties"
    """

    properties: "RegistryProperties"
    """The properties of the container registry."""
    sku: Required["Sku"]
    """The SKU of the container registry. Required."""
    identity: "IdentityProperties"
    """The identity of the container registry."""


class RegistryListCredentialsResult(TypedDict, total=False):
    """The response from the ListCredentials operation.

    :ivar username: The username for a container registry.
    :vartype username: str
    :ivar passwords: The list of passwords for a container registry.
    :vartype passwords: list["RegistryPassword"]
    """

    username: str
    """The username for a container registry."""
    passwords: list["RegistryPassword"]
    """The list of passwords for a container registry."""


class RegistryNameCheckRequest(TypedDict, total=False):
    """A request to check whether a container registry name is available.

    :ivar name: The name of the container registry. Required.
    :vartype name: str
    :ivar type: The resource type of the container registry. This field must be set to
     'Microsoft.ContainerRegistry/registries'. Required. "Microsoft.ContainerRegistry/registries"
    :vartype type: Union[str, "ContainerRegistryResourceType"]
    :ivar resource_group_name: The resource group name of the container registry.
    :vartype resource_group_name: str
    :ivar auto_generated_domain_name_label_scope: The auto generated domain name label of the
     container registry. This value defaults to "Unsecure". Known values are: "Unsecure",
     "TenantReuse", "SubscriptionReuse", "ResourceGroupReuse", and "NoReuse".
    :vartype auto_generated_domain_name_label_scope: Union[str,
     "AutoGeneratedDomainNameLabelScope"]
    """

    name: Required[str]
    """The name of the container registry. Required."""
    type: Required[Union[str, "ContainerRegistryResourceType"]]
    """The resource type of the container registry. This field must be set to
     'Microsoft.ContainerRegistry/registries'. Required. \"Microsoft.ContainerRegistry/registries\""""
    resourceGroupName: str
    """The resource group name of the container registry."""
    autoGeneratedDomainNameLabelScope: Union[str, "AutoGeneratedDomainNameLabelScope"]
    """The auto generated domain name label of the container registry. This value defaults to
     \"Unsecure\". Known values are: \"Unsecure\", \"TenantReuse\", \"SubscriptionReuse\",
     \"ResourceGroupReuse\", and \"NoReuse\"."""


class RegistryNameStatus(TypedDict, total=False):
    """The result of a request to check the availability of a container registry name.

    :ivar available_login_server_name: The complete login server name with domain name label (DNL)
     hash, if available.
    :vartype available_login_server_name: str
    :ivar name_available: The value that indicates whether the name is available.
    :vartype name_available: bool
    :ivar reason: If any, the reason that the name is not available.
    :vartype reason: str
    :ivar message: If any, the error message that provides more detail for the reason that the name
     is not available.
    :vartype message: str
    """

    availableLoginServerName: str
    """The complete login server name with domain name label (DNL) hash, if available."""
    nameAvailable: bool
    """The value that indicates whether the name is available."""
    reason: str
    """If any, the reason that the name is not available."""
    message: str
    """If any, the error message that provides more detail for the reason that the name is not
     available."""


class RegistryPassword(TypedDict, total=False):
    """The login password for the container registry.

    :ivar name: The password name. Known values are: "password" and "password2".
    :vartype name: Union[str, "PasswordName"]
    :ivar value: The password value.
    :vartype value: str
    """

    name: Union[str, "PasswordName"]
    """The password name. Known values are: \"password\" and \"password2\"."""
    value: str
    """The password value."""


class RegistryProperties(TypedDict, total=False):
    """The properties of a container registry.

    :ivar login_server: The URL that can be used to log into the container registry.
    :vartype login_server: str
    :ivar creation_date: The creation date of the container registry in ISO8601 format.
    :vartype creation_date: str
    :ivar provisioning_state: The provisioning state of the container registry at the time the
     operation was called. Known values are: "Creating", "Updating", "Deleting", "Succeeded",
     "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar status: The status of the container registry at the time the operation was called.
    :vartype status: "Status"
    :ivar admin_user_enabled: The value that indicates whether the admin user is enabled.
    :vartype admin_user_enabled: bool
    :ivar network_rule_set: The network rule set for a container registry.
    :vartype network_rule_set: "NetworkRuleSet"
    :ivar policies: The policies for a container registry.
    :vartype policies: "Policies"
    :ivar encryption: The encryption settings of container registry.
    :vartype encryption: "EncryptionProperty"
    :ivar data_endpoint_enabled: Enable a single data endpoint per region for serving data.
    :vartype data_endpoint_enabled: bool
    :ivar data_endpoint_host_names: List of host names that will serve data when
     dataEndpointEnabled is true.
    :vartype data_endpoint_host_names: list[str]
    :ivar regional_endpoints: Enable per-region endpoints for accessing registry. Known values are:
     "Enabled" and "Disabled".
    :vartype regional_endpoints: Union[str, "RegionalEndpoints"]
    :ivar regional_endpoint_host_names: List of host names that will serve registry when
     RegionalEndpoints is enabled.
    :vartype regional_endpoint_host_names: list[str]
    :ivar endpoint_protocol: The connectivity protocol for the registry, such as IPv4 or dual stack
     (IPv4 and IPv6). Known values are: "IPv4" and "IPv4AndIPv6".
    :vartype endpoint_protocol: Union[str, "EndpointProtocol"]
    :ivar private_endpoint_connections: List of private endpoint connections for a container
     registry.
    :vartype private_endpoint_connections: list["PrivateEndpointConnection"]
    :ivar public_network_access: Whether or not public network access is allowed for the container
     registry. Known values are: "Enabled" and "Disabled".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar network_rule_bypass_options: Whether to allow trusted Azure services to access a network
     restricted registry. Known values are: "AzureServices" and "None".
    :vartype network_rule_bypass_options: Union[str, "NetworkRuleBypassOptions"]
    :ivar network_rule_bypass_allowed_for_tasks: Whether or not Tasks allowed to bypass the network
     rules for this container registry.
    :vartype network_rule_bypass_allowed_for_tasks: bool
    :ivar zone_redundancy: Whether or not zone redundancy is enabled for this container registry.
     Known values are: "Enabled" and "Disabled".
    :vartype zone_redundancy: Union[str, "ZoneRedundancy"]
    :ivar anonymous_pull_enabled: Enables registry-wide pull from unauthenticated clients.
    :vartype anonymous_pull_enabled: bool
    :ivar metadata_search: Determines whether registry artifacts are indexed for metadata search.
     Known values are: "Enabled" and "Disabled".
    :vartype metadata_search: Union[str, "MetadataSearch"]
    :ivar auto_generated_domain_name_label_scope: Determines the domain name label reuse scope.
     Known values are: "Unsecure", "TenantReuse", "SubscriptionReuse", "ResourceGroupReuse", and
     "NoReuse".
    :vartype auto_generated_domain_name_label_scope: Union[str,
     "AutoGeneratedDomainNameLabelScope"]
    :ivar writable_cache_repos: Whether to allow cache operations that write to repositories in
     this registry. Known values are: "Enabled" and "Disabled".
    :vartype writable_cache_repos: Union[str, "WritableCacheRepos"]
    :ivar role_assignment_mode: Determines registry role assignment mode. Known values are:
     "AbacRepositoryPermissions" and "LegacyRegistryPermissions".
    :vartype role_assignment_mode: Union[str, "RoleAssignmentMode"]
    """

    loginServer: str
    """The URL that can be used to log into the container registry."""
    creationDate: str
    """The creation date of the container registry in ISO8601 format."""
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the container registry at the time the operation was called. Known
     values are: \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and
     \"Canceled\"."""
    status: "Status"
    """The status of the container registry at the time the operation was called."""
    adminUserEnabled: bool
    """The value that indicates whether the admin user is enabled."""
    networkRuleSet: "NetworkRuleSet"
    """The network rule set for a container registry."""
    policies: "Policies"
    """The policies for a container registry."""
    encryption: "EncryptionProperty"
    """The encryption settings of container registry."""
    dataEndpointEnabled: bool
    """Enable a single data endpoint per region for serving data."""
    dataEndpointHostNames: list[str]
    """List of host names that will serve data when dataEndpointEnabled is true."""
    regionalEndpoints: Union[str, "RegionalEndpoints"]
    """Enable per-region endpoints for accessing registry. Known values are: \"Enabled\" and
     \"Disabled\"."""
    regionalEndpointHostNames: list[str]
    """List of host names that will serve registry when RegionalEndpoints is enabled."""
    endpointProtocol: Union[str, "EndpointProtocol"]
    """The connectivity protocol for the registry, such as IPv4 or dual stack (IPv4 and IPv6). Known
     values are: \"IPv4\" and \"IPv4AndIPv6\"."""
    privateEndpointConnections: list["PrivateEndpointConnection"]
    """List of private endpoint connections for a container registry."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """Whether or not public network access is allowed for the container registry. Known values are:
     \"Enabled\" and \"Disabled\"."""
    networkRuleBypassOptions: Union[str, "NetworkRuleBypassOptions"]
    """Whether to allow trusted Azure services to access a network restricted registry. Known values
     are: \"AzureServices\" and \"None\"."""
    networkRuleBypassAllowedForTasks: bool
    """Whether or not Tasks allowed to bypass the network rules for this container registry."""
    zoneRedundancy: Union[str, "ZoneRedundancy"]
    """Whether or not zone redundancy is enabled for this container registry. Known values are:
     \"Enabled\" and \"Disabled\"."""
    anonymousPullEnabled: bool
    """Enables registry-wide pull from unauthenticated clients."""
    metadataSearch: Union[str, "MetadataSearch"]
    """Determines whether registry artifacts are indexed for metadata search. Known values are:
     \"Enabled\" and \"Disabled\"."""
    autoGeneratedDomainNameLabelScope: Union[str, "AutoGeneratedDomainNameLabelScope"]
    """Determines the domain name label reuse scope. Known values are: \"Unsecure\", \"TenantReuse\",
     \"SubscriptionReuse\", \"ResourceGroupReuse\", and \"NoReuse\"."""
    writableCacheRepos: Union[str, "WritableCacheRepos"]
    """Whether to allow cache operations that write to repositories in this registry. Known values
     are: \"Enabled\" and \"Disabled\"."""
    roleAssignmentMode: Union[str, "RoleAssignmentMode"]
    """Determines registry role assignment mode. Known values are: \"AbacRepositoryPermissions\" and
     \"LegacyRegistryPermissions\"."""


class RegistryPropertiesUpdateParameters(TypedDict, total=False):
    """The parameters for updating the properties of a container registry.

    :ivar admin_user_enabled: The value that indicates whether the admin user is enabled.
    :vartype admin_user_enabled: bool
    :ivar network_rule_set: The network rule set for a container registry.
    :vartype network_rule_set: "NetworkRuleSet"
    :ivar policies: The policies for a container registry.
    :vartype policies: "Policies"
    :ivar encryption: The encryption settings of container registry.
    :vartype encryption: "EncryptionProperty"
    :ivar data_endpoint_enabled: Enable a single data endpoint per region for serving data.
    :vartype data_endpoint_enabled: bool
    :ivar regional_endpoints: Enable per-region endpoints for accessing registry. Known values are:
     "Enabled" and "Disabled".
    :vartype regional_endpoints: Union[str, "RegionalEndpoints"]
    :ivar endpoint_protocol: The connectivity protocol for the registry, such as IPv4 or dual stack
     (IPv4 and IPv6). Known values are: "IPv4" and "IPv4AndIPv6".
    :vartype endpoint_protocol: Union[str, "EndpointProtocol"]
    :ivar public_network_access: Whether or not public network access is allowed for the container
     registry. Known values are: "Enabled" and "Disabled".
    :vartype public_network_access: Union[str, "PublicNetworkAccess"]
    :ivar network_rule_bypass_options: Whether to allow trusted Azure services to access a network
     restricted registry. Known values are: "AzureServices" and "None".
    :vartype network_rule_bypass_options: Union[str, "NetworkRuleBypassOptions"]
    :ivar network_rule_bypass_allowed_for_tasks: Whether to allow ACR Tasks service to access a
     network restricted registry.
    :vartype network_rule_bypass_allowed_for_tasks: bool
    :ivar anonymous_pull_enabled: Enables registry-wide pull from unauthenticated clients.
    :vartype anonymous_pull_enabled: bool
    :ivar metadata_search: Determines whether registry artifacts are indexed for metadata search.
     Known values are: "Enabled" and "Disabled".
    :vartype metadata_search: Union[str, "MetadataSearch"]
    :ivar writable_cache_repos: Whether to allow cache operations that write to repositories in
     this registry. Known values are: "Enabled" and "Disabled".
    :vartype writable_cache_repos: Union[str, "WritableCacheRepos"]
    :ivar role_assignment_mode: Determines registry role assignment mode. Known values are:
     "AbacRepositoryPermissions" and "LegacyRegistryPermissions".
    :vartype role_assignment_mode: Union[str, "RoleAssignmentMode"]
    """

    adminUserEnabled: bool
    """The value that indicates whether the admin user is enabled."""
    networkRuleSet: "NetworkRuleSet"
    """The network rule set for a container registry."""
    policies: "Policies"
    """The policies for a container registry."""
    encryption: "EncryptionProperty"
    """The encryption settings of container registry."""
    dataEndpointEnabled: bool
    """Enable a single data endpoint per region for serving data."""
    regionalEndpoints: Union[str, "RegionalEndpoints"]
    """Enable per-region endpoints for accessing registry. Known values are: \"Enabled\" and
     \"Disabled\"."""
    endpointProtocol: Union[str, "EndpointProtocol"]
    """The connectivity protocol for the registry, such as IPv4 or dual stack (IPv4 and IPv6). Known
     values are: \"IPv4\" and \"IPv4AndIPv6\"."""
    publicNetworkAccess: Union[str, "PublicNetworkAccess"]
    """Whether or not public network access is allowed for the container registry. Known values are:
     \"Enabled\" and \"Disabled\"."""
    networkRuleBypassOptions: Union[str, "NetworkRuleBypassOptions"]
    """Whether to allow trusted Azure services to access a network restricted registry. Known values
     are: \"AzureServices\" and \"None\"."""
    networkRuleBypassAllowedForTasks: bool
    """Whether to allow ACR Tasks service to access a network restricted registry."""
    anonymousPullEnabled: bool
    """Enables registry-wide pull from unauthenticated clients."""
    metadataSearch: Union[str, "MetadataSearch"]
    """Determines whether registry artifacts are indexed for metadata search. Known values are:
     \"Enabled\" and \"Disabled\"."""
    writableCacheRepos: Union[str, "WritableCacheRepos"]
    """Whether to allow cache operations that write to repositories in this registry. Known values
     are: \"Enabled\" and \"Disabled\"."""
    roleAssignmentMode: Union[str, "RoleAssignmentMode"]
    """Determines registry role assignment mode. Known values are: \"AbacRepositoryPermissions\" and
     \"LegacyRegistryPermissions\"."""


class RegistrySyncResult(TypedDict, total=False):
    """The registry sync result of the connected registry.

    :ivar sync_trigger: The action that triggered the most recent registry sync. Required. Known
     values are: "SyncTokenUpdate", "InitialSync", "ManualResync", and "RecoveryService".
    :vartype sync_trigger: Union[str, "SyncTrigger"]
    :ivar sync_state: The status of the connected registry's most recent sync. Required. Known
     values are: "NotActivated", "Syncing", "Failed", "Succeeded", "TimedOut", and "Pending".
    :vartype sync_state: Union[str, "SyncState"]
    :ivar last_sync_start_time: The time that the connected registry's most recent sync started.
    :vartype last_sync_start_time: str
    :ivar last_sync_end_time: The time that the connected registry's most recent sync ended.
    :vartype last_sync_end_time: str
    :ivar last_successful_sync_end_time: The time that the connected registry's most recent
     successful sync ended.
    :vartype last_successful_sync_end_time: str
    """

    syncTrigger: Required[Union[str, "SyncTrigger"]]
    """The action that triggered the most recent registry sync. Required. Known values are:
     \"SyncTokenUpdate\", \"InitialSync\", \"ManualResync\", and \"RecoveryService\"."""
    syncState: Required[Union[str, "SyncState"]]
    """The status of the connected registry's most recent sync. Required. Known values are:
     \"NotActivated\", \"Syncing\", \"Failed\", \"Succeeded\", \"TimedOut\", and \"Pending\"."""
    lastSyncStartTime: str
    """The time that the connected registry's most recent sync started."""
    lastSyncEndTime: str
    """The time that the connected registry's most recent sync ended."""
    lastSuccessfulSyncEndTime: str
    """The time that the connected registry's most recent successful sync ended."""


class RegistryUpdateParameters(TypedDict, total=False):
    """The parameters for updating a container registry.

    :ivar identity: The identity of the container registry.
    :vartype identity: "IdentityProperties"
    :ivar tags: The tags for the container registry.
    :vartype tags: dict[str, str]
    :ivar sku: The SKU of the container registry.
    :vartype sku: "Sku"
    :ivar properties: The properties that the container registry will be updated with.
    :vartype properties: "RegistryPropertiesUpdateParameters"
    """

    identity: "IdentityProperties"
    """The identity of the container registry."""
    tags: dict[str, str]
    """The tags for the container registry."""
    sku: "Sku"
    """The SKU of the container registry."""
    properties: "RegistryPropertiesUpdateParameters"
    """The properties that the container registry will be updated with."""


class RegistryUsage(TypedDict, total=False):
    """The quota usage for a container registry.

    :ivar name: The name of the usage.
    :vartype name: str
    :ivar limit: The limit of the usage.
    :vartype limit: int
    :ivar current_value: The current value of the usage.
    :vartype current_value: int
    :ivar unit: The unit of measurement. Known values are: "Count" and "Bytes".
    :vartype unit: Union[str, "RegistryUsageUnit"]
    """

    name: str
    """The name of the usage."""
    limit: int
    """The limit of the usage."""
    currentValue: int
    """The current value of the usage."""
    unit: Union[str, "RegistryUsageUnit"]
    """The unit of measurement. Known values are: \"Count\" and \"Bytes\"."""


class RegistryUsageListResult(TypedDict, total=False):
    """The result of a request to get container registry quota usages.

    :ivar value: The list of container registry quota usages.
    :vartype value: list["RegistryUsage"]
    """

    value: list["RegistryUsage"]
    """The list of container registry quota usages."""


class Replication(TrackedResource):
    """An object that represents a replication for a container registry.

    :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 private link 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: The properties of the replication.
    :vartype properties: "ReplicationProperties"
    """

    properties: "ReplicationProperties"
    """The properties of the replication."""


class ReplicationProperties(TypedDict, total=False):
    """The properties of a replication.

    :ivar provisioning_state: The provisioning state of the replication at the time the operation
     was called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar status: The status of the replication at the time the operation was called.
    :vartype status: "Status"
    :ivar region_endpoint_enabled: Specifies whether the replication's regional endpoint is
     enabled. Requests will not be routed to a replication whose regional endpoint is disabled,
     however its data will continue to be synced with other replications.
    :vartype region_endpoint_enabled: bool
    :ivar zone_redundancy: Whether or not zone redundancy is enabled for this container registry
     replication. Known values are: "Enabled" and "Disabled".
    :vartype zone_redundancy: Union[str, "ZoneRedundancy"]
    """

    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the replication at the time the operation was called. Known values
     are: \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""
    status: "Status"
    """The status of the replication at the time the operation was called."""
    regionEndpointEnabled: bool
    """Specifies whether the replication's regional endpoint is enabled. Requests will not be routed
     to a replication whose regional endpoint is disabled, however its data will continue to be
     synced with other replications."""
    zoneRedundancy: Union[str, "ZoneRedundancy"]
    """Whether or not zone redundancy is enabled for this container registry replication. Known values
     are: \"Enabled\" and \"Disabled\"."""


class ReplicationUpdateParameters(TypedDict, total=False):
    """The parameters for updating a replication.

    :ivar tags: The tags for the replication.
    :vartype tags: dict[str, str]
    :ivar properties: The parameters for updating a replication's properties.
    :vartype properties: "ReplicationUpdateParametersProperties"
    """

    tags: dict[str, str]
    """The tags for the replication."""
    properties: "ReplicationUpdateParametersProperties"
    """The parameters for updating a replication's properties."""


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

    :ivar region_endpoint_enabled: Specifies whether the replication's regional endpoint is
     enabled. Requests will not be routed to a replication whose regional endpoint is disabled,
     however its data will continue to be synced with other replications.
    :vartype region_endpoint_enabled: bool
    """

    regionEndpointEnabled: bool
    """Specifies whether the replication's regional endpoint is enabled. Requests will not be routed
     to a replication whose regional endpoint is disabled, however its data will continue to be
     synced with other replications."""


class Request(TypedDict, total=False):
    """The request that generated the event.

    :ivar id: The ID of the request that initiated the event.
    :vartype id: str
    :ivar addr: The IP or hostname and possibly port of the client connection that initiated the
     event. This is the RemoteAddr from the standard http request.
    :vartype addr: str
    :ivar host: The externally accessible hostname of the registry instance, as specified by the
     http host header on incoming requests.
    :vartype host: str
    :ivar method: The request method that generated the event.
    :vartype method: str
    :ivar useragent: The user agent header of the request.
    :vartype useragent: str
    """

    id: str
    """The ID of the request that initiated the event."""
    addr: str
    """The IP or hostname and possibly port of the client connection that initiated the event. This is
     the RemoteAddr from the standard http request."""
    host: str
    """The externally accessible hostname of the registry instance, as specified by the http host
     header on incoming requests."""
    method: str
    """The request method that generated the event."""
    useragent: str
    """The user agent header of the request."""


class RetentionPolicy(TypedDict, total=False):
    """The retention policy for a container registry.

    :ivar days: The number of days to retain an untagged manifest after which it gets purged.
    :vartype days: int
    :ivar last_updated_time: The timestamp when the policy was last updated.
    :vartype last_updated_time: str
    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "PolicyStatus"]
    """

    days: int
    """The number of days to retain an untagged manifest after which it gets purged."""
    lastUpdatedTime: str
    """The timestamp when the policy was last updated."""
    status: Union[str, "PolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


class ScopeMap(ProxyResource):
    """An object that represents a scope map for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the scope map.
    :vartype properties: "ScopeMapProperties"
    """

    properties: "ScopeMapProperties"
    """The properties of the scope map."""


class ScopeMapProperties(TypedDict, total=False):
    """The properties of a scope map.

    :ivar description: The user friendly description of the scope map.
    :vartype description: str
    :ivar type: The type of the scope map. E.g. BuildIn scope map.
    :vartype type: str
    :ivar creation_date: The creation date of scope map.
    :vartype creation_date: str
    :ivar provisioning_state: Provisioning state of the resource. Known values are: "Creating",
     "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar actions: The list of scoped permissions for registry artifacts. E.g.
     repositories/repository-name/content/read, repositories/repository-name/metadata/write.
     Required.
    :vartype actions: list[str]
    """

    description: str
    """The user friendly description of the scope map."""
    type: str
    """The type of the scope map. E.g. BuildIn scope map."""
    creationDate: str
    """The creation date of scope map."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the resource. Known values are: \"Creating\", \"Updating\", \"Deleting\",
     \"Succeeded\", \"Failed\", and \"Canceled\"."""
    actions: Required[list[str]]
    """The list of scoped permissions for registry artifacts. E.g.
     repositories/repository-name/content/read, repositories/repository-name/metadata/write.
     Required."""


class ScopeMapPropertiesUpdateParameters(TypedDict, total=False):
    """The update parameters for scope map properties.

    :ivar description: The user friendly description of the scope map.
    :vartype description: str
    :ivar actions: The list of scope permissions for registry artifacts. E.g.
     repositories/repository-name/pull, repositories/repository-name/delete.
    :vartype actions: list[str]
    """

    description: str
    """The user friendly description of the scope map."""
    actions: list[str]
    """The list of scope permissions for registry artifacts. E.g. repositories/repository-name/pull,
     repositories/repository-name/delete."""


class ScopeMapUpdateParameters(TypedDict, total=False):
    """The properties for updating the scope map.

    :ivar properties: The update parameters for scope map properties.
    :vartype properties: "ScopeMapPropertiesUpdateParameters"
    """

    properties: "ScopeMapPropertiesUpdateParameters"
    """The update parameters for scope map properties."""


class Sku(TypedDict, total=False):
    """The SKU of a container registry.

    :ivar name: The SKU name of the container registry. Required for registry creation. Required.
     Known values are: "Classic", "Basic", "Standard", and "Premium".
    :vartype name: Union[str, "SkuName"]
    :ivar tier: The SKU tier based on the SKU name. Known values are: "Classic", "Basic",
     "Standard", and "Premium".
    :vartype tier: Union[str, "SkuTier"]
    """

    name: Required[Union[str, "SkuName"]]
    """The SKU name of the container registry. Required for registry creation. Required. Known values
     are: \"Classic\", \"Basic\", \"Standard\", and \"Premium\"."""
    tier: Union[str, "SkuTier"]
    """The SKU tier based on the SKU name. Known values are: \"Classic\", \"Basic\", \"Standard\", and
     \"Premium\"."""


class SoftDeletePolicy(TypedDict, total=False):
    """The soft delete policy for a container registry.

    :ivar retention_days: The number of days after which a soft-deleted item is permanently
     deleted.
    :vartype retention_days: int
    :ivar last_updated_time: The timestamp when the policy was last updated.
    :vartype last_updated_time: str
    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "PolicyStatus"]
    """

    retentionDays: int
    """The number of days after which a soft-deleted item is permanently deleted."""
    lastUpdatedTime: str
    """The timestamp when the policy was last updated."""
    status: Union[str, "PolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


class Source(TypedDict, total=False):
    """The registry node that generated the event. Put differently, while the actor initiates the
    event, the source generates it.

    :ivar addr: The IP or hostname and the port of the registry node that generated the event.
     Generally, this will be resolved by os.Hostname() along with the running port.
    :vartype addr: str
    :ivar instance_id: The running instance of an application. Changes after each restart.
    :vartype instance_id: str
    """

    addr: str
    """The IP or hostname and the port of the registry node that generated the event. Generally, this
     will be resolved by os.Hostname() along with the running port."""
    instanceID: str
    """The running instance of an application. Changes after each restart."""


class Status(TypedDict, total=False):
    """The status of an Azure resource at the time the operation was called.

    :ivar display_status: The short label for the status.
    :vartype display_status: str
    :ivar message: The detailed message for the status, including alerts and error messages.
    :vartype message: str
    :ivar timestamp: The timestamp when the status was changed to the current value.
    :vartype timestamp: str
    """

    displayStatus: str
    """The short label for the status."""
    message: str
    """The detailed message for the status, including alerts and error messages."""
    timestamp: str
    """The timestamp when the status was changed to the current value."""


class StatusDetailProperties(TypedDict, total=False):
    """The status detail properties of the connected registry.

    :ivar type: The component of the connected registry corresponding to the status.
    :vartype type: str
    :ivar code: The HTTP status code.
    :vartype code: str
    :ivar description: The description of the status.
    :vartype description: str
    :ivar timestamp: The timestamp of the status.
    :vartype timestamp: str
    :ivar correlation_id: The correlation ID of the status.
    :vartype correlation_id: str
    """

    type: str
    """The component of the connected registry corresponding to the status."""
    code: str
    """The HTTP status code."""
    description: str
    """The description of the status."""
    timestamp: str
    """The timestamp of the status."""
    correlationId: str
    """The correlation ID of the status."""


class SyncProperties(TypedDict, total=False):
    """The sync properties of the connected registry with its parent.

    :ivar token_id: The resource ID of the ACR token used to authenticate the connected registry to
     its parent during sync. Required.
    :vartype token_id: str
    :ivar schedule: The cron expression indicating the schedule that the connected registry will
     sync with its parent.
    :vartype schedule: str
    :ivar sync_window: The time window during which sync is enabled for each schedule occurrence.
     Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
    :vartype sync_window: str
    :ivar message_ttl: The period of time for which a message is available to sync before it is
     expired. Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
     Required.
    :vartype message_ttl: str
    :ivar last_sync_time: The last time a sync occurred between the connected registry and its
     parent.
    :vartype last_sync_time: str
    :ivar gateway_endpoint: The gateway endpoint used by the connected registry to communicate with
     its parent.
    :vartype gateway_endpoint: str
    """

    tokenId: Required[str]
    """The resource ID of the ACR token used to authenticate the connected registry to its parent
     during sync. Required."""
    schedule: str
    """The cron expression indicating the schedule that the connected registry will sync with its
     parent."""
    syncWindow: str
    """The time window during which sync is enabled for each schedule occurrence. Specify the duration
     using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601."""
    messageTtl: Required[str]
    """The period of time for which a message is available to sync before it is expired. Specify the
     duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601. Required."""
    lastSyncTime: str
    """The last time a sync occurred between the connected registry and its parent."""
    gatewayEndpoint: str
    """The gateway endpoint used by the connected registry to communicate with its parent."""


class SyncUpdateProperties(TypedDict, total=False):
    """The parameters for updating the sync properties of the connected registry with its parent.

    :ivar schedule: The cron expression indicating the schedule that the connected registry will
     sync with its parent.
    :vartype schedule: str
    :ivar sync_window: The time window during which sync is enabled for each schedule occurrence.
     Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
    :vartype sync_window: str
    :ivar message_ttl: The period of time for which a message is available to sync before it is
     expired. Specify the duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601.
    :vartype message_ttl: str
    """

    schedule: str
    """The cron expression indicating the schedule that the connected registry will sync with its
     parent."""
    syncWindow: str
    """The time window during which sync is enabled for each schedule occurrence. Specify the duration
     using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601."""
    messageTtl: str
    """The period of time for which a message is available to sync before it is expired. Specify the
     duration using the format P[n]Y[n]M[n]DT[n]H[n]M[n]S as per ISO8601."""


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 Target(TypedDict, total=False):
    """The target of the event.

    :ivar media_type: The MIME type of the referenced object.
    :vartype media_type: str
    :ivar size: The number of bytes of the content. Same as Length field.
    :vartype size: int
    :ivar digest: The digest of the content, as defined by the Registry V2 HTTP API Specification.
    :vartype digest: str
    :ivar length: The number of bytes of the content. Same as Size field.
    :vartype length: int
    :ivar repository: The repository name.
    :vartype repository: str
    :ivar url: The direct URL to the content.
    :vartype url: str
    :ivar tag: The tag name.
    :vartype tag: str
    :ivar name: The name of the artifact.
    :vartype name: str
    :ivar version: The version of the artifact.
    :vartype version: str
    """

    mediaType: str
    """The MIME type of the referenced object."""
    size: int
    """The number of bytes of the content. Same as Length field."""
    digest: str
    """The digest of the content, as defined by the Registry V2 HTTP API Specification."""
    length: int
    """The number of bytes of the content. Same as Size field."""
    repository: str
    """The repository name."""
    url: str
    """The direct URL to the content."""
    tag: str
    """The tag name."""
    name: str
    """The name of the artifact."""
    version: str
    """The version of the artifact."""


class TlsCertificateProperties(TypedDict, total=False):
    """The TLS certificate properties of the connected registry login server.

    :ivar type: The type of certificate location. "LocalDirectory"
    :vartype type: Union[str, "CertificateType"]
    :ivar location: Indicates the location of the certificates.
    :vartype location: str
    """

    type: Union[str, "CertificateType"]
    """The type of certificate location. \"LocalDirectory\""""
    location: str
    """Indicates the location of the certificates."""


class TlsProperties(TypedDict, total=False):
    """The TLS properties of the connected registry login server.

    :ivar status: Indicates whether HTTPS is enabled for the login server. Known values are:
     "Enabled" and "Disabled".
    :vartype status: Union[str, "TlsStatus"]
    :ivar certificate: The certificate used to configure HTTPS for the login server.
    :vartype certificate: "TlsCertificateProperties"
    """

    status: Union[str, "TlsStatus"]
    """Indicates whether HTTPS is enabled for the login server. Known values are: \"Enabled\" and
     \"Disabled\"."""
    certificate: "TlsCertificateProperties"
    """The certificate used to configure HTTPS for the login server."""


class Token(ProxyResource):
    """An object that represents a token for a container registry.

    :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 private link resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: The properties of the token.
    :vartype properties: "TokenProperties"
    """

    properties: "TokenProperties"
    """The properties of the token."""


class TokenCertificate(TypedDict, total=False):
    """The properties of a certificate used for authenticating a token.

    :ivar name: Known values are: "certificate1" and "certificate2".
    :vartype name: Union[str, "TokenCertificateName"]
    :ivar expiry: The expiry datetime of the certificate.
    :vartype expiry: str
    :ivar thumbprint: The thumbprint of the certificate.
    :vartype thumbprint: str
    :ivar encoded_pem_certificate: Base 64 encoded string of the public certificate1 in PEM format
     that will be used for authenticating the token.
    :vartype encoded_pem_certificate: str
    """

    name: Union[str, "TokenCertificateName"]
    """Known values are: \"certificate1\" and \"certificate2\"."""
    expiry: str
    """The expiry datetime of the certificate."""
    thumbprint: str
    """The thumbprint of the certificate."""
    encodedPemCertificate: str
    """Base 64 encoded string of the public certificate1 in PEM format that will be used for
     authenticating the token."""


class TokenCredentialsProperties(TypedDict, total=False):
    """The properties of the credentials that can be used for authenticating the token.

    :ivar certificates:
    :vartype certificates: list["TokenCertificate"]
    :ivar passwords:
    :vartype passwords: list["TokenPassword"]
    """

    certificates: list["TokenCertificate"]
    passwords: list["TokenPassword"]


class TokenPassword(TypedDict, total=False):
    """The password that will be used for authenticating the token of a container registry.

    :ivar creation_time: The creation datetime of the password.
    :vartype creation_time: str
    :ivar expiry: The expiry datetime of the password.
    :vartype expiry: str
    :ivar name: The password name "password1" or "password2". Known values are: "password1" and
     "password2".
    :vartype name: Union[str, "TokenPasswordName"]
    :ivar value: The password value.
    :vartype value: str
    """

    creationTime: str
    """The creation datetime of the password."""
    expiry: str
    """The expiry datetime of the password."""
    name: Union[str, "TokenPasswordName"]
    """The password name \"password1\" or \"password2\". Known values are: \"password1\" and
     \"password2\"."""
    value: str
    """The password value."""


class TokenProperties(TypedDict, total=False):
    """The properties of a token.

    :ivar creation_date: The creation date of scope map.
    :vartype creation_date: str
    :ivar provisioning_state: Provisioning state of the resource. Known values are: "Creating",
     "Updating", "Deleting", "Succeeded", "Failed", and "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar scope_map_id: The resource ID of the scope map to which the token will be associated
     with.
    :vartype scope_map_id: str
    :ivar credentials: The credentials that can be used for authenticating the token.
    :vartype credentials: "TokenCredentialsProperties"
    :ivar status: The status of the token example enabled or disabled. Known values are: "enabled"
     and "disabled".
    :vartype status: Union[str, "TokenStatus"]
    """

    creationDate: str
    """The creation date of scope map."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the resource. Known values are: \"Creating\", \"Updating\", \"Deleting\",
     \"Succeeded\", \"Failed\", and \"Canceled\"."""
    scopeMapId: str
    """The resource ID of the scope map to which the token will be associated with."""
    credentials: "TokenCredentialsProperties"
    """The credentials that can be used for authenticating the token."""
    status: Union[str, "TokenStatus"]
    """The status of the token example enabled or disabled. Known values are: \"enabled\" and
     \"disabled\"."""


class TokenUpdateParameters(TypedDict, total=False):
    """The parameters for updating a token.

    :ivar properties: The properties of the token update parameters.
    :vartype properties: "TokenUpdateProperties"
    """

    properties: "TokenUpdateProperties"
    """The properties of the token update parameters."""


class TokenUpdateProperties(TypedDict, total=False):
    """The parameters for updating token properties.

    :ivar scope_map_id: The resource ID of the scope map to which the token will be associated
     with.
    :vartype scope_map_id: str
    :ivar status: The status of the token example enabled or disabled. Known values are: "enabled"
     and "disabled".
    :vartype status: Union[str, "TokenStatus"]
    :ivar credentials: The credentials that can be used for authenticating the token.
    :vartype credentials: "TokenCredentialsProperties"
    """

    scopeMapId: str
    """The resource ID of the scope map to which the token will be associated with."""
    status: Union[str, "TokenStatus"]
    """The status of the token example enabled or disabled. Known values are: \"enabled\" and
     \"disabled\"."""
    credentials: "TokenCredentialsProperties"
    """The credentials that can be used for authenticating the token."""


class TrustPolicy(TypedDict, total=False):
    """The content trust policy for a container registry.

    :ivar type: The type of trust policy. "Notary"
    :vartype type: Union[str, "TrustPolicyType"]
    :ivar status: The value that indicates whether the policy is enabled or not. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "PolicyStatus"]
    """

    type: Union[str, "TrustPolicyType"]
    """The type of trust policy. \"Notary\""""
    status: Union[str, "PolicyStatus"]
    """The value that indicates whether the policy is enabled or not. Known values are: \"enabled\"
     and \"disabled\"."""


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

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

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


class VirtualNetworkRule(TypedDict, total=False):
    """Virtual network rule.

    :ivar action: The action of virtual network rule. "Allow"
    :vartype action: Union[str, "Action"]
    :ivar virtual_network_subnet_resource_id: Resource ID of a subnet, for example:
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
     Required.
    :vartype virtual_network_subnet_resource_id: str
    """

    action: Union[str, "Action"]
    """The action of virtual network rule. \"Allow\""""
    virtualNetworkSubnetResourceId: Required[str]
    """Resource ID of a subnet, for example:
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
     Required."""


class Webhook(TrackedResource):
    """An object that represents a webhook for a container registry.

    :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 private link 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: The properties of the webhook.
    :vartype properties: "WebhookProperties"
    """

    properties: "WebhookProperties"
    """The properties of the webhook."""


class WebhookCreateParameters(TypedDict, total=False):
    """The parameters for creating a webhook.

    :ivar tags: The tags for the webhook.
    :vartype tags: dict[str, str]
    :ivar location: The location of the webhook. This cannot be changed after the resource is
     created. Required.
    :vartype location: str
    :ivar properties: The properties that the webhook will be created with.
    :vartype properties: "WebhookPropertiesCreateParameters"
    """

    tags: dict[str, str]
    """The tags for the webhook."""
    location: Required[str]
    """The location of the webhook. This cannot be changed after the resource is created. Required."""
    properties: "WebhookPropertiesCreateParameters"
    """The properties that the webhook will be created with."""


class WebhookProperties(TypedDict, total=False):
    """The properties of a webhook.

    :ivar status: The status of the webhook at the time the operation was called. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "WebhookStatus"]
    :ivar scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
     'foo' is equivalent to 'foo:latest'. Empty means all events.
    :vartype scope: str
    :ivar actions: The list of actions that trigger the webhook to post notifications. Required.
    :vartype actions: list[Union[str, "WebhookAction"]]
    :ivar provisioning_state: The provisioning state of the webhook at the time the operation was
     called. Known values are: "Creating", "Updating", "Deleting", "Succeeded", "Failed", and
     "Canceled".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    """

    status: Union[str, "WebhookStatus"]
    """The status of the webhook at the time the operation was called. Known values are: \"enabled\"
     and \"disabled\"."""
    scope: str
    """The scope of repositories where the event can be triggered. For example, 'foo:*' means events
     for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only. 'foo' is
     equivalent to 'foo:latest'. Empty means all events."""
    actions: Required[list[Union[str, "WebhookAction"]]]
    """The list of actions that trigger the webhook to post notifications. Required."""
    provisioningState: Union[str, "ProvisioningState"]
    """The provisioning state of the webhook at the time the operation was called. Known values are:
     \"Creating\", \"Updating\", \"Deleting\", \"Succeeded\", \"Failed\", and \"Canceled\"."""


class WebhookPropertiesCreateParameters(TypedDict, total=False):
    """The parameters for creating the properties of a webhook.

    :ivar service_uri: The service URI for the webhook to post notifications. Required.
    :vartype service_uri: str
    :ivar custom_headers: Custom headers that will be added to the webhook notifications.
    :vartype custom_headers: dict[str, str]
    :ivar status: The status of the webhook at the time the operation was called. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "WebhookStatus"]
    :ivar scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
     'foo' is equivalent to 'foo:latest'. Empty means all events.
    :vartype scope: str
    :ivar actions: The list of actions that trigger the webhook to post notifications. Required.
    :vartype actions: list[Union[str, "WebhookAction"]]
    """

    serviceUri: Required[str]
    """The service URI for the webhook to post notifications. Required."""
    customHeaders: dict[str, str]
    """Custom headers that will be added to the webhook notifications."""
    status: Union[str, "WebhookStatus"]
    """The status of the webhook at the time the operation was called. Known values are: \"enabled\"
     and \"disabled\"."""
    scope: str
    """The scope of repositories where the event can be triggered. For example, 'foo:*' means events
     for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only. 'foo' is
     equivalent to 'foo:latest'. Empty means all events."""
    actions: Required[list[Union[str, "WebhookAction"]]]
    """The list of actions that trigger the webhook to post notifications. Required."""


class WebhookPropertiesUpdateParameters(TypedDict, total=False):
    """The parameters for updating the properties of a webhook.

    :ivar service_uri: The service URI for the webhook to post notifications.
    :vartype service_uri: str
    :ivar custom_headers: Custom headers that will be added to the webhook notifications.
    :vartype custom_headers: dict[str, str]
    :ivar status: The status of the webhook at the time the operation was called. Known values are:
     "enabled" and "disabled".
    :vartype status: Union[str, "WebhookStatus"]
    :ivar scope: The scope of repositories where the event can be triggered. For example, 'foo:*'
     means events for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only.
     'foo' is equivalent to 'foo:latest'. Empty means all events.
    :vartype scope: str
    :ivar actions: The list of actions that trigger the webhook to post notifications.
    :vartype actions: list[Union[str, "WebhookAction"]]
    """

    serviceUri: str
    """The service URI for the webhook to post notifications."""
    customHeaders: dict[str, str]
    """Custom headers that will be added to the webhook notifications."""
    status: Union[str, "WebhookStatus"]
    """The status of the webhook at the time the operation was called. Known values are: \"enabled\"
     and \"disabled\"."""
    scope: str
    """The scope of repositories where the event can be triggered. For example, 'foo:*' means events
     for all tags under repository 'foo'. 'foo:bar' means events for 'foo:bar' only. 'foo' is
     equivalent to 'foo:latest'. Empty means all events."""
    actions: list[Union[str, "WebhookAction"]]
    """The list of actions that trigger the webhook to post notifications."""


class WebhookUpdateParameters(TypedDict, total=False):
    """The parameters for updating a webhook.

    :ivar tags: The tags for the webhook.
    :vartype tags: dict[str, str]
    :ivar properties: The properties that the webhook will be updated with.
    :vartype properties: "WebhookPropertiesUpdateParameters"
    """

    tags: dict[str, str]
    """The tags for the webhook."""
    properties: "WebhookPropertiesUpdateParameters"
    """The properties that the webhook will be updated with."""


AdditionalAuthenticationProperties = Union[GarAuthenticationProperties]
