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

import datetime as dt
import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .expires_at import ExpiresAt
from .presigned_url_chunk import PresignedUrlChunk


class RequestAdditionalPresignedUrLsResponse(UniversalBaseModel):
    upload_id: typing.Optional[str] = pydantic.Field(default=None)
    """
    The unique identifier of the upload session associated with these URLs.
    """

    start_index: typing.Optional[int] = pydantic.Field(default=None)
    """
    The index of the first chunk number in this set of URLs. Matches the start value from your request.
    """

    count: typing.Optional[int] = pydantic.Field(default=None)
    """
    The number of new URLs created. Matches the count value from your request.
    """

    upload_urls: typing.Optional[typing.List[PresignedUrlChunk]] = pydantic.Field(default=None)
    """
    An array of additional presigned URLs for uploading chunks.
    """

    generated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
    """
    The date and time, in the RFC 3339 format ("YYYY-MM-DDTHH:mm:ssZ"), when these URLs were created. URLs remain valid for 1 hour from this time.
    """

    expires_at: typing.Optional[ExpiresAt] = 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
