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

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .get_report_runs_data_object_response_body_status import GetReportRunsDataObjectResponseBodyStatus
from .report_columns_object_response_body import ReportColumnsObjectResponseBody


class GetReportRunsDataObjectResponseBody(UniversalBaseModel):
    columns: typing.List[ReportColumnsObjectResponseBody] = pydantic.Field()
    """
    Columns of this report run.
    """

    rows: typing.List[typing.List[typing.Dict[str, typing.Any]]] = pydantic.Field()
    """
    Array where each inner array represents a row of data, and each element in the inner array is a value for the column. Inner array items are nullable, data types: double, string, timestamp as string in RFC3339 format. The number of columns defined in the report run is to the number of inner array items.
    """

    status: GetReportRunsDataObjectResponseBodyStatus = pydantic.Field()
    """
    Status of the report run.  Valid values: `complete`, `pending`, `failed`, `canceled`, `unknown`
    """

    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
