# Generated by ariadne-codegen
# Source: ./documents

from typing import Any, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import (
    AgentChannelTypes,
    AgentTypes,
    ContentTypes,
    EntityState,
    FileTypes,
    TimedPolicyRecurrenceTypes,
)


class GetAgent(BaseModel):
    agent: Optional["GetAgentAgent"]


class GetAgentAgent(BaseModel):
    id: str
    name: str
    creation_date: Any = Field(alias="creationDate")
    modified_date: Optional[Any] = Field(alias="modifiedDate")
    owner: "GetAgentAgentOwner"
    state: EntityState
    correlation_id: Optional[str] = Field(alias="correlationId")
    type: AgentTypes
    specification: Optional["GetAgentAgentSpecification"]
    filter: Optional["GetAgentAgentFilter"]
    schedule_policy: Optional["GetAgentAgentSchedulePolicy"] = Field(
        alias="schedulePolicy"
    )
    channels: Optional[list["GetAgentAgentChannels"]]
    connectors: Optional[list["GetAgentAgentConnectors"]]
    timeout: Optional[Any]
    prompt: Optional[str]
    scratchpad: Optional[str]


class GetAgentAgentOwner(BaseModel):
    id: str


class GetAgentAgentSpecification(BaseModel):
    id: str


class GetAgentAgentFilter(BaseModel):
    types: Optional[list[ContentTypes]]
    file_types: Optional[list[FileTypes]] = Field(alias="fileTypes")
    feeds: Optional[list["GetAgentAgentFilterFeeds"]]


class GetAgentAgentFilterFeeds(BaseModel):
    id: str


class GetAgentAgentSchedulePolicy(BaseModel):
    recurrence_type: Optional[TimedPolicyRecurrenceTypes] = Field(
        alias="recurrenceType"
    )
    repeat_interval: Optional[Any] = Field(alias="repeatInterval")
    cron: Optional[str]
    time_zone_id: Optional[str] = Field(alias="timeZoneId")


class GetAgentAgentChannels(BaseModel):
    type: AgentChannelTypes
    identifier: str
    instructions: Optional[str]
    label: Optional[str]


class GetAgentAgentConnectors(BaseModel):
    id: str


GetAgent.model_rebuild()
GetAgentAgent.model_rebuild()
GetAgentAgentFilter.model_rebuild()
