input CreateAdReadInput {
    title: String!
    campaignId: String!
    orderId: String!
    advertisementId: String!
    assigneeIds: [Int!]!
    rollType: String!
    copyUrlPath: String!
    copyFilename: String
    dueDate: DateTime!
    requiresApproval: Boolean!
}

input CreateAdReadCommentInput {
    adReadId: Int!
    comment: String!
}

input CreateEpisodeInput {
    podcastId: Int!
    seasonId: Int
    title: String!
    description: String
    seasonNumber: Int
    episodeNumber: Int
    episodeType: String
    trailerType: String
    content: String
    publishedDate: DateTime
    plannedPreRollCount: Int
    plannedMidRollCount: Int
    plannedPostRollCount: Int
    artworkFilename: String
    audioFilename: String
    draft: Boolean!
    externalId: String
    feedIds: [ID!] = []
    appleId: String
}

input CreateEpisodeInsertionPointInput {
    pointType: String!
    count: Int!
    timecode: String!
}

input CreateEpisodeInsertionPointsInput {
    podcastId: Int!
    episodeId: Int!
    insertionPoints: [CreateEpisodeInsertionPointInput!]!
}

input CreateInventoryInput {
    podcastId: Int!
    dates: [DateTime!]!
    preRolls: Int!
    midRolls: Int!
    postRolls: Int!
    titlePrefix: String!
}

enum PodcastFeedType {
    PUBLIC_RSS
    PRIVATE_RSS
    APPLE_SUBSCRIPTION
    YOUTUBE
}

input CreatePodcastInput {
    networkId: Int!
    title: String!
    description: String!
    slug: String
    copyright: String!
    link: String
    email: String!
    explicit: String!
    showType: String!
    host: String!
    owner: String!
    language: String!
    categories: [Int!]!
    artworkFilename: String!
    participants: [PodcastParticipantInput!]
    seasons: [PodcastSeasonInput!]
    feedType: PodcastFeedType
    channelId: String
}

input CreatePodcastUserInput {
    name: String!
    email: String!
    admin: Boolean
    role: String
    organization: String!
    networkIds: [Int!]!
    podcastIds: [Int!]
    showFamilyIds: [Int!]
    allNetworks: Boolean
}

input DeleteAdReadInput {
    id: ID!
}

input DeleteAdReadCommentInput {
    id: ID!
}

input DeleteEpisodeInput {
    id: ID!
    podcastId: Int!
}

input DeletePodcastInput {
    id: ID
}

input DeletePodcastUserInput {
    id: ID!
}

input CreatePodcastLinkInput {
    storeId: Int!
    link: String!
}

input CreatePodcastLinksInput {
    podcastId: Int!
    links: [CreatePodcastLinkInput!]!
}

input CreateEpisodeLinkInput {
    podcastId: Int!
    episodeId: Int!
    storeId: Int!
    link: String!
}

input DeleteEpisodeLinkInput {
    episodeId: Int!
    storeId: Int!
}

input PodcastParticipantInput {
    name: String!
    role: String!
    participantId: Int!
}

input PodcastSeasonInput {
    id: ID
    number: Int!
    name: String!
    externalId: String
}

input UpdateAdReadInput {
    id: ID!
    status: AdReadStatus
    rejectionReason: String
    adReadUrl: String
    assigneeId: Int
    isArchivedEarly: Boolean
    assigneeIds: [Int!]
    dueDate: DateTime
    copyUrlPath: String
    copyFilename: String
}

input UpdateEpisodeInput {
    id: ID!
    podcastId: Int!
    seasonId: Int
    title: String!
    description: String
    seasonNumber: Int
    episodeNumber: Int
    episodeType: String
    trailerType: String
    content: String
    publishedDate: DateTime
    plannedPreRollCount: Int
    plannedMidRollCount: Int
    plannedPostRollCount: Int
    artworkFilename: String
    audioFilename: String
    draft: Boolean!
    externalId: String
    isReviewed: Boolean
    feedIds: [ID!] = []
    appleId: String
}

input UpdatePodcastInput {
    id: ID!
    title: String
    description: String
    copyright: String
    link: String
    email: String
    explicit: String
    showType: String
    host: String
    owner: String
    language: String
    artworkFilename: String
    categories: [Int!]
    participants: [PodcastParticipantInput!]
    seasons: [PodcastSeasonInput!]
    channelId: String
}

input UpdatePodcastUserInput {
    id: ID!
    networkIds: [Int!]
    podcastIds: [Int!]
    showFamilyIds: [Int!]
    allNetworks: Boolean
    role: String
}

input UpdatePodcastUserLastLoginInput {
    uuid: String!
    lastLogin: DateTime!
}

