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

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .document_pdf_query_response_data_job_status import DocumentPdfQueryResponseDataJobStatus


class DocumentPdfQueryResponseData(UniversalBaseModel):
    completed_at_time: typing_extensions.Annotated[
        typing.Optional[str],
        FieldMetadata(alias="completedAtTime"),
        pydantic.Field(
            alias="completedAtTime", description="Time that PDF generation was completed, in RFC 3339 format."
        ),
    ] = None
    document_id: typing_extensions.Annotated[
        typing.Optional[str],
        FieldMetadata(alias="documentId"),
        pydantic.Field(alias="documentId", description="ID of the document."),
    ] = None
    download_document_pdf_url: typing_extensions.Annotated[
        typing.Optional[str],
        FieldMetadata(alias="downloadDocumentPdfUrl"),
        pydantic.Field(alias="downloadDocumentPdfUrl", description="S3 pre-signed URL to download PDF file."),
    ] = None
    id: typing.Optional[str] = pydantic.Field(default=None)
    """
    ID of the PDF file generated or being generated for the document
    """

    job_status: typing_extensions.Annotated[
        typing.Optional[DocumentPdfQueryResponseDataJobStatus],
        FieldMetadata(alias="jobStatus"),
        pydantic.Field(
            alias="jobStatus",
            description="Describes status of the PDF generation job. Valid values: `requested`, `processing`, `completed`. ",
        ),
    ] = None
    requested_at_time: typing_extensions.Annotated[
        typing.Optional[str],
        FieldMetadata(alias="requestedAtTime"),
        pydantic.Field(
            alias="requestedAtTime", description="Time that PDF generation was requested, in RFC 3339 format."
        ),
    ] = None

    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
