# This file was generated. Do not edit manually. schema { query: Query mutation: Mutation } "Requires that exactly one field must be supplied and that field must not be `null`." directive @oneOf on INPUT_OBJECT "Generic Amount Consumed based on Media" interface AmountConsumed { "Total media completed atleast once." completed: Int! id: ID! "Total amount of media." media: Int! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "Total progress of library including reconsuming." units: Int! } "Generic Category Breakdown based on Media" interface CategoryBreakdown { "A Map of category_id -> count for all categories present on the library entries" categories: Map! id: ID! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "The total amount of library entries." total: Int! } "An episodic media in the Kitsu database" interface Episodic { "The number of episodes in this series" episodeCount: Int "The general length (in seconds) of each episode" episodeLength: Int "Episodes for this media" episodes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [EpisodeSortOption] ): EpisodeConnection! "The total length (in seconds) of the entire series" totalLength: Int } "Generic error fields used by all errors." interface Error { "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } "A media in the Kitsu database" interface Media { "The recommended minimum age group for this media" ageRating: AgeRatingEnum "An explanation of why this received the age rating it did" ageRatingGuide: String "The average rating of this media amongst all Kitsu users" averageRating: Float "The rank of this media by rating" averageRatingRank: Int "A large banner image for this media" bannerImage: Image "A list of categories for this media" categories( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCategorySortOption] ): CategoryConnection! "The characters who starred in this media" characters( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCharacterSortOption] ): MediaCharacterConnection! "A brief (mostly spoiler free) summary or description of the media." description(locales: [String!]): Map! "the day that this media made its final release" endDate: Date "The number of users with this in their favorites" favoritesCount: Int id: ID! "A list of mappings for this media" mappings( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MappingConnection! "Your library entry related to this media." myLibraryEntry: LibraryEntry "A list of your wiki submissions for this media" myWikiSubmissions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption] ): WikiSubmissionConnection! "The time of the next release of this media" nextRelease: ISO8601DateTime "The countries in which the media was originally primarily produced" originCountries: [String!]! "The languages the media was originally produced in" originLanguages: [String!]! "The country in which the media was primarily produced" originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages") "The poster image of this media" posterImage: Image "All posts that tag this media." posts( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [PostSortOption] ): PostConnection! "The companies which helped to produce this media" productions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaProductionConnection! "A list of quotes from this media" quotes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): QuoteConnection! "A list of reactions for this media" reactions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaReactionSortOption] ): MediaReactionConnection! "A list of relationships for this media" relationships( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaRelationshipConnection! "Whether the media is Safe-for-Work" sfw: Boolean! "The URL-friendly identifier of this media" slug: String! "The staff members who worked on this media" staff( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaStaffConnection! "The day that this media first released" startDate: Date "The current releasing status of this media" status: ReleaseStatusEnum! "Description of when this media is expected to release" tba: String "The titles for this media in various locales" titles: TitlesList! "Anime or Manga." type: String! "The number of users with this in their library" userCount: Int "The rank of this media by popularity" userCountRank: Int } "Media that is streamable." interface Streamable { "Spoken language is replaced by language of choice." dubs: [String!]! "Which regions this video is available in." regions: [String!]! "The site that is streaming this media." streamer: Streamer! "Languages this is translated to. Usually placed at bottom of media." subs: [String!]! } "Media units such as episodes or chapters" interface Unit { "A brief summary or description of the unit" description(locales: [String!]): Map! id: ID! "The sequence number of this unit" number: Int! "A thumbnail image for the unit" thumbnail: Image "The titles for this unit in various locales" titles: TitlesList! } interface WithTimestamps { createdAt: ISO8601DateTime! updatedAt: ISO8601DateTime! } union AccountChangePasswordErrorsUnion = NotAuthenticatedError | NotAuthorizedError | ValidationError union AccountCreateErrorsUnion = ValidationError union AccountUpdateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union BlockCreateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union BlockDeleteErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union FavoriteCreateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union FavoriteDeleteErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError "Objects which are Favoritable" union FavoriteItemUnion = Anime | Character | Manga | Person "Objects which are Mappable" union MappingItemUnion = Anime | Category | Character | Episode | Manga | Person | Producer union MediaReactionCreateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError | ValidationError union MediaReactionDeleteErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union MediaReactionLikeErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union MediaReactionUnlikeErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union ProfileLinkCreateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError | ValidationError union ProfileLinkDeleteErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError union ProfileLinkUpdateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError | ValidationError union ProfileUpdateErrorsUnion = NotAuthenticatedError | NotAuthorizedError | NotFoundError "Objects which are Reportable" union ReportItemUnion = Comment | MediaReaction | Post | Review "A user account on Kitsu" type Account implements WithTimestamps { "The country this user resides in" country: String createdAt: ISO8601DateTime! "The email addresses associated with this account" email: [String!]! "The features this user has access to" enabledFeatures: [String!]! "Facebook account linked to the account" facebookId: String id: ID! "Primary language for the account" language: String "Longest period an account has had a PRO subscription for in seconds" maxProStreak: Int "The PRO subscription for this account" proSubscription: ProSubscription "The profile for this account" profile: Profile! "Media rating system used for the account" ratingSystem: RatingSystemEnum! "Whether Not Safe For Work content is accessible" sfwFilter: Boolean "The level of the SFW Filter" sfwFilterPreference: SfwFilterPreferenceEnum "The site-wide permissions this user has access to" sitePermissions: [SitePermissionEnum!]! "Time zone of the account" timeZone: String "Preferred language for media titles" titleLanguagePreference: TitleLanguagePreferenceEnum "Twitter account linked to the account" twitterId: String updatedAt: ISO8601DateTime! } "Autogenerated return type of AccountChangePassword." type AccountChangePasswordPayload { errors: [AccountChangePasswordErrorsUnion!] result: Account } "Autogenerated return type of AccountCreate." type AccountCreatePayload { errors: [AccountCreateErrorsUnion!] result: Account } type AccountMutations { "Change your Kitsu account password" changePassword(input: AccountChangePasswordInput!): AccountChangePasswordPayload "Send a password reset email" sendPasswordReset( "The email address to reset the password for" email: String! ): AccountSendPasswordResetPayload "Update the account of the current user." update(input: AccountUpdateInput!): AccountUpdatePayload } "Autogenerated return type of AccountSendPasswordReset." type AccountSendPasswordResetPayload { email: String! } "Autogenerated return type of AccountUpdate." type AccountUpdatePayload { errors: [AccountUpdateErrorsUnion!] result: Account } type Anime implements Episodic & Media & WithTimestamps { "The recommended minimum age group for this media" ageRating: AgeRatingEnum "An explanation of why this received the age rating it did" ageRatingGuide: String "The average rating of this media amongst all Kitsu users" averageRating: Float "The rank of this media by rating" averageRatingRank: Int "A large banner image for this media" bannerImage: Image "A list of categories for this media" categories( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCategorySortOption] ): CategoryConnection! "The characters who starred in this media" characters( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCharacterSortOption] ): MediaCharacterConnection! createdAt: ISO8601DateTime! "A brief (mostly spoiler free) summary or description of the media." description(locales: [String!]): Map! "the day that this media made its final release" endDate: Date "The number of episodes in this series" episodeCount: Int "The general length (in seconds) of each episode" episodeLength: Int "Episodes for this media" episodes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [EpisodeSortOption] ): EpisodeConnection! "The number of users with this in their favorites" favoritesCount: Int id: ID! "A list of mappings for this media" mappings( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MappingConnection! "Your library entry related to this media." myLibraryEntry: LibraryEntry "A list of your wiki submissions for this media" myWikiSubmissions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption] ): WikiSubmissionConnection! "The time of the next release of this media" nextRelease: ISO8601DateTime "The countries in which the media was originally primarily produced" originCountries: [String!]! "The languages the media was originally produced in" originLanguages: [String!]! "The country in which the media was primarily produced" originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages") "The poster image of this media" posterImage: Image "All posts that tag this media." posts( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [PostSortOption] ): PostConnection! "The companies which helped to produce this media" productions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaProductionConnection! "A list of quotes from this media" quotes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): QuoteConnection! "A list of reactions for this media" reactions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaReactionSortOption] ): MediaReactionConnection! "A list of relationships for this media" relationships( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaRelationshipConnection! "The season this was released in" season: ReleaseSeasonEnum "Whether the media is Safe-for-Work" sfw: Boolean! "The URL-friendly identifier of this media" slug: String! "The staff members who worked on this media" staff( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaStaffConnection! "The day that this media first released" startDate: Date "The current releasing status of this media" status: ReleaseStatusEnum! "The stream links." streamingLinks( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): StreamingLinkConnection! "A secondary type for categorizing Anime." subtype: AnimeSubtypeEnum! "Description of when this media is expected to release" tba: String "The titles for this media in various locales" titles: TitlesList! "The total length (in seconds) of the entire series" totalLength: Int "Anime or Manga." type: String! updatedAt: ISO8601DateTime! "The number of users with this in their library" userCount: Int "The rank of this media by popularity" userCountRank: Int "Video id for a trailer on YouTube" youtubeTrailerVideoId: String } type AnimeAmountConsumed implements AmountConsumed { "Total media completed atleast once." completed: Int! id: ID! "Total amount of media." media: Int! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "Total time spent in minutes." time: Int! "Total progress of library including reconsuming." units: Int! } type AnimeCategoryBreakdown implements CategoryBreakdown { "A Map of category_id -> count for all categories present on the library entries" categories: Map! id: ID! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "The total amount of library entries." total: Int! } "The connection type for Anime." type AnimeConnection { "A list of edges." edges: [AnimeEdge] "A list of nodes." nodes: [Anime] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of AnimeCreate." type AnimeCreatePayload { anime: Anime errors: [Error!] } "Autogenerated return type of AnimeDelete." type AnimeDeletePayload { anime: GenericDelete errors: [Error!] } "An edge in a connection." type AnimeEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Anime } type AnimeMutations { "Create an Anime." create( "Create an Anime." input: AnimeCreateInput! ): AnimeCreatePayload "Delete an Anime." delete( "Delete an Anime." input: GenericDeleteInput! ): AnimeDeletePayload "Update an Anime." update( "Update an Anime." input: AnimeUpdateInput! ): AnimeUpdatePayload } "Autogenerated return type of AnimeUpdate." type AnimeUpdatePayload { anime: Anime errors: [Error!] } "A blocked user entry of an Account." type Block implements WithTimestamps { "User who got blocked." blockedUser: Profile! createdAt: ISO8601DateTime! id: ID! updatedAt: ISO8601DateTime! "User who blocked." user: Profile! } "The connection type for Block." type BlockConnection { "A list of edges." edges: [BlockEdge] "A list of nodes." nodes: [Block] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of BlockCreate." type BlockCreatePayload { errors: [BlockCreateErrorsUnion!] result: Block } "Autogenerated return type of BlockDelete." type BlockDeletePayload { errors: [BlockDeleteErrorsUnion!] result: Block } "An edge in a connection." type BlockEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Block } type BlockMutations { "Create a Block entry." create(input: BlockCreateInput!): BlockCreatePayload "Delete a Block entry." delete(input: BlockDeleteInput!): BlockDeletePayload } "Information about a specific Category" type Category implements WithTimestamps { "The child categories." children( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): CategoryConnection createdAt: ISO8601DateTime! "A brief summary or description of the catgory." description(locales: [String!]): Map! id: ID! "Whether the category is Not-Safe-for-Work." isNsfw: Boolean! "The parent category. Each category can have one parent." parent: Category "The top-level ancestor category" root: Category "The URL-friendly identifier of this Category." slug: String! "The name of the category." title(locales: [String!]): Map! updatedAt: ISO8601DateTime! } "The connection type for Category." type CategoryConnection { "A list of edges." edges: [CategoryEdge] "A list of nodes." nodes: [Category] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type CategoryEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Category } "A single chapter of a manga" type Chapter implements Unit & WithTimestamps { createdAt: ISO8601DateTime! "A brief summary or description of the unit" description(locales: [String!]): Map! id: ID! "Number of pages in chapter." length: Int "The manga this chapter is in." manga: Manga! "The sequence number of this unit" number: Int! "When this chapter was released" releasedAt: ISO8601Date "A thumbnail image for the unit" thumbnail: Image "The titles for this unit in various locales" titles: TitlesList! updatedAt: ISO8601DateTime! "The volume this chapter is in." volume: Volume } "The connection type for Chapter." type ChapterConnection { "A list of edges." edges: [ChapterEdge] "A list of nodes." nodes: [Chapter] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type ChapterEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Chapter } "Information about a Character in the Kitsu database" type Character implements WithTimestamps { createdAt: ISO8601DateTime! "A brief summary or description of the character." description(locales: [String!]): Map! id: ID! "An image of the character" image: Image "Media this character appears in." media( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaCharacterConnection "The name for this character in various locales" names: TitlesList "The original media this character showed up in" primaryMedia: Media "The URL-friendly identifier of this character" slug: String! updatedAt: ISO8601DateTime! } "Information about a VA (Person) voicing a Character in a Media" type CharacterVoice implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The company who hired this voice actor to play this role" licensor: Producer "The BCP47 locale tag for the voice acting role" locale: String! "The MediaCharacter node" mediaCharacter: MediaCharacter! "The person who voice acted this role" person: Person! updatedAt: ISO8601DateTime! } "The connection type for CharacterVoice." type CharacterVoiceConnection { "A list of edges." edges: [CharacterVoiceEdge] "A list of nodes." nodes: [CharacterVoice] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type CharacterVoiceEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: CharacterVoice } "A comment on a post" type Comment implements WithTimestamps { "The user who created this comment for the parent post." author: Profile! "Unmodified content." content: String "Html formatted content." contentFormatted: String createdAt: ISO8601DateTime! id: ID! "Users who liked this comment" likes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [CommentLikeSortOption] ): ProfileConnection! "The parent comment if this comment was a reply to another." parent: Comment "The post that this comment is attached to." post: Post! "Replies to this comment" replies( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [CommentSortOption] ): CommentConnection! updatedAt: ISO8601DateTime! } "The connection type for Comment." type CommentConnection { "A list of edges." edges: [CommentEdge] "A list of nodes." nodes: [Comment] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type CommentEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Comment } "An Episode of a Media" type Episode implements Unit & WithTimestamps { "The anime this episode is in" anime: Anime! createdAt: ISO8601DateTime! "A brief summary or description of the unit" description(locales: [String!]): Map! id: ID! "The length of the episode in seconds" length: Int "The sequence number of this unit" number: Int! "When this episode aired" releasedAt: ISO8601DateTime "A thumbnail image for the unit" thumbnail: Image "The titles for this unit in various locales" titles: TitlesList! updatedAt: ISO8601DateTime! } "The connection type for Episode." type EpisodeConnection { "A list of edges." edges: [EpisodeEdge] "A list of nodes." nodes: [Episode] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of EpisodeCreate." type EpisodeCreatePayload { episode: Episode errors: [Error!] } "Autogenerated return type of EpisodeDelete." type EpisodeDeletePayload { episode: GenericDelete errors: [Error!] } "An edge in a connection." type EpisodeEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Episode } type EpisodeMutations { "Create an Episode." create( "Create an Episode" input: EpisodeCreateInput! ): EpisodeCreatePayload "Delete an Episode." delete( "Delete an Episode" input: GenericDeleteInput! ): EpisodeDeletePayload "Update an Episode." update( "Update an Episode" input: EpisodeUpdateInput! ): EpisodeUpdatePayload } "Autogenerated return type of EpisodeUpdate." type EpisodeUpdatePayload { episode: Episode errors: [Error!] } "Favorite media, characters, and people for a user" type Favorite implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The kitsu object that is mapped" item: FavoriteItemUnion! updatedAt: ISO8601DateTime! "The user who favorited this item" user: Profile! } "The connection type for Favorite." type FavoriteConnection { "A list of edges." edges: [FavoriteEdge] "A list of nodes." nodes: [Favorite] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of FavoriteCreate." type FavoriteCreatePayload { errors: [FavoriteCreateErrorsUnion!] result: Favorite } "Autogenerated return type of FavoriteDelete." type FavoriteDeletePayload { errors: [FavoriteDeleteErrorsUnion!] result: Favorite } "An edge in a connection." type FavoriteEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Favorite } type FavoriteMutations { "Add a favorite entry" create(input: FavoriteCreateInput!): FavoriteCreatePayload "Delete a favorite entry" delete(input: FavoriteDeleteInput!): FavoriteDeletePayload } "Related media grouped together" type Franchise implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "All media related to a franchise" installments( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [InstallmentSortOption] ): InstallmentConnection "The name of this franchise in various languages" titles: TitlesList! updatedAt: ISO8601DateTime! } "The connection type for Franchise." type FranchiseConnection { "A list of edges." edges: [FranchiseEdge] "A list of nodes." nodes: [Franchise] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type FranchiseEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Franchise } type GenericDelete { id: ID! } type GenericError implements Error { "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } type Image { "A blurhash-encoded version of this image" blurhash: String "The original image" original: ImageView! "The various generated views of this image" views(names: [String!]): [ImageView!]! } type ImageView { "The height of the image" height: Int "The name of this view of the image" name: String! "The URL of this view of the image" url: String! "The width of the image" width: Int } "Individual media that belongs to a franchise" type Installment implements WithTimestamps { "Order based chronologically" alternativeOrder: Int createdAt: ISO8601DateTime! "The franchise related to this installment" franchise: Franchise! id: ID! "The media related to this installment" media: Media! "Order based by date released" releaseOrder: Int "Further explains the media relationship corresponding to a franchise" tag: InstallmentTagEnum updatedAt: ISO8601DateTime! } "The connection type for Installment." type InstallmentConnection { "A list of edges." edges: [InstallmentEdge] "A list of nodes." nodes: [Installment] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type InstallmentEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Installment } "The user library" type Library { "All Library Entries" all( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption], status: [LibraryEntryStatusEnum!] ): LibraryEntryConnection! "Library Entries with the completed status" completed( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption] ): LibraryEntryConnection! "Library Entries with the current status" current( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption] ): LibraryEntryConnection! "Library Entries with the dropped status" dropped( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption] ): LibraryEntryConnection! "Library Entries with the on_hold status" onHold( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption] ): LibraryEntryConnection! "Library Entries with the planned status" planned( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum, sort: [LibraryEntrySortOption] ): LibraryEntryConnection! "Random anime or manga from this library" randomMedia(mediaType: MediaTypeEnum!, status: [LibraryEntryStatusEnum!]!): Media } "Information about a specific media entry for a user" type LibraryEntry implements WithTimestamps { createdAt: ISO8601DateTime! "History of user actions for this library entry." events( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaTypes: [MediaTypeEnum!] = [ANIME] ): LibraryEventConnection "When the user finished this media." finishedAt: ISO8601DateTime id: ID! "The last unit consumed" lastUnit: Unit "The media related to this library entry." media: Media! "The next unit to be consumed" nextUnit: Unit "Notes left by the profile related to this library entry." notes: String "If the media related to the library entry is Not-Safe-for-Work." nsfw: Boolean! "If this library entry is publicly visibile from their profile, or hidden." private: Boolean! "The number of episodes/chapters this user has watched/read" progress: Int! "When the user last watched an episode or read a chapter of this media." progressedAt: ISO8601DateTime "How much you enjoyed this media (lower meaning not liking)." rating: Int "The reaction based on the media of this library entry." reaction: MediaReaction "Amount of times this media has been rewatched." reconsumeCount: Int! "If the profile is currently rewatching this media." reconsuming: Boolean! "When the user started this media." startedAt: ISO8601DateTime status: LibraryEntryStatusEnum! updatedAt: ISO8601DateTime! "The user who created this library entry." user: Profile! "Volumes that the profile owns (physically or digital)." volumesOwned: Int! } "The connection type for LibraryEntry." type LibraryEntryConnection { "A list of edges." edges: [LibraryEntryEdge] "A list of nodes." nodes: [LibraryEntry] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of LibraryEntryCreate." type LibraryEntryCreatePayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryDelete." type LibraryEntryDeletePayload { errors: [Error!] libraryEntry: GenericDelete } "An edge in a connection." type LibraryEntryEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: LibraryEntry } type LibraryEntryMutations { "Create a library entry" create( "Create a Library Entry" input: LibraryEntryCreateInput! ): LibraryEntryCreatePayload "Delete a library entry" delete( "Delete Library Entry" input: GenericDeleteInput! ): LibraryEntryDeletePayload "Update a library entry" update( "Update Library Entry" input: LibraryEntryUpdateInput! ): LibraryEntryUpdatePayload "Update library entry progress by id" updateProgressById( "Update library entry progress by id" input: LibraryEntryUpdateProgressByIdInput! ): LibraryEntryUpdateProgressByIdPayload "Update library entry progress by media" updateProgressByMedia( "Update library entry progress by media" input: LibraryEntryUpdateProgressByMediaInput! ): LibraryEntryUpdateProgressByMediaPayload "Update library entry rating by id" updateRatingById( "Update library entry rating by id" input: LibraryEntryUpdateRatingByIdInput! ): LibraryEntryUpdateRatingByIdPayload "Update library entry rating by media" updateRatingByMedia( "Update library entry rating by media" input: LibraryEntryUpdateRatingByMediaInput! ): LibraryEntryUpdateRatingByMediaPayload "Update library entry status by id" updateStatusById( "Update library entry status by id" input: LibraryEntryUpdateStatusByIdInput! ): LibraryEntryUpdateStatusByIdPayload "Update library entry status by media" updateStatusByMedia( "Update library entry status by media" input: LibraryEntryUpdateStatusByMediaInput! ): LibraryEntryUpdateStatusByMediaPayload } "Autogenerated return type of LibraryEntryUpdate." type LibraryEntryUpdatePayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateProgressById." type LibraryEntryUpdateProgressByIdPayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateProgressByMedia." type LibraryEntryUpdateProgressByMediaPayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateRatingById." type LibraryEntryUpdateRatingByIdPayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateRatingByMedia." type LibraryEntryUpdateRatingByMediaPayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateStatusById." type LibraryEntryUpdateStatusByIdPayload { errors: [Error!] libraryEntry: LibraryEntry } "Autogenerated return type of LibraryEntryUpdateStatusByMedia." type LibraryEntryUpdateStatusByMediaPayload { errors: [Error!] libraryEntry: LibraryEntry } "History of user actions for a library entry." type LibraryEvent implements WithTimestamps { "The data that was changed for this library event." changedData: Map! createdAt: ISO8601DateTime! id: ID! "The type of library event." kind: LibraryEventKindEnum! "The library entry related to this library event." libraryEntry: LibraryEntry! "The media related to this library event." media: Media! updatedAt: ISO8601DateTime! "The user who created this library event" user: Profile! } "The connection type for LibraryEvent." type LibraryEventConnection { "A list of edges." edges: [LibraryEventEdge] "A list of nodes." nodes: [LibraryEvent] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type LibraryEventEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: LibraryEvent } type Manga implements Media & WithTimestamps { "The recommended minimum age group for this media" ageRating: AgeRatingEnum "An explanation of why this received the age rating it did" ageRatingGuide: String "The average rating of this media amongst all Kitsu users" averageRating: Float "The rank of this media by rating" averageRatingRank: Int "A large banner image for this media" bannerImage: Image "A list of categories for this media" categories( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCategorySortOption] ): CategoryConnection! "Get a specific chapter of the manga." chapter(number: Int!): Chapter "The number of chapters in this manga." chapterCount: Int "The estimated number of chapters in this manga." chapterCountGuess: Int "The chapters in the manga." chapters( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [ChapterSortOption] ): ChapterConnection "The characters who starred in this media" characters( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaCharacterSortOption] ): MediaCharacterConnection! createdAt: ISO8601DateTime! "A brief (mostly spoiler free) summary or description of the media." description(locales: [String!]): Map! "the day that this media made its final release" endDate: Date "The number of users with this in their favorites" favoritesCount: Int id: ID! "A list of mappings for this media" mappings( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MappingConnection! "Your library entry related to this media." myLibraryEntry: LibraryEntry "A list of your wiki submissions for this media" myWikiSubmissions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption] ): WikiSubmissionConnection! "The time of the next release of this media" nextRelease: ISO8601DateTime "The countries in which the media was originally primarily produced" originCountries: [String!]! "The languages the media was originally produced in" originLanguages: [String!]! "The country in which the media was primarily produced" originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages") "The poster image of this media" posterImage: Image "All posts that tag this media." posts( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [PostSortOption] ): PostConnection! "The companies which helped to produce this media" productions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaProductionConnection! "A list of quotes from this media" quotes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): QuoteConnection! "A list of reactions for this media" reactions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaReactionSortOption] ): MediaReactionConnection! "A list of relationships for this media" relationships( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaRelationshipConnection! "Whether the media is Safe-for-Work" sfw: Boolean! "The URL-friendly identifier of this media" slug: String! "The staff members who worked on this media" staff( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaStaffConnection! "The day that this media first released" startDate: Date "The current releasing status of this media" status: ReleaseStatusEnum! "A secondary type for categorizing Manga." subtype: MangaSubtypeEnum! "Description of when this media is expected to release" tba: String "The titles for this media in various locales" titles: TitlesList! "Anime or Manga." type: String! updatedAt: ISO8601DateTime! "The number of users with this in their library" userCount: Int "The rank of this media by popularity" userCountRank: Int "The number of volumes in this manga." volumeCount: Int "The volumes in the manga." volumes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [VolumeSortOption] ): VolumeConnection } type MangaAmountConsumed implements AmountConsumed { "Total media completed atleast once." completed: Int! id: ID! "Total amount of media." media: Int! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "Total progress of library including reconsuming." units: Int! } type MangaCategoryBreakdown implements CategoryBreakdown { "A Map of category_id -> count for all categories present on the library entries" categories: Map! id: ID! "The profile related to the user for this stat." profile: Profile! "Last time we fully recalculated this stat." recalculatedAt: ISO8601Date! "The total amount of library entries." total: Int! } "The connection type for Manga." type MangaConnection { "A list of edges." edges: [MangaEdge] "A list of nodes." nodes: [Manga] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type MangaEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Manga } "Media Mappings from External Sites (MAL, Anilist, etc..) to Kitsu." type Mapping implements WithTimestamps { createdAt: ISO8601DateTime! "The ID of the media from the external site." externalId: ID! "The name of the site which kitsu media is being linked from." externalSite: MappingExternalSiteEnum! id: ID! "The kitsu object that is mapped." item: MappingItemUnion! updatedAt: ISO8601DateTime! } "The connection type for Mapping." type MappingConnection { "A list of edges." edges: [MappingEdge] "A list of nodes." nodes: [Mapping] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of MappingCreate." type MappingCreatePayload { errors: [Error!] mapping: Mapping } "Autogenerated return type of MappingDelete." type MappingDeletePayload { errors: [Error!] mapping: GenericDelete } "An edge in a connection." type MappingEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Mapping } type MappingMutations { "Create a Mapping" create( "Create a Mapping" input: MappingCreateInput! ): MappingCreatePayload "Delete a Mapping" delete( "Delete a Mapping" input: GenericDeleteInput! ): MappingDeletePayload "Update a Mapping" update( "Update a Mapping" input: MappingUpdateInput! ): MappingUpdatePayload } "Autogenerated return type of MappingUpdate." type MappingUpdatePayload { errors: [Error!] mapping: Mapping } "Information about a Character starring in a Media" type MediaCharacter implements WithTimestamps { "The character" character: Character! createdAt: ISO8601DateTime! id: ID! "The media" media: Media! "The role this character had in the media" role: CharacterRoleEnum! updatedAt: ISO8601DateTime! "The voices of this character" voices( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, locale: [String!], sort: [CharacterVoiceSortOption] ): CharacterVoiceConnection } "The connection type for MediaCharacter." type MediaCharacterConnection { "A list of edges." edges: [MediaCharacterEdge] "A list of nodes." nodes: [MediaCharacter] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type MediaCharacterEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: MediaCharacter } "The connection type for Media." type MediaConnection { "A list of edges." edges: [MediaEdge] "A list of nodes." nodes: [Media] "Information to aid in pagination." pageInfo: PageInfo! } "An edge in a connection." type MediaEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Media } "The role a company played in the creation or localization of a media" type MediaProduction implements WithTimestamps { "The production company" company: Producer! createdAt: ISO8601DateTime! id: ID! "The media" media: Media! "The role this company played" role: MediaProductionRoleEnum! updatedAt: ISO8601DateTime! } "The connection type for MediaProduction." type MediaProductionConnection { "A list of edges." edges: [MediaProductionEdge] "A list of nodes." nodes: [MediaProduction] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type MediaProductionEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: MediaProduction } "A simple review that is 140 characters long expressing how you felt about a media" type MediaReaction implements WithTimestamps { "The author who wrote this reaction." author: Profile! createdAt: ISO8601DateTime! "Whether you have liked this media reaction" hasLiked: Boolean! id: ID! "The library entry related to this reaction." libraryEntry: LibraryEntry! "Users that have liked this reaction" likes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaReactionVoteSortOption] ): ProfileConnection! "The media related to this reaction." media: Media! "When this media reaction was written based on media progress." progress: Int! "The reaction text related to a media." reaction: String! updatedAt: ISO8601DateTime! } "The connection type for MediaReaction." type MediaReactionConnection { "A list of edges." edges: [MediaReactionEdge] "A list of nodes." nodes: [MediaReaction] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of MediaReactionCreate." type MediaReactionCreatePayload { errors: [MediaReactionCreateErrorsUnion!] result: MediaReaction } "Autogenerated return type of MediaReactionDelete." type MediaReactionDeletePayload { errors: [MediaReactionDeleteErrorsUnion!] result: MediaReaction } "An edge in a connection." type MediaReactionEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: MediaReaction } "Autogenerated return type of MediaReactionLike." type MediaReactionLikePayload { errors: [MediaReactionLikeErrorsUnion!] result: MediaReaction } type MediaReactionMutations { "Share a brief reaction to a media, tied to your library entry" create(input: MediaReactionCreateInput!): MediaReactionCreatePayload "Delete a mutation" delete(input: MediaReactionDeleteInput!): MediaReactionDeletePayload "Like a media reaction" like(input: MediaReactionLikeInput!): MediaReactionLikePayload "Remove your like from a media reaction" unlike(input: MediaReactionUnlikeInput!): MediaReactionUnlikePayload } "Autogenerated return type of MediaReactionUnlike." type MediaReactionUnlikePayload { errors: [MediaReactionUnlikeErrorsUnion!] result: MediaReaction } "A relationship from one media to another" type MediaRelationship implements WithTimestamps { createdAt: ISO8601DateTime! "The destination media" destination: Media! "The kind of relationship" kind: MediaRelationshipKindEnum! "The source media" source: Media! updatedAt: ISO8601DateTime! } "The connection type for MediaRelationship." type MediaRelationshipConnection { "A list of edges." edges: [MediaRelationshipEdge] "A list of nodes." nodes: [MediaRelationship] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type MediaRelationshipEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: MediaRelationship } "Information about a person working on an anime" type MediaStaff implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The media" media: Media! "The person" person: Person! "The role this person had in the creation of this media" role: String! updatedAt: ISO8601DateTime! } "The connection type for MediaStaff." type MediaStaffConnection { "A list of edges." edges: [MediaStaffEdge] "A list of nodes." nodes: [MediaStaff] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type MediaStaffEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: MediaStaff } type Mutation { account: AccountMutations! "Create a new Kitsu account" accountCreate(input: AccountCreateInput!): AccountCreatePayload anime: AnimeMutations! block: BlockMutations! episode: EpisodeMutations! favorite: FavoriteMutations! libraryEntry: LibraryEntryMutations! mapping: MappingMutations! mediaReaction: MediaReactionMutations! post: PostMutations! pro: ProMutations! profile: ProfileMutations! profileLink: ProfileLinkMutations! wikiSubmission: WikiSubmissionMutations! } "The mutation requires an authenticated logged-in user session, and none was provided or the session has expired. The recommended action varies depending on your application and whether you provided the bearer token in the `Authorization` header or not. If you did, you should probably attempt to refresh the token, and if that fails, prompt the user to log in again. If you did not provide a bearer token, you should just prompt the user to log in." type NotAuthenticatedError implements Error { "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } "The mutation requires higher permissions than the current user or token has. This is a bit vague, but it generally means you're attempting to modify an object you don't own, or perform an administrator action without being an administrator. It could also mean your token does not have the required scopes to perform the action. The recommended action is to display a message to the user informing them that their action failed and that retrying will generally *not* help." type NotAuthorizedError implements Error { action: String "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } "An object required for your mutation was unable to be located. Usually this means the object you're attempting to modify or delete does not exist. The recommended action is to display a message to the user informing them that their action failed and that retrying will generally *not* help." type NotFoundError implements Error { "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } "Information about pagination in a connection." type PageInfo { "When paginating forwards, the cursor to continue." endCursor: String "When paginating forwards, are there more items?" hasNextPage: Boolean! "When paginating backwards, are there more items?" hasPreviousPage: Boolean! "When paginating backwards, the cursor to continue." startCursor: String } "A Voice Actor, Director, Animator, or other person who works in the creation and localization of media" type Person implements WithTimestamps { "The day when this person was born" birthday: Date createdAt: ISO8601DateTime! "A brief biography or description of the person." description(locales: [String!]): Map! id: ID! "An image of the person" image: Image "Information about the person working on specific media" mediaStaff( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MediaStaffConnection "The primary name of this person." name: String! "The name of this person in various languages" names: TitlesList! "The URL-friendly identifier of this person." slug: String! updatedAt: ISO8601DateTime! "The voice-acting roles this person has had." voices( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): CharacterVoiceConnection } "A post that is visible to your followers and globally in the news-feed." type Post implements WithTimestamps { "The user who created this post." author: Profile! "All comments on this post" comments( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [CommentSortOption] ): CommentConnection! "Unmodified content." content: String "Html formatted content." contentFormatted: String createdAt: ISO8601DateTime! "Users that are watching this post" follows( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): ProfileConnection! id: ID! "If a post is Not-Safe-for-Work." isNsfw: Boolean! "If this post spoils the tagged media." isSpoiler: Boolean! "Users that have liked this post" likes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [PostLikeSortOption] ): ProfileConnection! "When this post was locked." lockedAt: ISO8601DateTime "The user who locked this post." lockedBy: Profile "The reason why this post was locked." lockedReason: LockedReasonEnum "The media tagged in this post." media: Media "The profile of the target user of the post." targetProfile: Profile! updatedAt: ISO8601DateTime! } "The connection type for Post." type PostConnection { "A list of edges." edges: [PostEdge] "A list of nodes." nodes: [Post] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of PostCreate." type PostCreatePayload { errors: [Error!] post: Post } "An edge in a connection." type PostEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Post } "Autogenerated return type of PostLock." type PostLockPayload { errors: [Error!] post: Post } type PostMutations { "Create a Post." create( "Create a Post" input: PostCreateInput! ): PostCreatePayload "Lock a Post." lock( "Lock a Post." input: PostLockInput! ): PostLockPayload "Unlock a Post." unlock( "Unlock a Post." input: PostUnlockInput! ): PostUnlockPayload } "Autogenerated return type of PostUnlock." type PostUnlockPayload { errors: [Error!] post: Post } type ProMutations { "Set the user's discord tag" setDiscord( "Your discord tag (Name#1234)" discord: String! ): ProSetDiscordPayload "Set the user's Hall-of-Fame message" setMessage( "The message to set for your Hall of Fame entry" message: String! ): ProSetMessagePayload "End the user's pro subscription" unsubscribe: ProUnsubscribePayload } "Autogenerated return type of ProSetDiscord." type ProSetDiscordPayload { discord: String! } "Autogenerated return type of ProSetMessage." type ProSetMessagePayload { message: String! } "A subscription to Kitsu PRO" type ProSubscription implements WithTimestamps { "The account which is subscribed to Pro benefits" account: Account! "The billing service used for this subscription" billingService: RecurringBillingServiceEnum! createdAt: ISO8601DateTime! "The tier of Pro the account is subscribed to" tier: ProTierEnum! updatedAt: ISO8601DateTime! } "Autogenerated return type of ProUnsubscribe." type ProUnsubscribePayload { expiresAt: ISO8601DateTime } "A company involved in the creation or localization of media" type Producer implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The name of this production company" name: String! updatedAt: ISO8601DateTime! } "A user profile on Kitsu" type Profile implements WithTimestamps { "A short biographical blurb about this profile" about: String "An avatar image to easily identify this profile" avatarImage: Image "A banner to display at the top of the profile" bannerImage: Image "When the user was born" birthday: ISO8601Date "All comments to any post this user has made." comments( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): CommentConnection! createdAt: ISO8601DateTime! "Favorite media, characters, and people" favorites( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): FavoriteConnection! "People that follow the user" followers( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [FollowSortOption] ): ProfileConnection! "People the user is following" following( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [FollowSortOption] ): ProfileConnection! "What the user identifies as" gender: String id: ID! "The user library of their media" library: Library! "A list of library events for this user" libraryEvents( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Will return all if not supplied" kind: [LibraryEventKindEnum!] = [PROGRESSED, UPDATED, REACTED, RATED, ANNOTATED], "Returns the last _n_ elements from the list." last: Int, sort: [LibraryEventSortOption] ): LibraryEventConnection! "The user's general location" location: String "Media reactions written by this user." mediaReactions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [MediaReactionSortOption] ): MediaReactionConnection! "A non-unique publicly visible name for the profile. Minimum of 3 characters and any valid Unicode character" name: String! "Post pinned to the user profile" pinnedPost: Post "All posts this profile has made." posts( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [PostSortOption] ): PostConnection! "The message this user has submitted to the Hall of Fame" proMessage: String "The PRO level the user currently has" proTier: ProTierEnum "Reviews created by this user" reviews( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption] ): ReviewConnection "Links to the user on other (social media) sites." siteLinks( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): SiteLinkConnection "The URL-friendly identifier for this profile" slug: String "The different stats we calculate for this user." stats: ProfileStats! updatedAt: ISO8601DateTime! "A fully qualified URL to the profile" url: String "The character this profile has declared as their waifu or husbando" waifu: Character "The properly-gendered term for the user's waifu. This should normally only be 'Waifu' or 'Husbando' but some people are jerks, including the person who wrote this..." waifuOrHusbando: String "Wiki submissions created by this user" wikiSubmissions( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption], "Will return all if not supplied" statuses: [WikiSubmissionStatusEnum!] = [DRAFT, PENDING, APPROVED, REJECTED] ): WikiSubmissionConnection! } "The connection type for Profile." type ProfileConnection { "A list of edges." edges: [ProfileEdge] "A list of nodes." nodes: [Profile] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type ProfileEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Profile } "Autogenerated return type of ProfileLinkCreate." type ProfileLinkCreatePayload { errors: [ProfileLinkCreateErrorsUnion!] result: SiteLink } "Autogenerated return type of ProfileLinkDelete." type ProfileLinkDeletePayload { errors: [ProfileLinkDeleteErrorsUnion!] result: SiteLink } type ProfileLinkMutations { "Add a profile link." create(input: ProfileLinkCreateInput!): ProfileLinkCreatePayload "Delete a profile link." delete(input: ProfileLinkDeleteInput!): ProfileLinkDeletePayload "Update a profile link." update(input: ProfileLinkUpdateInput!): ProfileLinkUpdatePayload } "An external site that can be linked to a user." type ProfileLinkSite implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "Name of the external profile website." name: String! updatedAt: ISO8601DateTime! "Regex pattern used to validate the profile link." validateFind: String! "Pattern to be replaced after validation." validateReplace: String! } "Autogenerated return type of ProfileLinkUpdate." type ProfileLinkUpdatePayload { errors: [ProfileLinkUpdateErrorsUnion!] result: SiteLink } type ProfileMutations { "Update the profile of the current user." update(input: ProfileUpdateInput!): ProfileUpdatePayload } "The different types of user stats that we calculate." type ProfileStats { "The total amount of anime you have watched over your whole life." animeAmountConsumed: AnimeAmountConsumed! "The breakdown of the different categories related to the anime you have completed" animeCategoryBreakdown: AnimeCategoryBreakdown! "The total amount of manga you ahve read over your whole life." mangaAmountConsumed: MangaAmountConsumed! "The breakdown of the different categories related to the manga you have completed" mangaCategoryBreakdown: MangaCategoryBreakdown! } "Autogenerated return type of ProfileUpdate." type ProfileUpdatePayload { errors: [ProfileUpdateErrorsUnion!] result: Profile } type Query { "All Anime in the Kitsu database" anime( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): AnimeConnection! "All Anime with specific Status" animeByStatus( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, status: ReleaseStatusEnum! ): AnimeConnection "All blocked user of the current account." blocks( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): BlockConnection "All Categories in the Kitsu Database" categories( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): CategoryConnection "Kitsu account details. You must supply an Authorization token in header." currentAccount: Account "Your Kitsu profile. You must supply an Authorization token in header." currentProfile: Profile "Find a single Anime by ID" findAnimeById(id: ID!): Anime "Find a single Anime by Slug" findAnimeBySlug(slug: String!): Anime "Find a single Category by ID" findCategoryById(id: ID!): Category "Find a single Category by Slug" findCategoryBySlug(slug: String!): Category "Find a single Manga Chapter by ID" findChapterById(id: ID!): Chapter "Find a single Character by ID" findCharacterById(id: ID!): Character "Find a single Character by Slug" findCharacterBySlug(slug: String!): Character "Find a single Library Entry by ID" findLibraryEntryById(id: ID!): LibraryEntry "Find a single Library Event by ID" findLibraryEventById(id: ID!): LibraryEvent "Find a single Manga by ID" findMangaById(id: ID!): Manga "Find a single Manga by Slug" findMangaBySlug(slug: String!): Manga "Find a single Media by ID and Type" findMediaByIdAndType(id: ID!, mediaType: MediaTypeEnum!): Media "Find a single Person by ID" findPersonById(id: ID!): Person "Find a single Person by Slug" findPersonBySlug(slug: String!): Person "Find a single Post by ID" findPostById(id: ID!): Post "Find a single User by ID" findProfileById(id: ID!): Profile "Find a single User by Slug" findProfileBySlug(slug: String!): Profile "Find a single Report by ID" findReportById(id: ID!): Report "Find a single Wiki Submission by ID" findWikiSubmissionById(id: ID!): WikiSubmission "All Franchise in the Kitsu database" franchises( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): FranchiseConnection "List trending media on Kitsu" globalTrending( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum! ): MediaConnection! "List of Library Entries by MediaType and MediaId" libraryEntriesByMedia( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaId: ID!, mediaType: MediaTypeEnum! ): LibraryEntryConnection "List of Library Entries by MediaType" libraryEntriesByMediaType( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum! ): LibraryEntryConnection "List trending media within your network" localTrending( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, mediaType: MediaTypeEnum! ): MediaConnection! "Find a specific Mapping Item by External ID and External Site." lookupMapping(externalId: ID!, externalSite: MappingExternalSiteEnum!): MappingItemUnion "All Manga in the Kitsu database" manga( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): MangaConnection! "All Manga with specific Status" mangaByStatus( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, status: ReleaseStatusEnum! ): MangaConnection "Patrons sorted by a Proprietary Magic Algorithm" patrons( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): ProfileConnection! "Random anime or manga" randomMedia(ageRatings: [AgeRatingEnum!]!, mediaType: MediaTypeEnum!): Media! "All Reports in the Kitsu database" reports( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): ReportConnection "Select all Reports that match with a supplied status." reportsByStatus( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, "Will return all if not supplied" statuses: [ReportStatusEnum!] = [REPORTED, RESOLVED, DECLINED] ): ReportConnection "Search for Anime by title using Algolia. The most relevant results will be at the top." searchAnimeByTitle( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, title: String! ): AnimeConnection! "Search for Manga by title using Algolia. The most relevant results will be at the top." searchMangaByTitle( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, title: String! ): MangaConnection! "Search for any media (Anime, Manga) by title using Algolia. If no media_type is supplied, it will search for both. The most relevant results will be at the top." searchMediaByTitle( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, "Dynamically choose a specific media_type. If left blank, it will return results for both." mediaType: MediaTypeEnum, title: String! ): MediaConnection! "Search for User by username using Algolia. The most relevant results will be at the top." searchProfileByUsername( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, username: String! ): ProfileConnection "Get your current session info" session: Session! "Select all Wiki Submissions that match with a supplied status." wikiSubmissionsByStatuses( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int, sort: [WikiSubmissionSortOption], "Will return all if not supplied" statuses: [WikiSubmissionStatusEnum!] = [DRAFT, PENDING, APPROVED, REJECTED] ): WikiSubmissionConnection } "A quote from a media" type Quote implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The lines of the quote" lines( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): QuoteLineConnection! "The media this quote is excerpted from" media: Media! updatedAt: ISO8601DateTime! } "The connection type for Quote." type QuoteConnection { "A list of edges." edges: [QuoteEdge] "A list of nodes." nodes: [Quote] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type QuoteEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Quote } "A line in a quote" type QuoteLine implements WithTimestamps { "The character who said this line" character: Character! "The line that was spoken" content: String! createdAt: ISO8601DateTime! id: ID! "The quote this line is in" quote: Quote! updatedAt: ISO8601DateTime! } "The connection type for QuoteLine." type QuoteLineConnection { "A list of edges." edges: [QuoteLineEdge] "A list of nodes." nodes: [QuoteLine] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type QuoteLineEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: QuoteLine } "A report made by a user" type Report implements WithTimestamps { createdAt: ISO8601DateTime! "Additional information related to why the report was made" explanation: String id: ID! "The moderator who responded to this report" moderator: Profile "The entity that the report is related to" naughty: ReportItemUnion "The reason for why the report was made" reason: ReportReasonEnum! "The user who made this report" reporter: Profile! "The resolution status for this report" status: ReportStatusEnum! updatedAt: ISO8601DateTime! } "The connection type for Report." type ReportConnection { "A list of edges." edges: [ReportEdge] "A list of nodes." nodes: [Report] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type ReportEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Report } "A media review made by a user" type Review implements WithTimestamps { "The author who wrote this review." author: Profile! "The review data" content: String! createdAt: ISO8601DateTime! "The review data formatted" formattedContent: String! id: ID! "Does this review contain spoilers from the media" isSpoiler: Boolean! "The library entry related to this review." libraryEntry: LibraryEntry! "Users who liked this review" likes( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): ProfileConnection! "The media related to this review." media: Media! "When this review was written based on media progress." progress: Int! "The user rating for this media" rating: Int! "Potentially migrated over from hummingbird." source: String! updatedAt: ISO8601DateTime! } "The connection type for Review." type ReviewConnection { "A list of edges." edges: [ReviewEdge] "A list of nodes." nodes: [Review] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type ReviewEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Review } "Information about a user session" type Session { "The account associated with this session" account: Account "Single sign-on token for Nolt" noltToken: String! "The profile associated with this session" profile: Profile } "A link to a user's profile on an external site." type SiteLink implements WithTimestamps { "The user profile the site is linked to." author: Profile! createdAt: ISO8601DateTime! id: ID! "The actual linked website." site: ProfileLinkSite! updatedAt: ISO8601DateTime! "A fully qualified URL of the user profile on an external site." url: String! } "The connection type for SiteLink." type SiteLinkConnection { "A list of edges." edges: [SiteLinkEdge] "A list of nodes." nodes: [SiteLink] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type SiteLinkEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: SiteLink } "The streaming company." type Streamer implements WithTimestamps { createdAt: ISO8601DateTime! id: ID! "The name of the site that is streaming this media." siteName: String! "Additional media this site is streaming." streamingLinks( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): StreamingLinkConnection! updatedAt: ISO8601DateTime! "Videos of the media being streamed." videos( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): VideoConnection! } "The stream link." type StreamingLink implements Streamable & WithTimestamps { createdAt: ISO8601DateTime! "Spoken language is replaced by language of choice." dubs: [String!]! id: ID! "The media being streamed" media: Media! "Which regions this video is available in." regions: [String!]! "The site that is streaming this media." streamer: Streamer! "Languages this is translated to. Usually placed at bottom of media." subs: [String!]! updatedAt: ISO8601DateTime! "Fully qualified URL for the streaming link." url: String! } "The connection type for StreamingLink." type StreamingLinkConnection { "A list of edges." edges: [StreamingLinkEdge] "A list of nodes." nodes: [StreamingLink] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type StreamingLinkEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: StreamingLink } type TitlesList { "A list of additional, alternative, abbreviated, or unofficial titles" alternatives: [String!] "The official or de facto international title" canonical: String! "The locale code that identifies which title is used as the canonical title" canonicalLocale: String "The list of localized titles keyed by locale" localized(locales: [String!]): Map! "The original title of the media in the original language" original: String "The locale code that identifies which title is used as the original title" originalLocale: String "The title that best matches the user's preferred settings" preferred: String! "The original title, romanized into latin script" romanized: String "The locale code that identifies which title is used as the romanized title" romanizedLocale: String "The title translated into the user's locale" translated: String "The locale code that identifies which title is used as the translated title" translatedLocale: String } "The mutation failed validation. This is usually because the input provided was invalid in some way, such as a missing required field or an invalid value for a field. There may be multiple of this error, one for each failed validation, and the `path` will generally refer to a location in the input parameters, that you can map back to the input fields in your form. The recommended action is to display validation errors to the user, and allow them to correct the input and resubmit." type ValidationError implements Error { "The error code." code: String "A description of the error" message: String! "Which input value this error came from" path: [String!] } "The media video." type Video implements Streamable & WithTimestamps { createdAt: ISO8601DateTime! "Spoken language is replaced by language of choice." dubs: [String!]! "The episode of this video" episode: Episode! id: ID! "Which regions this video is available in." regions: [String!]! "The site that is streaming this media." streamer: Streamer! "Languages this is translated to. Usually placed at bottom of media." subs: [String!]! updatedAt: ISO8601DateTime! "The url of the video." url: String! } "The connection type for Video." type VideoConnection { "A list of edges." edges: [VideoEdge] "A list of nodes." nodes: [Video] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type VideoEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Video } "A manga volume which can contain multiple chapters." type Volume implements Unit & WithTimestamps { "The chapters in this volume." chapters( "Returns the elements in the list that come after the specified cursor." after: String, "Returns the elements in the list that come before the specified cursor." before: String, "Returns the first _n_ elements from the list." first: Int, "Returns the last _n_ elements from the list." last: Int ): ChapterConnection "The number of chapters in this volume." chaptersCount: Int createdAt: ISO8601DateTime! "A brief summary or description of the unit" description(locales: [String!]): Map! id: ID! "The isbn number of this volume." isbn: [String!]! "The manga this volume is in." manga: Manga! "The sequence number of this unit" number: Int! "The date when this chapter was released." published: ISO8601Date "A thumbnail image for the unit" thumbnail: Image "The titles for this unit in various locales" titles: TitlesList! updatedAt: ISO8601DateTime! } "The connection type for Volume." type VolumeConnection { "A list of edges." edges: [VolumeEdge] "A list of nodes." nodes: [Volume] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "An edge in a connection." type VolumeEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: Volume } "A Wiki Submission is used to either create or edit existing data in our database. This will allow a simple and convient way for users to submit issues/corrections without all the work being left to the mods." type WikiSubmission implements WithTimestamps { "The user who created this draft" author: Profile! createdAt: ISO8601DateTime! "The full object that holds all the details for any modifications/additions/deletions made to the entity you are editing. This will be validated using JSON Schema." data: JSON id: ID! "Any additional information that may need to be provided related to the Wiki Submission" notes: String "The status of the Wiki Submission" status: WikiSubmissionStatusEnum! "The title given to the Wiki Submission. This will default to the title of what is being edited." title: String updatedAt: ISO8601DateTime! } "The connection type for WikiSubmission." type WikiSubmissionConnection { "A list of edges." edges: [WikiSubmissionEdge] "A list of nodes." nodes: [WikiSubmission] "Information to aid in pagination." pageInfo: PageInfo! "The total amount of nodes." totalCount: Int! } "Autogenerated return type of WikiSubmissionCreateDraft." type WikiSubmissionCreateDraftPayload { errors: [Error!] wikiSubmission: WikiSubmission } "An edge in a connection." type WikiSubmissionEdge { "A cursor for use in pagination." cursor: String! "The item at the end of the edge." node: WikiSubmission } type WikiSubmissionMutations { "Create a wiki submission draft" createDraft( "Create a wiki submission draft." input: WikiSubmissionCreateDraftInput! ): WikiSubmissionCreateDraftPayload "Submit a wiki submission draft" submitDraft( "Submit a wiki submission draft. This will change the status to pending." input: WikiSubmissionSubmitDraftInput! ): WikiSubmissionSubmitDraftPayload "Update a wiki submission draft" updateDraft( "Update a wiki submission draft." input: WikiSubmissionUpdateDraftInput! ): WikiSubmissionUpdateDraftPayload } "Autogenerated return type of WikiSubmissionSubmitDraft." type WikiSubmissionSubmitDraftPayload { errors: [Error!] wikiSubmission: WikiSubmission } "Autogenerated return type of WikiSubmissionUpdateDraft." type WikiSubmissionUpdateDraftPayload { errors: [Error!] wikiSubmission: WikiSubmission } enum AgeRatingEnum { "Acceptable for all ages" G "Parental guidance suggested; should be safe for preteens and older" PG "Possible lewd or intense themes; should be safe for teens and older" R "Contains adult content or themes; should only be viewed by adults" R18 } enum AnimeSubtypeEnum { MOVIE MUSIC "Original Net Animation (Web Anime)." ONA "Original Video Animation. Anime directly released to video market." OVA "Spinoffs or Extras of the original." SPECIAL TV } enum ChapterSortEnum { CREATED_AT NUMBER UPDATED_AT } enum CharacterRoleEnum { "A background character who generally only appears in a few episodes" BACKGROUND "A character from a different franchise making a (usually brief) appearance" CAMEO "A character who appears throughout a series and is a focal point of the media" MAIN "A character who appears in multiple episodes but is not a main character" RECURRING } enum CharacterVoiceSortEnum { CREATED_AT UPDATED_AT } enum CommentLikeSortEnum { CREATED_AT FOLLOWING } enum CommentSortEnum { CREATED_AT FOLLOWING LIKES_COUNT } enum EpisodeSortEnum { CREATED_AT NUMBER UPDATED_AT } enum ExternalIdentityProviderEnum { "Facebook identity" FACEBOOK } enum FavoriteEnum { ANIME CHARACTER MANGA PERSON } enum FollowSortEnum { CREATED_AT FOLLOWING_FOLLOWED FOLLOWING_FOLLOWER } enum InstallmentSortEnum { ALTERNATIVE_ORDER RELEASE_ORDER } enum InstallmentTagEnum { "Same universe/world/reality/timeline, completely different characters." ALTERNATE_SETTING "Same setting, same characters, story is told differently." ALTERNATE_VERSION "Characters from different media meet in the same story." CROSSOVER "The main story." MAIN_STORY "Takes place sometime during the main storyline." SIDE_STORY "Uses characters of a different series, but is not an alternate setting or story." SPINOFF } enum LibraryEntrySortEnum { CREATED_AT FINISHED_AT MEDIA_TYPE PROGRESS RATING STARTED_AT STATUS TITLE UPDATED_AT } enum LibraryEntryStatusEnum { "The user completed this media." COMPLETED "The user is currently reading or watching this media." CURRENT "The user started but chose not to finish this media." DROPPED "The user started but paused reading or watching this media." ON_HOLD "The user plans to read or watch this media in future." PLANNED } enum LibraryEventKindEnum { "Notes were added/updated." ANNOTATED "Progress or Time Spent was added/updated." PROGRESSED "Rating was added/updated." RATED "Reaction was added/updated." REACTED "Status or Reconsuming was added/updated." UPDATED } enum LibraryEventSortEnum { CREATED_AT UPDATED_AT } enum LockedReasonEnum { CLOSED SPAM TOO_HEATED } enum MangaSubtypeEnum { "Self published work." DOUJIN MANGA "Chinese comics produced in China and in the Greater China region." MANHUA "A style of South Korean comic books and graphic novels" MANHWA NOVEL "Original English Language." OEL ONESHOT } enum MappingExternalSiteEnum { ANIDB ANILIST_ANIME ANILIST_MANGA ANIMENEWSNETWORK AOZORA HULU IMDB_EPISODES MANGAUPDATES MYANIMELIST_ANIME MYANIMELIST_CHARACTERS MYANIMELIST_MANGA MYANIMELIST_PEOPLE MYANIMELIST_PRODUCERS MYDRAMALIST THETVDB THETVDB_SEASON THETVDB_SERIES TRAKT } enum MappingItemEnum { ANIME CATEGORY CHARACTER EPISODE MANGA PERSON PRODUCER } enum MediaCategorySortEnum { ANCESTRY CREATED_AT } enum MediaCharacterSortEnum { CREATED_AT ROLE UPDATED_AT } enum MediaProductionRoleEnum { LICENSOR PRODUCER SERIALIZATION STUDIO } enum MediaReactionSortEnum { CREATED_AT UPDATED_AT UP_VOTES_COUNT } enum MediaReactionVoteSortEnum { CREATED_AT FOLLOWING } "The relationship kind from one media entry to another" enum MediaRelationshipKindEnum { ADAPTATION ALTERNATIVE_SETTING ALTERNATIVE_VERSION CHARACTER FULL_STORY OTHER PARENT_STORY PREQUEL SEQUEL SIDE_STORY SPINOFF SUMMARY } "これはアニメやマンガです" enum MediaTypeEnum { ANIME MANGA } enum PostLikeSortEnum { CREATED_AT FOLLOWING } enum PostSortEnum { CREATED_AT } enum ProTierEnum { "Aozora Pro (only hides ads)" AO_PRO @deprecated(reason: "No longer for sale") "Aozora Pro+ (only hides ads)" AO_PRO_PLUS @deprecated(reason: "No longer for sale") "Top tier of Kitsu Pro" PATRON "Basic tier of Kitsu Pro" PRO } enum ProfileLinksSitesEnum { BATTLENET DAILYMOTION DEVIANTART DISCORD DRIBBBLE FACEBOOK GITHUB GOOGLE IMDB INSTAGRAM KICKSTARTER LASTFM LETTERBOXD MEDIUM MOBCRUSH OSU PATREON PLAYERME RAPTR REDDIT SOUNDCLOUD STEAM TRAKT TUMBLR TWITCH TWITTER VIMEO WEBSITE YOUTUBE } enum RatingSystemEnum { "1-20 in increments of 1 displayed as 1-10 in 0.5 increments" ADVANCED "1-20 in increments of 2 displayed as 5 stars in 0.5 star increments" REGULAR "1-20 displayed as 4 smileys - Awful (1), Meh (8), Good (14) and Great (20)" SIMPLE } enum RecurringBillingServiceEnum { "Billed through Apple In-App Subscription" APPLE "Billed through Google Play Subscription" GOOGLE_PLAY "Bill a PayPal account" PAYPAL "Bill a credit card via Stripe" STRIPE } enum ReleaseSeasonEnum { "Released during the Fall season" FALL "Released during the Spring season" SPRING "Released during the Summer season" SUMMER "Released during the Winter season" WINTER } enum ReleaseStatusEnum { "This media is currently releasing" CURRENT "This media is no longer releasing" FINISHED "The release date has not been announced yet" TBA "This media is not released yet" UNRELEASED "This media is releasing soon" UPCOMING } enum ReportReasonEnum { "No bulli!" BULLYING "Not Safe For Work" NSFW OFFENSIVE OTHER SPAM SPOILER } enum ReportStatusEnum { DECLINED REPORTED RESOLVED } enum SfwFilterPreferenceEnum { "Adult Content Everywhere" NSFW_EVERYWHERE "Limit to Following Feed" NSFW_SOMETIMES "Hide All Adult Content" SFW } enum SitePermissionEnum { "Administrator/staff member of Kitsu" ADMIN "Moderator of community behavior" COMMUNITY_MOD "Maintainer of the Kitsu media database" DATABASE_MOD } enum SiteThemeEnum { "Dark Theme" DARK "Light Theme" LIGHT } enum SortDirection { ASCENDING DESCENDING } enum TitleLanguagePreferenceEnum { "Prefer the most commonly-used title for media" CANONICAL "Prefer the localized title for media" LOCALIZED "Prefer the romanized title for media" ROMANIZED } enum VolumeSortEnum { CREATED_AT NUMBER UPDATED_AT } enum WaifuOrHusbandoEnum { HUSBANDO WAIFU } enum WikiSubmissionSortEnum { CREATED_AT UPDATED_AT } enum WikiSubmissionStatusEnum { APPROVED DRAFT PENDING REJECTED } "A date, expressed as an ISO8601 string" scalar Date "An ISO 8601-encoded date" scalar ISO8601Date "An ISO 8601-encoded datetime" scalar ISO8601DateTime "Represents untyped JSON" scalar JSON "A loose key-value map in GraphQL" scalar Map scalar Upload input AccountChangePasswordInput { "The new password to set" newPassword: String! "The current, existing password for the account" oldPassword: String! } input AccountCreateInput { "The email address to reset the password for" email: String! "An external identity to associate with the account on creation" externalIdentity: AccountExternalIdentityInput "The name of the user" name: String! "The password for the user" password: String! } input AccountExternalIdentityInput { id: String! provider: ExternalIdentityProviderEnum! } input AccountUpdateInput { "The country of the user" country: String "How media titles will get visualized" preferredTitleLanguage: TitleLanguagePreferenceEnum "The preferred rating system" ratingSystem: RatingSystemEnum "The SFW Filter setting" sfwFilterPreference: SfwFilterPreferenceEnum "The theme displayed on Kitsu" siteTheme: SiteThemeEnum "The time zone of the user" timeZone: String } input AnimeCreateInput { ageRating: AgeRatingEnum ageRatingGuide: String bannerImage: Upload description: Map! endDate: Date episodeCount: Int episodeLength: Int posterImage: Upload startDate: Date tba: String titles: TitlesListInput! youtubeTrailerVideoId: String } input AnimeUpdateInput { ageRating: AgeRatingEnum ageRatingGuide: String bannerImage: Upload description: Map endDate: Date episodeCount: Int episodeLength: Int id: ID! posterImage: Upload startDate: Date tba: String titles: TitlesListInput youtubeTrailerVideoId: String } input BlockCreateInput { "The id of the user to block." blockedId: ID! } input BlockDeleteInput { "The id of the block." blockId: ID! } input ChapterSortOption { direction: SortDirection! on: ChapterSortEnum! } input CharacterVoiceSortOption { direction: SortDirection! on: CharacterVoiceSortEnum! } input CommentLikeSortOption { direction: SortDirection! on: CommentLikeSortEnum! } input CommentSortOption { direction: SortDirection! on: CommentSortEnum! } input EpisodeCreateInput { description: Map length: Int mediaId: ID! mediaType: MediaTypeEnum! number: Int! releasedAt: Date thumbnailImage: Upload titles: TitlesListInput! } input EpisodeSortOption { direction: SortDirection! on: EpisodeSortEnum! } input EpisodeUpdateInput { description: Map id: ID! length: Int number: Int releasedAt: Date thumbnailImage: Upload titles: TitlesListInput } input FavoriteCreateInput { "The id of the entry" id: ID! "The type of the entry." type: FavoriteEnum! } input FavoriteDeleteInput { "The id of the favorite entry." favoriteId: ID! } input FollowSortOption { direction: SortDirection! on: FollowSortEnum! } input GenericDeleteInput { id: ID! } input InstallmentSortOption { direction: SortDirection! on: InstallmentSortEnum! } input LibraryEntryCreateInput { finishedAt: ISO8601DateTime mediaId: ID! mediaType: MediaTypeEnum! notes: String private: Boolean = false progress: Int = 0 rating: Int reconsumeCount: Int = 0 reconsuming: Boolean = false startedAt: ISO8601DateTime status: LibraryEntryStatusEnum! volumesOwned: Int = 0 } input LibraryEntrySortOption { direction: SortDirection! on: LibraryEntrySortEnum! } input LibraryEntryUpdateInput { finishedAt: ISO8601DateTime id: ID! notes: String private: Boolean progress: Int rating: Int reconsumeCount: Int reconsuming: Boolean startedAt: ISO8601DateTime status: LibraryEntryStatusEnum volumesOwned: Int } input LibraryEntryUpdateProgressByIdInput { id: ID! progress: Int! } input LibraryEntryUpdateProgressByMediaInput { mediaId: ID! mediaType: MediaTypeEnum! progress: Int! } input LibraryEntryUpdateRatingByIdInput { id: ID! "A number between 2 - 20" rating: Int! } input LibraryEntryUpdateRatingByMediaInput { mediaId: ID! mediaType: MediaTypeEnum! "A number between 2 - 20" rating: Int! } input LibraryEntryUpdateStatusByIdInput { id: ID! status: LibraryEntryStatusEnum! } input LibraryEntryUpdateStatusByMediaInput { mediaId: ID! mediaType: MediaTypeEnum! status: LibraryEntryStatusEnum! } input LibraryEventSortOption { direction: SortDirection! on: LibraryEventSortEnum! } input MappingCreateInput { externalId: ID! externalSite: MappingExternalSiteEnum! itemId: ID! itemType: MappingItemEnum! } input MappingUpdateInput { externalId: ID externalSite: MappingExternalSiteEnum id: ID! itemId: ID itemType: MappingItemEnum } input MediaCategorySortOption { direction: SortDirection! on: MediaCategorySortEnum! } input MediaCharacterSortOption { direction: SortDirection! on: MediaCharacterSortEnum! } input MediaReactionCreateInput { "The ID of the entry in your library to react to" libraryEntryId: ID! "The text of the reaction to the media" reaction: String! } input MediaReactionDeleteInput { "The reaction to delete" mediaReactionId: ID! } input MediaReactionLikeInput { "The reaction to like" mediaReactionId: ID! } input MediaReactionSortOption { direction: SortDirection! on: MediaReactionSortEnum! } input MediaReactionUnlikeInput { "The reaction to remove your like from" mediaReactionId: ID! } input MediaReactionVoteSortOption { direction: SortDirection! on: MediaReactionVoteSortEnum! } input PostCreateInput { content: String! isNsfw: Boolean = false isSpoiler: Boolean = false mediaId: ID mediaType: MediaTypeEnum spoiledUnitId: ID spoiledUnitType: String targetUserId: ID } input PostLikeSortOption { direction: SortDirection! on: PostLikeSortEnum! } input PostLockInput { id: ID! lockedReason: LockedReasonEnum! } input PostSortOption { direction: SortDirection! on: PostSortEnum! } input PostUnlockInput { id: ID! } input ProfileLinkCreateInput { "The website." profileLinkSite: ProfileLinksSitesEnum! "The url of the profile link" url: String! } input ProfileLinkDeleteInput { "The profile link to delete" profileLink: ProfileLinksSitesEnum! } input ProfileLinkUpdateInput { "The website." profileLinkSite: ProfileLinksSitesEnum! "The url of the profile link" url: String! } input ProfileUpdateInput { "About section of the profile." about: String "The birthday of the user." birthday: Date "The preferred gender of the user." gender: String "Your ID or the one of another user." id: ID "The display name of the user" name: String "The slug (@username) of the user" slug: String "The id of the waifu or husbando." waifuId: ID "The user preference of their partner." waifuOrHusbando: WaifuOrHusbandoEnum } input TitlesListInput { alternatives: [String!] canonical: String canonicalLocale: String localized: Map } input VolumeSortOption { direction: SortDirection! on: VolumeSortEnum! } input WikiSubmissionCreateDraftInput { data: JSON! notes: String title: String } input WikiSubmissionSortOption { direction: SortDirection! on: WikiSubmissionSortEnum! } input WikiSubmissionSubmitDraftInput { data: JSON! id: ID! notes: String title: String } input WikiSubmissionUpdateDraftInput { data: JSON! id: ID! notes: String }