input UpdatePodcastUserSettingsInput {
    adNotifications: Boolean
    podcastNotifications: Boolean
    transcriptionNotifications: Boolean
    spikeNotifications: Boolean
}

input StartPodcastTranscriptionInput {
    episodeId: Int!
    numSpeakers: Int!
    language: String!
}

input TranscriptWordBreakDownInput {
    startTime: Float
    endTime: Float
    content: String!
}

input TranscriptSectionInput {
    items: [TranscriptWordBreakDownInput!]!
    speakerLabel: String!
}

input TranscriptInput {
    transcript: [TranscriptSectionInput!]!
}

input UpdatePodcastTranscriptionInput {
    id: ID!
    episodeId: Int!
    transcription: TranscriptInput!
}

input DeletePodcastTranscriptionInput {
    episodeId: Int!
}

input ToggleUserFavoriteInput {
    podcastId: Int!
}

input ToggleUserChartFavoriteInput {
    store: String!
    category: String!
    country: String!
    chartType: String!
}

input NetworkParticipantCreateInput {
    name: String!
    networkId: Int!
}

input CreateNetworkInput {
    name: String!
    code: String!
    isSony: Boolean!
}

input EpisodeAudioInput {
    episodeId: Int!
}

input CreateFeedInput {
    podcastId: Int!
    showFamilyId: Int!
    title: String!
    description: String!
    feedType: String!
    channelId: String
    artworkFilename: String!
    slug: String
    episodeIds: [Int!]
    isCopyAdLocations: Boolean
}

input UpdateEpisodeReplicationStatusInput {
    ids: [ID!]!
    showFamilyId: Int!
}

input ReplicateSingleEpisdeInput {
    originalEpisodeId: Int!
    podcastIds: [Int!]!
    copyAdLocationsPodcastIds: [Int!]
}

type Mutation {
    createPodcast(input: CreatePodcastInput): Podcast
    updatePodcast(input: UpdatePodcastInput): Podcast
    deletePodcast(input: DeletePodcastInput): Podcast
    createEpisode(input: CreateEpisodeInput!): CreateEpisodeResponseOrEpisode!
    updateEpisode(input: UpdateEpisodeInput): Episode
    updateAndReplicateEpisode(input: UpdateEpisodeInput!): CreateEpisodeResponseOrEpisode!
    deleteEpisode(input: DeleteEpisodeInput): Episode
    createInventory(input: CreateInventoryInput): InventoryResult
    createEpisodeInsertionPoints(
        input: CreateEpisodeInsertionPointsInput): EpisodeInsertionPointResult
    createAdRead(input: CreateAdReadInput): AdRead
    updateAdRead(input: UpdateAdReadInput): AdRead
    deleteAdRead(input: DeleteAdReadInput): AdRead
    createAdReadComment(input: CreateAdReadCommentInput): AdReadComment
    deleteAdReadComment(input: DeleteAdReadCommentInput): AdReadComment
    deletePodcastUser(input: DeletePodcastUserInput): PodcastUser
    createPodcastUser(input: CreatePodcastUserInput): PodcastUser
    updatePodcastUser(input: UpdatePodcastUserInput): PodcastUser
    updatePodcastUserLastLogin(input: UpdatePodcastUserLastLoginInput): PodcastUser
    togglePodcastFavorite(input: ToggleUserFavoriteInput): PodcastFavorites
    togglePodcastChartFavorite(input: ToggleUserChartFavoriteInput): PodcastFavorites
    updatePodcastUserSettings(input: UpdatePodcastUserSettingsInput): PodcastUserSettings
    startPodcastTranscription(input: StartPodcastTranscriptionInput): Boolean
    updatePodcastTranscription(input: UpdatePodcastTranscriptionInput): PodcastTranscription
    deletePodcastTranscription(input: DeletePodcastTranscriptionInput): PodcastTranscription
    createPodcastLinks(input: CreatePodcastLinksInput): [PodcastLink!]!
    createEpisodeLink(input: CreateEpisodeLinkInput): EpisodeLink!
    deleteEpisodeLink(input: DeleteEpisodeLinkInput): EpisodeLink
    networkParticipantCreate(input: NetworkParticipantCreateInput): NetworkParticipant
    createPodcastNetwork(input: CreateNetworkInput): PodcastNetwork
    reuploadEpisodeAudio(input: EpisodeAudioInput): EpisodeAudio!
    createFeed(input: CreateFeedInput): Podcast
    updateEpisodeReplicationStatus(input: UpdateEpisodeReplicationStatusInput!): [EpisodeReplicationStatus!]!
    replicateSingleEpisode(input: ReplicateSingleEpisdeInput!): [EpisodeReplicationStatus!]!
}
