# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from __future__ import annotations

from typing_extensions import Required, Annotated, TypedDict

from ...._utils import PropertyInfo
from .privacy_law import PrivacyLaw
from .marketing_consent_status import MarketingConsentStatus
from .marketing_subscription_source import MarketingSubscriptionSource

__all__ = ["CustomerCreateParams"]


class CustomerCreateParams(TypedDict, total=False):
    email: Required[str]
    """Email address."""

    first_name: Required[Annotated[str, PropertyInfo(alias="firstName")]]
    """First name of the TodayTix customer."""

    home_location_id: Required[Annotated[int, PropertyInfo(alias="homeLocationId")]]
    """Numeric identifier for a resource"""

    identity: Required[str]
    """The identity id to associate with this customer."""

    last_name: Required[Annotated[str, PropertyInfo(alias="lastName")]]
    """Last name of the TodayTix customer."""

    marketing_email_consent: Annotated[MarketingConsentStatus, PropertyInfo(alias="marketingEmailConsent")]
    """
    Used to indicate the status of a user's consent to receive marketing
    communications from TodayTix. N.B. Clients may only set this to GRANTED or
    DENIED in POST/PATCH endpoints; only the backend can set this to UNDETERMINED.
    """

    password: str
    """Password to create user"""

    privacy_law: Annotated[PrivacyLaw, PropertyInfo(alias="privacyLaw")]
    """
    The privacy law by which a customer's personal data is protected. Different
    customers fall under different legal protection based on their home location,
    citizenship, etc. Laws include:

    - GDPR (General Data Protection & Regulation) for EU citizens & residents.
    - CA (California Consumer Privacy Act) for California residents.
    - CASL (Canada's Anti-Spam Law) for Canadians.
    - AUS (Australia's Privacy Act) for Australians.
    - NZ (New Zealand's Privacy Act) for New Zealanders.
    - CT (Connecticut's Privacy Act) for Connecticut residents.
    - VA (Virginia's Privacy Act) for Virginia residents.
    - UT (Utah's Privacy Act) for Utah residents.
    - CO (Colorado's Privacy Act) for Colorado residents.
    - NONE for customers not protected by any of the above.
    """

    subscription_source: Annotated[MarketingSubscriptionSource, PropertyInfo(alias="subscriptionSource")]
    """Used to indicate the source process of a user's marketing subscription."""
