# 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 .jira_board import JiraBoard
from .jira_project import JiraProject
from .jira_sprint import JiraSprint


class JiraDataInput(UniversalBaseModel):
    """
    Complete Jira sandbox data structure.

    Relational structure for initialization:
    - Projects contain Issues
    - Boards refer to Projects (via key)
    - Sprints refer to Boards (via name)
    - Issues can refer to Sprints (via name)
    """

    projects: typing.Optional[typing.List[JiraProject]] = pydantic.Field(default=None)
    """
    List of projects with their issues
    """

    boards: typing.Optional[typing.List[JiraBoard]] = pydantic.Field(default=None)
    """
    List of boards
    """

    sprints: typing.Optional[typing.List[JiraSprint]] = pydantic.Field(default=None)
    """
    List of sprints
    """

    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
