"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .addressupdate import AddressUpdate, AddressUpdateTypedDict
from .birthdateupdate import BirthDateUpdate, BirthDateUpdateTypedDict
from .governmentid import GovernmentID, GovernmentIDTypedDict
from .individualnameupdate import IndividualNameUpdate, IndividualNameUpdateTypedDict
from .phonenumber import PhoneNumber, PhoneNumberTypedDict
from moovio_sdk.types import BaseModel
import pydantic
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class PatchIndividualTypedDict(TypedDict):
    r"""Describes the fields available when patching an individual."""

    name: NotRequired[IndividualNameUpdateTypedDict]
    phone: NotRequired[PhoneNumberTypedDict]
    email: NotRequired[str]
    address: NotRequired[AddressUpdateTypedDict]
    birth_date: NotRequired[BirthDateUpdateTypedDict]
    government_id: NotRequired[GovernmentIDTypedDict]


class PatchIndividual(BaseModel):
    r"""Describes the fields available when patching an individual."""

    name: Optional[IndividualNameUpdate] = None

    phone: Optional[PhoneNumber] = None

    email: Optional[str] = None

    address: Optional[AddressUpdate] = None

    birth_date: Annotated[
        Optional[BirthDateUpdate], pydantic.Field(alias="birthDate")
    ] = None

    government_id: Annotated[
        Optional[GovernmentID], pydantic.Field(alias="governmentID")
    ] = None
