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

from typing import Any, List, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import (
    AttioAuthenticationTypes,
    BlobListingTypes,
    BoxAuthenticationTypes,
    CalendarListingTypes,
    DropboxAuthenticationTypes,
    EmailListingTypes,
    EntityState,
    FeedListingTypes,
    FeedServiceTypes,
    FeedSyncMode,
    FeedTypes,
    GitHubAuthenticationTypes,
    GitHubCommitAuthenticationTypes,
    GitHubIssueAuthenticationTypes,
    GitHubPullRequestAuthenticationTypes,
    GoogleCalendarAuthenticationTypes,
    GoogleContactsAuthenticationTypes,
    GoogleDriveAuthenticationTypes,
    GoogleEmailAuthenticationTypes,
    MicrosoftCalendarAuthenticationTypes,
    MicrosoftContactsAuthenticationTypes,
    MicrosoftEmailAuthenticationTypes,
    MicrosoftTeamsAuthenticationTypes,
    NotionTypes,
    OneDriveAuthenticationTypes,
    ParallelGenerators,
    ParallelProcessors,
    SearchServiceTypes,
    SharePointAuthenticationTypes,
    SiteTypes,
    TimedPolicyRecurrenceTypes,
    TrelloTypes,
    TwitterListingTypes,
    YouTubeTypes,
)


class GetFeed(BaseModel):
    feed: Optional["GetFeedFeed"]


class GetFeedFeed(BaseModel):
    id: str
    name: str
    creation_date: Any = Field(alias="creationDate")
    modified_date: Optional[Any] = Field(alias="modifiedDate")
    owner: "GetFeedFeedOwner"
    state: EntityState
    correlation_id: Optional[str] = Field(alias="correlationId")
    type: FeedTypes
    sync_mode: Optional[FeedSyncMode] = Field(alias="syncMode")
    site: Optional["GetFeedFeedSite"]
    email: Optional["GetFeedFeedEmail"]
    issue: Optional["GetFeedFeedIssue"]
    commit: Optional["GetFeedFeedCommit"]
    pull_request: Optional["GetFeedFeedPullRequest"] = Field(alias="pullRequest")
    crm: Optional["GetFeedFeedCrm"]
    calendar: Optional["GetFeedFeedCalendar"]
    rss: Optional["GetFeedFeedRss"]
    web: Optional["GetFeedFeedWeb"]
    search: Optional["GetFeedFeedSearch"]
    reddit: Optional["GetFeedFeedReddit"]
    notion: Optional["GetFeedFeedNotion"]
    intercom: Optional["GetFeedFeedIntercom"]
    zendesk: Optional["GetFeedFeedZendesk"]
    youtube: Optional["GetFeedFeedYoutube"]
    twitter: Optional["GetFeedFeedTwitter"]
    slack: Optional["GetFeedFeedSlack"]
    microsoft_teams: Optional["GetFeedFeedMicrosoftTeams"] = Field(
        alias="microsoftTeams"
    )
    discord: Optional["GetFeedFeedDiscord"]
    attio: Optional["GetFeedFeedAttio"]
    research: Optional["GetFeedFeedResearch"]
    entity: Optional["GetFeedFeedEntity"]
    error: Optional[str]
    last_post_date: Optional[Any] = Field(alias="lastPostDate")
    last_read_date: Optional[Any] = Field(alias="lastReadDate")
    read_count: Optional[int] = Field(alias="readCount")
    workflow: Optional["GetFeedFeedWorkflow"]
    schedule_policy: Optional["GetFeedFeedSchedulePolicy"] = Field(
        alias="schedulePolicy"
    )


class GetFeedFeedOwner(BaseModel):
    id: str


