From 7415c3bbd68ea0d965c49e3c3f53cd2d9423fdba Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Thu, 6 Jan 2022 12:56:46 -0500 Subject: [PATCH] Update Anilist GraphQL schema --- src/AnimeClient/API/Anilist/schema.graphql | 235 ++++++++++++++++++--- 1 file changed, 208 insertions(+), 27 deletions(-) diff --git a/src/AnimeClient/API/Anilist/schema.graphql b/src/AnimeClient/API/Anilist/schema.graphql index a153ba61..40adeb9c 100644 --- a/src/AnimeClient/API/Anilist/schema.graphql +++ b/src/AnimeClient/API/Anilist/schema.graphql @@ -12,7 +12,7 @@ union ActivityUnion = ListActivity | MessageActivity | TextActivity union LikeableUnion = ActivityReply | ListActivity | MessageActivity | TextActivity | Thread | ThreadComment "Notification union type" -union NotificationUnion = ActivityLikeNotification | ActivityMentionNotification | ActivityMessageNotification | ActivityReplyLikeNotification | ActivityReplyNotification | ActivityReplySubscribedNotification | AiringNotification | FollowingNotification | RelatedMediaAdditionNotification | ThreadCommentLikeNotification | ThreadCommentMentionNotification | ThreadCommentReplyNotification | ThreadCommentSubscribedNotification | ThreadLikeNotification +union NotificationUnion = ActivityLikeNotification | ActivityMentionNotification | ActivityMessageNotification | ActivityReplyLikeNotification | ActivityReplyNotification | ActivityReplySubscribedNotification | AiringNotification | FollowingNotification | MediaDataChangeNotification | MediaDeletionNotification | MediaMergeNotification | RelatedMediaAdditionNotification | ThreadCommentLikeNotification | ThreadCommentMentionNotification | ThreadCommentReplyNotification | ThreadCommentSubscribedNotification | ThreadLikeNotification "Notification for when a activity is liked" type ActivityLikeNotification { @@ -227,6 +227,8 @@ type AniChartUser { type Character { "The character's age. Note this is a string, not an int, it may contain further text and additional ages." age: String + "The characters blood type" + bloodType: String "The character's birth date" dateOfBirth: FuzzyDate "A general description of the character" @@ -262,7 +264,7 @@ type Character { name: CharacterName "The url for the character page on the AniList website" siteUrl: String - updatedAt: Int @deprecated(reason : "No data available") + updatedAt: Int @deprecated(reason: "No data available") } type CharacterConnection { @@ -314,15 +316,21 @@ type CharacterName { middle: String "The character's full name in their native language" native: String + "The currently authenticated users preferred name language. Default romaji for non-authenticated" + userPreferred: String } "A submission for a character that features in an anime or manga" type CharacterSubmission { + "Data Mod assigned to handle the submission" + assignee: User "Character that the submission is referencing" character: Character createdAt: Int "The id of the submission" id: Int! + "Whether the submission is locked" + locked: Boolean "Inner details of submission status" notes: String source: String @@ -543,6 +551,7 @@ type InternalPage { sort: [AiringSort] ): [AiringSchedule] characterSubmissions( + assigneeId: Int, characterId: Int, "The order the results will be returned in" sort: [SubmissionSort], @@ -654,6 +663,8 @@ type InternalPage { id_not_in: [Int], "Filter by if the media's intended for 18+ adult audiences" isAdult: Boolean, + "If the media is officially licensed or a self-published doujin release" + isLicensed: Boolean, "Filter media by sites with a online streaming or reading license" licensedBy: String, "Filter media by sites with a online streaming or reading license" @@ -772,6 +783,7 @@ type InternalPage { userName: String ): [MediaList] mediaSubmissions( + assigneeId: Int, mediaId: Int, "The order the results will be returned in" sort: [SubmissionSort], @@ -864,7 +876,7 @@ type InternalPage { "Filter by user who created the recommendation" userId: Int ): [Recommendation] - reports: [Report] + reports(reportedId: Int, reporterId: Int): [Report] reviews( "Filter by Review id" id: Int, @@ -906,6 +918,7 @@ type InternalPage { sort: [StaffSort] ): [Staff] staffSubmissions( + assigneeId: Int, "The order the results will be returned in" sort: [SubmissionSort], staffId: Int, @@ -958,9 +971,15 @@ type InternalPage { "Filter by the user id of the thread's creator" userId: Int ): [Thread] + userBlockSearch( + "Filter by search query" + search: String + ): [User] users( "Filter by the user id" id: Int, + "Filter to moderators only if true" + isModerator: Boolean, "Filter by the name of the user" name: String, "Filter by search query" @@ -1073,6 +1092,8 @@ type Media { isAdult: Boolean "If the media is marked as favourite by the current authenticated user" isFavourite: Boolean! + "If the media is blocked from being added to favourites" + isFavouriteBlocked: Boolean! "If the media is officially licensed or a self-published doujin release" isLicensed: Boolean "Locked media may not be added to lists our favorited. This may be due to the entry pending for deletion or other reasons." @@ -1120,7 +1141,7 @@ type Media { siteUrl: String "Source type the media was adapted from." source( - "Provide 2 to use new version 2 of sources enum" + "Provide 2 or 3 to use new version 2 or 3 of sources enum" version: Int ): MediaSource "The staff who produced the media" @@ -1205,6 +1226,40 @@ type MediaCoverImage { medium: String } +"Notification for when a media entry's data was changed in a significant way impacting users' list tracking" +type MediaDataChangeNotification { + "The reason for the media data change" + context: String + "The time the notification was created at" + createdAt: Int + "The id of the Notification" + id: Int! + "The media that received data changes" + media: Media + "The id of the media that received data changes" + mediaId: Int! + "The reason for the media data change" + reason: String + "The type of notification" + type: NotificationType +} + +"Notification for when a media tracked in a user's list is deleted from the site" +type MediaDeletionNotification { + "The reason for the media deletion" + context: String + "The time the notification was created at" + createdAt: Int + "The title of the deleted media" + deletedMediaTitle: String + "The id of the Notification" + id: Int! + "The reason for the media deletion" + reason: String + "The type of notification" + type: NotificationType +} + "Media connection edge" type MediaEdge { "Media specific character name" @@ -1298,13 +1353,13 @@ type MediaList { "List of anime or manga" type MediaListCollection { "A map of media list entry arrays grouped by custom lists" - customLists(asArray: Boolean): [[MediaList]] @deprecated(reason : "Not GraphQL spec compliant, use lists field instead.") + customLists(asArray: Boolean): [[MediaList]] @deprecated(reason: "Not GraphQL spec compliant, use lists field instead.") "If there is another chunk" hasNextChunk: Boolean "Grouped media list entries" lists: [MediaListGroup] "A map of media list entry arrays grouped by status" - statusLists(asArray: Boolean): [[MediaList]] @deprecated(reason : "Not GraphQL spec compliant, use lists field instead.") + statusLists(asArray: Boolean): [[MediaList]] @deprecated(reason: "Not GraphQL spec compliant, use lists field instead.") "The owner of the list" user: User } @@ -1330,10 +1385,10 @@ type MediaListOptions { "The score format the user is using for media lists" scoreFormat: ScoreFormat "The list theme options for both lists" - sharedTheme: Json @deprecated(reason : "No longer used") + sharedTheme: Json @deprecated(reason: "No longer used") "If the shared theme should be used instead of the individual list themes" - sharedThemeEnabled: Boolean @deprecated(reason : "No longer used") - useLegacyLists: Boolean @deprecated(reason : "No longer used") + sharedThemeEnabled: Boolean @deprecated(reason: "No longer used") + useLegacyLists: Boolean @deprecated(reason: "No longer used") } "A user's list options for anime or manga lists" @@ -1349,7 +1404,27 @@ type MediaListTypeOptions { "If the completed sections of the list should be separated by format" splitCompletedSectionByFormat: Boolean "The list theme options" - theme: Json @deprecated(reason : "This field has not yet been fully implemented and may change without warning") + theme: Json @deprecated(reason: "This field has not yet been fully implemented and may change without warning") +} + +"Notification for when a media entry is merged into another for a user who had it on their list" +type MediaMergeNotification { + "The reason for the media data change" + context: String + "The time the notification was created at" + createdAt: Int + "The title of the deleted media" + deletedMediaTitles: [String] + "The id of the Notification" + id: Int! + "The media that was merged into" + media: Media + "The id of the media that was merged into" + mediaId: Int! + "The reason for the media merge" + reason: String + "The type of notification" + type: NotificationType } "The ranking of a media in a particular time span and format compared to other media" @@ -1374,7 +1449,7 @@ type MediaRank { "A media's statistics" type MediaStats { - airingProgression: [AiringProgression] @deprecated(reason : "Replaced by MediaTrends") + airingProgression: [AiringProgression] @deprecated(reason: "Replaced by MediaTrends") scoreDistribution: [ScoreDistribution] statusDistribution: [StatusDistribution] } @@ -1393,12 +1468,16 @@ type MediaStreamingEpisode { "Media submission" type MediaSubmission { + "Data Mod assigned to handle the submission" + assignee: User changes: [String] characters: [MediaSubmissionComparison] createdAt: Int externalLinks: [MediaExternalLink] "The id of the submission" id: Int! + "Whether the submission is locked" + locked: Boolean media: Media notes: String relations: [MediaEdge] @@ -1458,6 +1537,8 @@ type MediaTag { name: String! "The relevance ranking of the tag out of the 100 for this media" rank: Int + "The user who submitted the tag" + userId: Int } "The official titles of the media in various languages" @@ -1738,6 +1819,8 @@ type Mutation { comment: String, "The comment id, required for updating" id: Int, + "If the comment tree should be locked. (Mod Only)" + locked: Boolean, "The id of thread comment to reply to" parentCommentId: Int, "The id of thread the comment belongs to" @@ -1872,6 +1955,8 @@ type Mutation { rowOrder: String, "The user's list scoring system" scoreFormat: ScoreFormat, + "The language the user wants to see staff and character names in" + staffNameLanguage: UserStaffNameLanguage, "Timezone offset format: -?HH:MM" timezone: String, "User's title language" @@ -2094,6 +2179,8 @@ type Page { id_not_in: [Int], "Filter by if the media's intended for 18+ adult audiences" isAdult: Boolean, + "If the media is officially licensed or a self-published doujin release" + isLicensed: Boolean, "Filter media by sites with a online streaming or reading license" licensedBy: String, "Filter media by sites with a online streaming or reading license" @@ -2368,6 +2455,8 @@ type Page { users( "Filter by the user id" id: Int, + "Filter to moderators only if true" + isModerator: Boolean, "Filter by the name of the user" name: String, "Filter by search query" @@ -2618,6 +2707,8 @@ type Query { id_not_in: [Int], "Filter by if the media's intended for 18+ adult audiences" isAdult: Boolean, + "If the media is officially licensed or a self-published doujin release" + isLicensed: Boolean, "Filter media by sites with a online streaming or reading license" licensedBy: String, "Filter media by sites with a online streaming or reading license" @@ -2958,6 +3049,8 @@ type Query { User( "Filter by the user id" id: Int, + "Filter to moderators only if true" + isModerator: Boolean, "Filter by the name of the user" name: String, "Filter by search query" @@ -3014,6 +3107,7 @@ type RelatedMediaAdditionNotification { } type Report { + cleared: Boolean "When the entry data was created" createdAt: Int id: Int! @@ -3179,6 +3273,8 @@ type SiteTrendEdge { type Staff { "The person's age in years" age: Int + "The persons blood type" + bloodType: String "Media the actor voiced characters in. (Same data as characters with media as node instead of characters)" characterMedia( onList: Boolean, @@ -3218,7 +3314,7 @@ type Staff { "If the staff member is blocked from being added to favourites" isFavouriteBlocked: Boolean! "The primary language the staff member dub's in" - language: StaffLanguage @deprecated(reason : "Replaced with languageV2") + language: StaffLanguage @deprecated(reason: "Replaced with languageV2") "The primary language of the staff member. Current values: Japanese, English, Korean, Italian, Spanish, Portuguese, French, German, Hebrew, Hungarian, Chinese, Arabic, Filipino, Catalan" languageV2: String "Notes for site moderators" @@ -3247,7 +3343,7 @@ type Staff { submissionStatus: Int "Submitter for the submission" submitter: User - updatedAt: Int @deprecated(reason : "No data available") + updatedAt: Int @deprecated(reason: "No data available") "[startYear, endYear] (If the 2nd value is not present staff is still active)" yearsActive: [Int] } @@ -3291,6 +3387,8 @@ type StaffName { middle: String "The person's full name in their native language" native: String + "The currently authenticated users preferred name language. Default romaji for non-authenticated" + userPreferred: String } "Voice actor role for a character" @@ -3314,9 +3412,13 @@ type StaffStats { "A submission for a staff that features in an anime or manga" type StaffSubmission { + "Data Mod assigned to handle the submission" + assignee: User createdAt: Int "The id of the submission" id: Int! + "Whether the submission is locked" + locked: Boolean "Inner details of submission status" notes: String source: String @@ -3511,6 +3613,8 @@ type ThreadComment { id: Int! "If the currently authenticated user liked the comment" isLiked: Boolean + "If the comment tree is locked and may not receive replies or edits" + isLocked: Boolean "The amount of likes the comment has" likeCount: Int! "The users who liked the comment" @@ -3651,6 +3755,8 @@ type User { "The user's banner images" bannerImage: String bans: Json + "When the user's account was created. (Does not exist for accounts created before 2020)" + createdAt: Int "Custom donation badge text" donatorBadge: String "The donation tier of the user" @@ -3670,18 +3776,22 @@ type User { isFollowing: Boolean "The user's media list options" mediaListOptions: MediaListOptions + "The user's moderator roles if they are a site moderator" + moderatorRoles: [ModRole] "If the user is a moderator or data moderator" - moderatorStatus: String + moderatorStatus: String @deprecated(reason: "Deprecated. Replaced with moderatorRoles field.") "The name of the user" name: String! "The user's general options" options: UserOptions + "The user's previously used names." + previousNames: [UserPreviousName] "The url for the user page on the AniList website" siteUrl: String "The users anime & manga list statistics" statistics: UserStatisticTypes "The user's statistics" - stats: UserStats @deprecated(reason : "Deprecated. Replaced with statistics field.") + stats: UserStats @deprecated(reason: "Deprecated. Replaced with statistics field.") "The number of unread notifications the user has" unreadNotificationCount: Int "When the user's data was last updated" @@ -3747,7 +3857,9 @@ type UserModData { alts: [User] bans: Json counts: Json + email: String ip: Json + privacy: Int } "A user's general options" @@ -3762,12 +3874,24 @@ type UserOptions { notificationOptions: [NotificationOption] "Profile highlight color (blue, purple, pink, orange, red, green, gray)" profileColor: String + "The language the user wants to see staff and character names in" + staffNameLanguage: UserStaffNameLanguage "The user's timezone offset (Auth user only)" timezone: String "The language the user wants to see media titles in" titleLanguage: UserTitleLanguage } +"A user's previous name" +type UserPreviousName { + "When the user first changed from this name." + createdAt: Int + "A previous name of the user." + name: String + "When the user most recently changed from this name." + updatedAt: Int +} + type UserReleaseYearStatistic { chaptersRead: Int! count: Int! @@ -4127,24 +4251,36 @@ enum MediaSort { "Source type the media was adapted from" enum MediaSource { - "Version 2 only. Japanese Anime" + "Version 2+ only. Japanese Anime" ANIME - "Version 2 only. Self-published works" + "Version 3 only. Comics excluding manga" + COMIC + "Version 2+ only. Self-published works" DOUJINSHI + "Version 3 only. Games excluding video games" + GAME "Written work published in volumes" LIGHT_NOVEL + "Version 3 only. Live action media such as movies or TV show" + LIVE_ACTION "Asian comic book" MANGA - "Version 2 only. Written works not published in volumes" + "Version 3 only. Multimedia project" + MULTIMEDIA_PROJECT + "Version 2+ only. Written works not published in volumes" NOVEL "An original production not based of another work" ORIGINAL "Other" OTHER + "Version 3 only. Picture book" + PICTURE_BOOK "Video game" VIDEO_GAME "Video game driven primary by text and narrative" VISUAL_NOVEL + "Version 3 only. Written works published online" + WEB_NOVEL } "The current releasing status of the media" @@ -4198,6 +4334,36 @@ enum ModActionType { RESET } +"Mod role enums" +enum ModRole { + "An AniList administrator" + ADMIN + "An anime data moderator" + ANIME_DATA + "A community moderator" + COMMUNITY + "An AniList developer" + DEVELOPER + "A discord community moderator" + DISCORD_COMMUNITY + "A lead anime data moderator" + LEAD_ANIME_DATA + "A lead community moderator" + LEAD_COMMUNITY + "A head developer of AniList" + LEAD_DEVELOPER + "A lead manga data moderator" + LEAD_MANGA_DATA + "A lead social media moderator" + LEAD_SOCIAL_MEDIA + "A manga data moderator" + MANGA_DATA + "A retired moderator" + RETIRED + "A social media moderator" + SOCIAL_MEDIA +} + "Notification type enum" enum NotificationType { "A user has liked your activity" @@ -4216,6 +4382,12 @@ enum NotificationType { AIRING "A user has followed you" FOLLOWING + "An anime or manga has had a data change that affects how a user may track it in their lists" + MEDIA_DATA_CHANGE + "An anime or manga on the user's list has been deleted from the site" + MEDIA_DELETION + "Anime or manga entries on the user's list have been merged into a single entry" + MEDIA_MERGE "A new anime or manga has been added to the site where its related media is on the user's list" RELATED_MEDIA_ADDITION "A user has liked your forum comment" @@ -4399,6 +4571,16 @@ enum UserSort { WATCHED_TIME_DESC } +"The language the user wants to see staff and character names in" +enum UserStaffNameLanguage { + "The staff or character's name in their native language" + NATIVE + "The romanization of the staff or character's native name" + ROMAJI + "The romanization of the staff or character's native name, with western name ordering" + ROMAJI_WESTERN +} + "User statistics sort enum" enum UserStatisticsSort { COUNT @@ -4427,6 +4609,14 @@ enum UserTitleLanguage { ROMAJI_STYLISED } +"ISO 3166-1 alpha-2 country code" +scalar CountryCode + +"8 digit long date integer (YYYYMMDD). Unknown dates represented by 0. E.g. 2016: 20160000, May 1976: 19760500" +scalar FuzzyDateInt + +scalar Json + input AiringScheduleInput { airingAt: Int episode: Int @@ -4521,12 +4711,3 @@ input StaffNameInput { "The person's full name in their native language" native: String } - - -scalar Json - -"ISO 3166-1 alpha-2 country code" -scalar CountryCode - -"8 digit long date integer (YYYYMMDD). Unknown dates represented by 0. E.g. 2016: 20160000, May 1976: 19760500" -scalar FuzzyDateInt \ No newline at end of file