# This file was auto-generated by Fern from our API Definition.

from __future__ import annotations

import typing

import pydantic
import typing_extensions
from ......core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel


class IdpUserMetadata_AuthZeroMetadata(UniversalBaseModel):
    """
    Examples
    --------
    from candid.resources.users.resources.v_2 import (
        IdpUserMetadata_AuthZeroMetadata,
    )

    IdpUserMetadata_AuthZeroMetadata(
        auth_0_id="auth0|5f9b3b5a7b0b0d006a2b0b0b",
    )
    """

    type: typing.Literal["auth_zero_metadata"] = "auth_zero_metadata"
    auth_0_id: str = pydantic.Field(alias="auth0_id")

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow


class IdpUserMetadata_GoogleAppsMetadata(UniversalBaseModel):
    """
    Examples
    --------
    from candid.resources.users.resources.v_2 import (
        IdpUserMetadata_AuthZeroMetadata,
    )

    IdpUserMetadata_AuthZeroMetadata(
        auth_0_id="auth0|5f9b3b5a7b0b0d006a2b0b0b",
    )
    """

    type: typing.Literal["google_apps_metadata"] = "google_apps_metadata"
    google_apps_id: str

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow


class IdpUserMetadata_OtherIdpMetadata(UniversalBaseModel):
    """
    Examples
    --------
    from candid.resources.users.resources.v_2 import (
        IdpUserMetadata_AuthZeroMetadata,
    )

    IdpUserMetadata_AuthZeroMetadata(
        auth_0_id="auth0|5f9b3b5a7b0b0d006a2b0b0b",
    )
    """

    type: typing.Literal["other_idp_metadata"] = "other_idp_metadata"
    idp_external_id: str

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow


"""
from candid.resources.users.resources.v_2 import (
    IdpUserMetadata_AuthZeroMetadata,
)

IdpUserMetadata_AuthZeroMetadata(
    auth_0_id="auth0|5f9b3b5a7b0b0d006a2b0b0b",
)
"""
IdpUserMetadata = typing_extensions.Annotated[
    typing.Union[
        IdpUserMetadata_AuthZeroMetadata, IdpUserMetadata_GoogleAppsMetadata, IdpUserMetadata_OtherIdpMetadata
    ],
    pydantic.Field(discriminator="type"),
]