class GetFeedFeedSite(BaseModel):
    site_type: SiteTypes = Field(alias="siteType")
    type: FeedServiceTypes
    is_recursive: Optional[bool] = Field(alias="isRecursive")
    allowed_paths: Optional[List[str]] = Field(alias="allowedPaths")
    excluded_paths: Optional[List[str]] = Field(alias="excludedPaths")
    s_3: Optional["GetFeedFeedSiteS3"] = Field(alias="s3")
    azure_blob: Optional["GetFeedFeedSiteAzureBlob"] = Field(alias="azureBlob")
    azure_file: Optional["GetFeedFeedSiteAzureFile"] = Field(alias="azureFile")
    google: Optional["GetFeedFeedSiteGoogle"]
    share_point: Optional["GetFeedFeedSiteSharePoint"] = Field(alias="sharePoint")
    one_drive: Optional["GetFeedFeedSiteOneDrive"] = Field(alias="oneDrive")
    google_drive: Optional["GetFeedFeedSiteGoogleDrive"] = Field(alias="googleDrive")
    dropbox: Optional["GetFeedFeedSiteDropbox"]
    box: Optional["GetFeedFeedSiteBox"]
    github: Optional["GetFeedFeedSiteGithub"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedSiteS3(BaseModel):
    access_key: Optional[str] = Field(alias="accessKey")
    secret_access_key: Optional[str] = Field(alias="secretAccessKey")
    bucket_name: Optional[str] = Field(alias="bucketName")
    prefix: Optional[str]
    region: Optional[str]


class GetFeedFeedSiteAzureBlob(BaseModel):
    storage_access_key: Optional[str] = Field(alias="storageAccessKey")
    account_name: Optional[str] = Field(alias="accountName")
    container_name: Optional[str] = Field(alias="containerName")
    prefix: Optional[str]
    list_type: Optional[BlobListingTypes] = Field(alias="listType")


class GetFeedFeedSiteAzureFile(BaseModel):
    storage_access_key: Optional[str] = Field(alias="storageAccessKey")
    account_name: Optional[str] = Field(alias="accountName")
    share_name: Optional[str] = Field(alias="shareName")
    prefix: Optional[str]


class GetFeedFeedSiteGoogle(BaseModel):
    credentials: Optional[str]
    container_name: Optional[str] = Field(alias="containerName")
    prefix: Optional[str]


class GetFeedFeedSiteSharePoint(BaseModel):
    authentication_type: Optional[SharePointAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    account_name: str = Field(alias="accountName")
    library_id: str = Field(alias="libraryId")
    folder_id: Optional[str] = Field(alias="folderId")
    tenant_id: Optional[str] = Field(alias="tenantId")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    connector: Optional["GetFeedFeedSiteSharePointConnector"]


class GetFeedFeedSiteSharePointConnector(BaseModel):
    id: str


class GetFeedFeedSiteOneDrive(BaseModel):
    authentication_type: Optional[OneDriveAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    folder_id: Optional[str] = Field(alias="folderId")
    files: Optional[List[Optional[str]]]
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    connector: Optional["GetFeedFeedSiteOneDriveConnector"]


class GetFeedFeedSiteOneDriveConnector(BaseModel):
    id: str


class GetFeedFeedSiteGoogleDrive(BaseModel):
    authentication_type: Optional[GoogleDriveAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    folder_id: Optional[str] = Field(alias="folderId")
    files: Optional[List[Optional[str]]]
    refresh_token: Optional[str] = Field(alias="refreshToken")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    service_account_json: Optional[str] = Field(alias="serviceAccountJson")
    connector: Optional["GetFeedFeedSiteGoogleDriveConnector"]


class GetFeedFeedSiteGoogleDriveConnector(BaseModel):
    id: str


class GetFeedFeedSiteDropbox(BaseModel):
    authentication_type: Optional[DropboxAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    path: Optional[str]
    app_key: Optional[str] = Field(alias="appKey")
    app_secret: Optional[str] = Field(alias="appSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")


class GetFeedFeedSiteBox(BaseModel):
    authentication_type: Optional[BoxAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    folder_id: Optional[str] = Field(alias="folderId")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    redirect_uri: Optional[str] = Field(alias="redirectUri")


class GetFeedFeedSiteGithub(BaseModel):
    authentication_type: Optional[GitHubAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    uri: Optional[Any]
    repository_owner: str = Field(alias="repositoryOwner")
    repository_name: str = Field(alias="repositoryName")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    personal_access_token: Optional[str] = Field(alias="personalAccessToken")
    connector: Optional["GetFeedFeedSiteGithubConnector"]


class GetFeedFeedSiteGithubConnector(BaseModel):
    id: str


class GetFeedFeedEmail(BaseModel):
    type: FeedServiceTypes
    include_attachments: Optional[bool] = Field(alias="includeAttachments")
    google: Optional["GetFeedFeedEmailGoogle"]
    microsoft: Optional["GetFeedFeedEmailMicrosoft"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedEmailGoogle(BaseModel):
    type: Optional[EmailListingTypes]
    filter: Optional[str]
    include_spam: Optional[bool] = Field(alias="includeSpam")
    exclude_sent_items: Optional[bool] = Field(alias="excludeSentItems")
    include_deleted_items: Optional[bool] = Field(alias="includeDeletedItems")
    inbox_only: Optional[bool] = Field(alias="inboxOnly")
    authentication_type: Optional[GoogleEmailAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    refresh_token: Optional[str] = Field(alias="refreshToken")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    connector: Optional["GetFeedFeedEmailGoogleConnector"]


class GetFeedFeedEmailGoogleConnector(BaseModel):
    id: str


class GetFeedFeedEmailMicrosoft(BaseModel):
    type: Optional[EmailListingTypes]
    filter: Optional[str]
    include_spam: Optional[bool] = Field(alias="includeSpam")
    exclude_sent_items: Optional[bool] = Field(alias="excludeSentItems")
    include_deleted_items: Optional[bool] = Field(alias="includeDeletedItems")
    inbox_only: Optional[bool] = Field(alias="inboxOnly")
    authentication_type: Optional[MicrosoftEmailAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    refresh_token: Optional[str] = Field(alias="refreshToken")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    connector: Optional["GetFeedFeedEmailMicrosoftConnector"]


class GetFeedFeedEmailMicrosoftConnector(BaseModel):
    id: str


class GetFeedFeedIssue(BaseModel):
    type: FeedServiceTypes
    include_attachments: Optional[bool] = Field(alias="includeAttachments")
    jira: Optional["GetFeedFeedIssueJira"]
    linear: Optional["GetFeedFeedIssueLinear"]
    github: Optional["GetFeedFeedIssueGithub"]
    intercom: Optional["GetFeedFeedIssueIntercom"]
    zendesk: Optional["GetFeedFeedIssueZendesk"]
    trello: Optional["GetFeedFeedIssueTrello"]
    attio: Optional["GetFeedFeedIssueAttio"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedIssueJira(BaseModel):
    uri: Any
    project: str
    email: str
    token: str
    offset: Optional[Any]


class GetFeedFeedIssueLinear(BaseModel):
    key: str
    project: str


class GetFeedFeedIssueGithub(BaseModel):
    authentication_type: Optional[GitHubIssueAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    uri: Optional[Any]
    repository_owner: str = Field(alias="repositoryOwner")
    repository_name: str = Field(alias="repositoryName")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    personal_access_token: Optional[str] = Field(alias="personalAccessToken")
    connector: Optional["GetFeedFeedIssueGithubConnector"]


class GetFeedFeedIssueGithubConnector(BaseModel):
    id: str


class GetFeedFeedIssueIntercom(BaseModel):
    access_token: str = Field(alias="accessToken")


class GetFeedFeedIssueZendesk(BaseModel):
    subdomain: str
    access_token: str = Field(alias="accessToken")


class GetFeedFeedIssueTrello(BaseModel):
    key: str
    token: str
    identifiers: List[str]
    type: TrelloTypes


class GetFeedFeedIssueAttio(BaseModel):
    api_key: str = Field(alias="apiKey")


class GetFeedFeedCommit(BaseModel):
    type: FeedServiceTypes
    github: Optional["GetFeedFeedCommitGithub"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedCommitGithub(BaseModel):
    authentication_type: Optional[GitHubCommitAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    uri: Optional[Any]
    repository_owner: str = Field(alias="repositoryOwner")
    repository_name: str = Field(alias="repositoryName")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    personal_access_token: Optional[str] = Field(alias="personalAccessToken")
    connector: Optional["GetFeedFeedCommitGithubConnector"]


class GetFeedFeedCommitGithubConnector(BaseModel):
    id: str


class GetFeedFeedPullRequest(BaseModel):
    type: FeedServiceTypes
    github: Optional["GetFeedFeedPullRequestGithub"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedPullRequestGithub(BaseModel):
    authentication_type: Optional[GitHubPullRequestAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    uri: Optional[Any]
    repository_owner: str = Field(alias="repositoryOwner")
    repository_name: str = Field(alias="repositoryName")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    personal_access_token: Optional[str] = Field(alias="personalAccessToken")
    connector: Optional["GetFeedFeedPullRequestGithubConnector"]


class GetFeedFeedPullRequestGithubConnector(BaseModel):
    id: str


class GetFeedFeedCrm(BaseModel):
    type: FeedServiceTypes
    attio: Optional["GetFeedFeedCrmAttio"]
    google_contacts: Optional["GetFeedFeedCrmGoogleContacts"] = Field(
        alias="googleContacts"
    )
    microsoft_contacts: Optional["GetFeedFeedCrmMicrosoftContacts"] = Field(
        alias="microsoftContacts"
    )
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedCrmAttio(BaseModel):
    authentication_type: Optional[AttioAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    api_key: Optional[str] = Field(alias="apiKey")


class GetFeedFeedCrmGoogleContacts(BaseModel):
    authentication_type: Optional[GoogleContactsAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    connector: Optional["GetFeedFeedCrmGoogleContactsConnector"]


class GetFeedFeedCrmGoogleContactsConnector(BaseModel):
    id: str


class GetFeedFeedCrmMicrosoftContacts(BaseModel):
    authentication_type: Optional[MicrosoftContactsAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    tenant_id: Optional[str] = Field(alias="tenantId")
    connector: Optional["GetFeedFeedCrmMicrosoftContactsConnector"]


class GetFeedFeedCrmMicrosoftContactsConnector(BaseModel):
    id: str


class GetFeedFeedCalendar(BaseModel):
    type: FeedServiceTypes
    include_attachments: Optional[bool] = Field(alias="includeAttachments")
    enable_meeting_recording: Optional[bool] = Field(alias="enableMeetingRecording")
    meeting_bot_name: Optional[str] = Field(alias="meetingBotName")
    google: Optional["GetFeedFeedCalendarGoogle"]
    microsoft: Optional["GetFeedFeedCalendarMicrosoft"]
    read_limit: Optional[int] = Field(alias="readLimit")


class GetFeedFeedCalendarGoogle(BaseModel):
    type: Optional[CalendarListingTypes]
    calendar_id: Optional[str] = Field(alias="calendarId")
    before_date: Optional[Any] = Field(alias="beforeDate")
    after_date: Optional[Any] = Field(alias="afterDate")
    authentication_type: Optional[GoogleCalendarAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    refresh_token: Optional[str] = Field(alias="refreshToken")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    connector: Optional["GetFeedFeedCalendarGoogleConnector"]


class GetFeedFeedCalendarGoogleConnector(BaseModel):
    id: str


class GetFeedFeedCalendarMicrosoft(BaseModel):
    type: Optional[CalendarListingTypes]
    calendar_id: Optional[str] = Field(alias="calendarId")
    before_date: Optional[Any] = Field(alias="beforeDate")
    after_date: Optional[Any] = Field(alias="afterDate")
    authentication_type: Optional[MicrosoftCalendarAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    refresh_token: Optional[str] = Field(alias="refreshToken")
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    connector: Optional["GetFeedFeedCalendarMicrosoftConnector"]


class GetFeedFeedCalendarMicrosoftConnector(BaseModel):
    id: str


class GetFeedFeedRss(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    uri: Any


class GetFeedFeedWeb(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    uri: Any
    include_files: Optional[bool] = Field(alias="includeFiles")
    allowed_paths: Optional[List[str]] = Field(alias="allowedPaths")
    excluded_paths: Optional[List[str]] = Field(alias="excludedPaths")


class GetFeedFeedSearch(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: Optional[SearchServiceTypes]
    text: str


class GetFeedFeedReddit(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    subreddit_name: str = Field(alias="subredditName")


class GetFeedFeedNotion(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    token: str
    identifiers: List[str]
    type: NotionTypes


class GetFeedFeedIntercom(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    access_token: str = Field(alias="accessToken")


class GetFeedFeedZendesk(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    subdomain: str
    access_token: str = Field(alias="accessToken")


class GetFeedFeedYoutube(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: YouTubeTypes
    video_name: Optional[str] = Field(alias="videoName")
    video_identifiers: Optional[List[str]] = Field(alias="videoIdentifiers")
    channel_identifier: Optional[str] = Field(alias="channelIdentifier")
    playlist_identifier: Optional[str] = Field(alias="playlistIdentifier")


class GetFeedFeedTwitter(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    token: str
    type: Optional[TwitterListingTypes]
    user_name: Optional[str] = Field(alias="userName")
    query: Optional[str]
    include_attachments: Optional[bool] = Field(alias="includeAttachments")


class GetFeedFeedSlack(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: Optional[FeedListingTypes]
    token: str
    channel: str
    include_attachments: Optional[bool] = Field(alias="includeAttachments")


class GetFeedFeedMicrosoftTeams(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: Optional[FeedListingTypes]
    authentication_type: Optional[MicrosoftTeamsAuthenticationTypes] = Field(
        alias="authenticationType"
    )
    client_id: Optional[str] = Field(alias="clientId")
    client_secret: Optional[str] = Field(alias="clientSecret")
    refresh_token: Optional[str] = Field(alias="refreshToken")
    connector: Optional["GetFeedFeedMicrosoftTeamsConnector"]
    team_id: str = Field(alias="teamId")
    channel_id: str = Field(alias="channelId")


class GetFeedFeedMicrosoftTeamsConnector(BaseModel):
    id: str


class GetFeedFeedDiscord(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: Optional[FeedListingTypes]
    token: str
    channel: str
    include_attachments: Optional[bool] = Field(alias="includeAttachments")


class GetFeedFeedAttio(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    api_key: str = Field(alias="apiKey")


class GetFeedFeedResearch(BaseModel):
    read_limit: Optional[int] = Field(alias="readLimit")
    type: Optional[FeedServiceTypes]
    query: str
    parallel: Optional["GetFeedFeedResearchParallel"]


class GetFeedFeedResearchParallel(BaseModel):
    processor: Optional[ParallelProcessors]


class GetFeedFeedEntity(BaseModel):
    type: FeedServiceTypes
    query: str
    read_limit: Optional[int] = Field(alias="readLimit")
    parallel: Optional["GetFeedFeedEntityParallel"]


class GetFeedFeedEntityParallel(BaseModel):
    generator: Optional[ParallelGenerators]


class GetFeedFeedWorkflow(BaseModel):
    id: str
    name: str


class GetFeedFeedSchedulePolicy(BaseModel):
    recurrence_type: Optional[TimedPolicyRecurrenceTypes] = Field(
        alias="recurrenceType"
    )
    repeat_interval: Optional[Any] = Field(alias="repeatInterval")


GetFeed.model_rebuild()
GetFeedFeed.model_rebuild()
GetFeedFeedSite.model_rebuild()
GetFeedFeedSiteSharePoint.model_rebuild()
GetFeedFeedSiteOneDrive.model_rebuild()
GetFeedFeedSiteGoogleDrive.model_rebuild()
GetFeedFeedSiteGithub.model_rebuild()
GetFeedFeedEmail.model_rebuild()
GetFeedFeedEmailGoogle.model_rebuild()
GetFeedFeedEmailMicrosoft.model_rebuild()
GetFeedFeedIssue.model_rebuild()
GetFeedFeedIssueGithub.model_rebuild()
GetFeedFeedCommit.model_rebuild()
GetFeedFeedCommitGithub.model_rebuild()
GetFeedFeedPullRequest.model_rebuild()
GetFeedFeedPullRequestGithub.model_rebuild()
GetFeedFeedCrm.model_rebuild()
GetFeedFeedCrmGoogleContacts.model_rebuild()
GetFeedFeedCrmMicrosoftContacts.model_rebuild()
GetFeedFeedCalendar.model_rebuild()
GetFeedFeedCalendarGoogle.model_rebuild()
GetFeedFeedCalendarMicrosoft.model_rebuild()
GetFeedFeedMicrosoftTeams.model_rebuild()
GetFeedFeedResearch.model_rebuild()
GetFeedFeedEntity.model_rebuild()
