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

from typing import Optional
from datetime import datetime
from typing_extensions import Literal

from pydantic import Field as FieldInfo

from .voucher import Voucher
from ...._models import BaseModel
from .shows.showtime import Showtime
from .carts.currency_object import CurrencyObject
from .eticket_delivery_time import EticketDeliveryTime
from .customers.minified_show import MinifiedShow

__all__ = ["CustomerCareOrder"]


class CustomerCareOrder(BaseModel):
    api_type: Optional[str] = FieldInfo(alias="_type", default=None)

    can_be_listed_for_resale: Optional[bool] = FieldInfo(alias="canBeListedForResale", default=None)

    can_offer_exchange: Optional[bool] = FieldInfo(alias="canOfferExchange", default=None)

    cc_status: Optional[str] = FieldInfo(alias="ccStatus", default=None)

    confirmation_number: Optional[str] = FieldInfo(alias="confirmationNumber", default=None)

    delivery_method: Optional[str] = FieldInfo(alias="deliveryMethod", default=None)

    delivery_status: Optional[str] = FieldInfo(alias="deliveryStatus", default=None)

    email: Optional[str] = None
    """Email address."""

    eticket_delivery_time: Optional[EticketDeliveryTime] = FieldInfo(alias="eticketDeliveryTime", default=None)
    """Different time formats for when the tickets are scheduled to be delivered"""

    eticket_type: Optional[str] = FieldInfo(alias="eticketType", default=None)

    has_assigned_customers: Optional[bool] = FieldInfo(alias="hasAssignedCustomers", default=None)

    has_reedemable_ticket_protection: Optional[bool] = FieldInfo(alias="hasReedemableTicketProtection", default=None)

    num_seats: Optional[float] = FieldInfo(alias="numSeats", default=None)

    pickup_name: Optional[str] = FieldInfo(alias="pickupName", default=None)
    """Participant's pickup name."""

    provider_confirmation_number: Optional[str] = FieldInfo(alias="providerConfirmationNumber", default=None)
    """The confirmation number from the provider, if applicable."""

    pub_id: Optional[str] = FieldInfo(alias="pubId", default=None)
    """A customer public facing Id (String).

    "me" or a hashed string. ?customer=me and /customers/me/ are both magical
    customer identifiers, but they are customer identifiers nonetheless. They make
    the API easier to use than ?customer=c.dkd3kl238es or
    /customers/c.23i8fjdksdfs3.
    """

    purchase_datetime: Optional[datetime] = FieldInfo(alias="purchaseDatetime", default=None)

    show: Optional[MinifiedShow] = None
    """
    Object representing a subset of properties of a 'Show' object. Used for
    LotteryEntry and Order API to get top-level show info in those contexts.
    """

    showtime: Optional[Showtime] = None

    spawned_voucher: Optional[Voucher] = FieldInfo(alias="spawnedVoucher", default=None)

    spawned_voucher_amount_display: Optional[CurrencyObject] = FieldInfo(
        alias="spawnedVoucherAmountDisplay", default=None
    )

    ticket_protection_redemption_status: Optional[Literal["ELIGIBLE", "EXPIRED", "REDEEMED", "NOT_ELIGIBLE"]] = (
        FieldInfo(alias="ticketProtectionRedemptionStatus", default=None)
    )
    """The status of the ticketProtection"""

    total: Optional[CurrencyObject] = None
