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

from datetime import date, datetime
from typing_extensions import Literal

from pydantic import Field as FieldInfo

from ...._models import BaseModel
from .privacy_law import PrivacyLaw

__all__ = ["CustomerDeletionRequestsResponse"]


class CustomerDeletionRequestsResponse(BaseModel):
    id: int
    """Numeric identifier for a resource"""

    api_type: str = FieldInfo(alias="_type")

    completed_at: datetime = FieldInfo(alias="completedAt")
    """The timestamp when the deletion request was fully processed and completed"""

    created_at: datetime = FieldInfo(alias="createdAt")
    """The timestamp when this deletion request was initially created"""

    customer_id: str = FieldInfo(alias="customerId")
    """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.
    """

    due_date: date = FieldInfo(alias="dueDate")
    """The deadline date by which the deletion process must be completed"""

    privacy_law: PrivacyLaw = FieldInfo(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.
    """

    scheduled_date: date = FieldInfo(alias="scheduledDate")
    """The date when the deletion process is scheduled to begin"""

    status: Literal["PENDING", "IN_PROGRESS", "COMPLETED", "CANCELLED", "FAILED"]
    """The current state of the deletion request in its lifecycle"""

    updated_at: datetime = FieldInfo(alias="updatedAt")
    """The timestamp when this deletion request was last modified"""
