Update GraphQL schemas

This commit is contained in:
Timothy Warren 2022-06-08 20:21:50 -04:00
parent 4dc0bb29d2
commit 501062ac37
2 changed files with 6927 additions and 6736 deletions

View File

@ -665,9 +665,13 @@ type InternalPage {
isAdult: Boolean, isAdult: Boolean,
"If the media is officially licensed or a self-published doujin release" "If the media is officially licensed or a self-published doujin release"
isLicensed: Boolean, isLicensed: Boolean,
"Filter media by sites with a online streaming or reading license" "Filter media by sites name with a online streaming or reading license"
licensedBy: String, licensedBy: String,
"Filter media by sites with a online streaming or reading license" "Filter media by sites id with a online streaming or reading license"
licensedById: Int,
"Filter media by sites id with a online streaming or reading license"
licensedById_in: [Int],
"Filter media by sites name with a online streaming or reading license"
licensedBy_in: [String], licensedBy_in: [String],
"Only apply the tags filter argument to tags above this rank. Default: 18" "Only apply the tags filter argument to tags above this rank. Default: 18"
minimumTagRank: Int, minimumTagRank: Int,
@ -999,6 +1003,8 @@ type ListActivity {
isLiked: Boolean isLiked: Boolean
"If the activity is locked and can receive replies" "If the activity is locked and can receive replies"
isLocked: Boolean isLocked: Boolean
"If the activity is pinned to the top of the users activity feed"
isPinned: Boolean
"If the currently authenticated user is subscribed to the activity" "If the currently authenticated user is subscribed to the activity"
isSubscribed: Boolean isSubscribed: Boolean
"The amount of likes the activity has" "The amount of likes the activity has"
@ -1025,6 +1031,11 @@ type ListActivity {
userId: Int userId: Int
} }
type ListActivityOption {
disabled: Boolean
type: MediaListStatus
}
"User's list score statistics" "User's list score statistics"
type ListScoreStats { type ListScoreStats {
meanScore: Int meanScore: Int
@ -1100,6 +1111,8 @@ type Media {
isLocked: Boolean isLocked: Boolean
"If the media is blocked from being recommended to/from" "If the media is blocked from being recommended to/from"
isRecommendationBlocked: Boolean isRecommendationBlocked: Boolean
"If the media is blocked from being reviewed"
isReviewBlocked: Boolean
"Mean score of all the user's scores of the media" "Mean score of all the user's scores of the media"
meanScore: Int meanScore: Int
"The authenticated user's media list entry for the media" "The authenticated user's media list entry for the media"
@ -1292,14 +1305,24 @@ type MediaEdge {
voiceActors(language: StaffLanguage, sort: [StaffSort]): [Staff] voiceActors(language: StaffLanguage, sort: [StaffSort]): [Staff]
} }
"An external link to another site related to the media" "An external link to another site related to the media or staff member"
type MediaExternalLink { type MediaExternalLink {
color: String
"The icon image url of the site. Not available for all links. Transparent PNG 64x64"
icon: String
"The id of the external link" "The id of the external link"
id: Int! id: Int!
"The site location of the external link" isDisabled: Boolean
"Language the site content is in. See Staff language field for values."
language: String
notes: String
"The links website site name"
site: String! site: String!
"The url of the external link" "The links website site id"
url: String! siteId: Int
type: ExternalLinkType
"The url of the external link or base url of link source"
url: String
} }
"List of anime or manga" "List of anime or manga"
@ -1473,7 +1496,7 @@ type MediaSubmission {
changes: [String] changes: [String]
characters: [MediaSubmissionComparison] characters: [MediaSubmissionComparison]
createdAt: Int createdAt: Int
externalLinks: [MediaExternalLink] externalLinks: [MediaSubmissionComparison]
"The id of the submission" "The id of the submission"
id: Int! id: Int!
"Whether the submission is locked" "Whether the submission is locked"
@ -1495,6 +1518,7 @@ type MediaSubmission {
"Media submission with comparison to current data" "Media submission with comparison to current data"
type MediaSubmissionComparison { type MediaSubmissionComparison {
character: MediaCharacter character: MediaCharacter
externalLink: MediaExternalLink
staff: StaffEdge staff: StaffEdge
studio: StudioEdge studio: StudioEdge
submission: MediaSubmissionEdge submission: MediaSubmissionEdge
@ -1506,6 +1530,7 @@ type MediaSubmissionEdge {
characterRole: CharacterRole characterRole: CharacterRole
characterSubmission: Character characterSubmission: Character
dubGroup: String dubGroup: String
externalLink: MediaExternalLink
"The id of the direct submission" "The id of the direct submission"
id: Int id: Int
isMain: Boolean isMain: Boolean
@ -1826,6 +1851,13 @@ type Mutation {
"The id of thread the comment belongs to" "The id of thread the comment belongs to"
threadId: Int threadId: Int
): ThreadComment ): ThreadComment
"Toggle activity to be pinned to the top of the user's activity feed"
ToggleActivityPin(
"Toggle activity id to be pinned"
id: Int,
"If the activity should be pinned or unpinned"
pinned: Boolean
): ActivityUnion
"Toggle the subscription of an activity item" "Toggle the subscription of an activity item"
ToggleActivitySubscription( ToggleActivitySubscription(
"The id of the activity to un/subscribe" "The id of the activity to un/subscribe"
@ -1941,6 +1973,7 @@ type Mutation {
airingNotifications: Boolean, airingNotifications: Boolean,
"The user's anime list options" "The user's anime list options"
animeListOptions: MediaListOptionsInput, animeListOptions: MediaListOptionsInput,
disabledListActivity: [ListActivityOptionInput],
"If the user should see media marked as adult-only" "If the user should see media marked as adult-only"
displayAdultContent: Boolean, displayAdultContent: Boolean,
"Profile highlight color" "Profile highlight color"
@ -1951,6 +1984,8 @@ type Mutation {
notificationOptions: [NotificationOptionInput], notificationOptions: [NotificationOptionInput],
"Profile highlight color" "Profile highlight color"
profileColor: String, profileColor: String,
"Only allow messages from other users the user follows"
restrictMessagesToFollowing: Boolean,
"The user's default list order" "The user's default list order"
rowOrder: String, rowOrder: String,
"The user's list scoring system" "The user's list scoring system"
@ -2181,9 +2216,13 @@ type Page {
isAdult: Boolean, isAdult: Boolean,
"If the media is officially licensed or a self-published doujin release" "If the media is officially licensed or a self-published doujin release"
isLicensed: Boolean, isLicensed: Boolean,
"Filter media by sites with a online streaming or reading license" "Filter media by sites name with a online streaming or reading license"
licensedBy: String, licensedBy: String,
"Filter media by sites with a online streaming or reading license" "Filter media by sites id with a online streaming or reading license"
licensedById: Int,
"Filter media by sites id with a online streaming or reading license"
licensedById_in: [Int],
"Filter media by sites name with a online streaming or reading license"
licensedBy_in: [String], licensedBy_in: [String],
"Only apply the tags filter argument to tags above this rank. Default: 18" "Only apply the tags filter argument to tags above this rank. Default: 18"
minimumTagRank: Int, minimumTagRank: Int,
@ -2475,7 +2514,7 @@ type PageInfo {
lastPage: Int lastPage: Int
"The count on a page" "The count on a page"
perPage: Int perPage: Int
"The total number of items" "The total number of items. Note: This value is not guaranteed to be accurate, do not rely on this for logic"
total: Int total: Int
} }
@ -2609,6 +2648,13 @@ type Query {
"The order the results will be returned in" "The order the results will be returned in"
sort: [CharacterSort] sort: [CharacterSort]
): Character ): Character
"ExternalLinkSource collection query"
ExternalLinkSourceCollection(
"Filter by the link id"
id: Int,
mediaType: ExternalLinkMediaType,
type: ExternalLinkType
): [MediaExternalLink]
"Follow query" "Follow query"
Follower( Follower(
"The order the results will be returned in" "The order the results will be returned in"
@ -2709,9 +2755,13 @@ type Query {
isAdult: Boolean, isAdult: Boolean,
"If the media is officially licensed or a self-published doujin release" "If the media is officially licensed or a self-published doujin release"
isLicensed: Boolean, isLicensed: Boolean,
"Filter media by sites with a online streaming or reading license" "Filter media by sites name with a online streaming or reading license"
licensedBy: String, licensedBy: String,
"Filter media by sites with a online streaming or reading license" "Filter media by sites id with a online streaming or reading license"
licensedById: Int,
"Filter media by sites id with a online streaming or reading license"
licensedById_in: [Int],
"Filter media by sites name with a online streaming or reading license"
licensedBy_in: [String], licensedBy_in: [String],
"Only apply the tags filter argument to tags above this rank. Default: 18" "Only apply the tags filter argument to tags above this rank. Default: 18"
minimumTagRank: Int, minimumTagRank: Int,
@ -3177,6 +3227,8 @@ type RevisionHistory {
character: Character character: Character
"When the mod feed entry was created" "When the mod feed entry was created"
createdAt: Int createdAt: Int
"The external link source the mod feed entry references"
externalLink: MediaExternalLink
"The id of the media" "The id of the media"
id: Int! id: Int!
"The media the mod feed entry references" "The media the mod feed entry references"
@ -3315,7 +3367,7 @@ type Staff {
isFavouriteBlocked: Boolean! isFavouriteBlocked: Boolean!
"The primary language the staff member dub's in" "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" "The primary language of the staff member. Current values: Japanese, English, Korean, Italian, Spanish, Portuguese, French, German, Hebrew, Hungarian, Chinese, Arabic, Filipino, Catalan, Finnish, Turkish, Dutch, Swedish, Thai, Tagalog, Malaysian, Indonesian, Vietnamese, Nepali, Hindi, Urdu"
languageV2: String languageV2: String
"Notes for site moderators" "Notes for site moderators"
modNotes: String modNotes: String
@ -3514,6 +3566,8 @@ type TextActivity {
isLiked: Boolean isLiked: Boolean
"If the activity is locked and can receive replies" "If the activity is locked and can receive replies"
isLocked: Boolean isLocked: Boolean
"If the activity is pinned to the top of the users activity feed"
isPinned: Boolean
"If the currently authenticated user is subscribed to the activity" "If the currently authenticated user is subscribed to the activity"
isSubscribed: Boolean isSubscribed: Boolean
"The amount of likes the activity has" "The amount of likes the activity has"
@ -3868,12 +3922,16 @@ type UserOptions {
activityMergeTime: Int activityMergeTime: Int
"Whether the user receives notifications when a show they are watching aires" "Whether the user receives notifications when a show they are watching aires"
airingNotifications: Boolean airingNotifications: Boolean
"The list activity types the user has disabled from being created from list updates"
disabledListActivity: [ListActivityOption]
"Whether the user has enabled viewing of 18+ content" "Whether the user has enabled viewing of 18+ content"
displayAdultContent: Boolean displayAdultContent: Boolean
"Notification options" "Notification options"
notificationOptions: [NotificationOption] notificationOptions: [NotificationOption]
"Profile highlight color (blue, purple, pink, orange, red, green, gray)" "Profile highlight color (blue, purple, pink, orange, red, green, gray)"
profileColor: String profileColor: String
"Whether the user only allow messages from users they follow"
restrictMessagesToFollowing: Boolean
"The language the user wants to see staff and character names in" "The language the user wants to see staff and character names in"
staffNameLanguage: UserStaffNameLanguage staffNameLanguage: UserStaffNameLanguage
"The user's timezone offset (Auth user only)" "The user's timezone offset (Auth user only)"
@ -4026,6 +4084,7 @@ type YearStats {
enum ActivitySort { enum ActivitySort {
ID ID
ID_DESC ID_DESC
PINNED
} }
"Activity type enum." "Activity type enum."
@ -4077,6 +4136,18 @@ enum CharacterSort {
SEARCH_MATCH SEARCH_MATCH
} }
enum ExternalLinkMediaType {
ANIME
MANGA
STAFF
}
enum ExternalLinkType {
INFO
SOCIAL
STREAMING
}
"Types that can be liked" "Types that can be liked"
enum LikeableType { enum LikeableType {
ACTIVITY ACTIVITY
@ -4654,6 +4725,11 @@ input FuzzyDateInput {
year: Int year: Int
} }
input ListActivityOptionInput {
disabled: Boolean
type: MediaListStatus
}
"An external link to another site related to the media" "An external link to another site related to the media"
input MediaExternalLinkInput { input MediaExternalLinkInput {
"The id of the external link" "The id of the external link"

View File

@ -73,8 +73,10 @@ interface Media {
ageRatingGuide: String ageRatingGuide: String
"The average rating of this media amongst all Kitsu users" "The average rating of this media amongst all Kitsu users"
averageRating: Float averageRating: Float
"The rank of this media by rating"
averageRatingRank: Int
"A large banner image for this media" "A large banner image for this media"
bannerImage: Image! bannerImage: Image
"A list of categories for this media" "A list of categories for this media"
categories( categories(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -133,10 +135,26 @@ interface Media {
): WikiSubmissionConnection! ): WikiSubmissionConnection!
"The time of the next release of this media" "The time of the next release of this media"
nextRelease: ISO8601DateTime 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" "The country in which the media was primarily produced"
originalLocale: String originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages")
"The poster image of this media" "The poster image of this media"
posterImage: Image! 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" "The companies which helped to produce this media"
productions( productions(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -198,6 +216,8 @@ interface Media {
type: String! type: String!
"The number of users with this in their library" "The number of users with this in their library"
userCount: Int userCount: Int
"The rank of this media by popularity"
userCountRank: Int
} }
"Media that is streamable." "Media that is streamable."
@ -230,6 +250,8 @@ interface WithTimestamps {
updatedAt: ISO8601DateTime! updatedAt: ISO8601DateTime!
} }
union AccountCreateErrorsUnion = ValidationError
"Objects which are Favoritable" "Objects which are Favoritable"
union FavoriteItemUnion = Anime | Character | Manga | Person union FavoriteItemUnion = Anime | Character | Manga | Person
@ -274,6 +296,12 @@ type Account implements WithTimestamps {
updatedAt: ISO8601DateTime! updatedAt: ISO8601DateTime!
} }
"Autogenerated return type of AccountCreate"
type AccountCreatePayload {
errors: [AccountCreateErrorsUnion!]
result: Account
}
type AccountMutations { type AccountMutations {
"Send a password reset email" "Send a password reset email"
sendPasswordReset( sendPasswordReset(
@ -294,8 +322,10 @@ type Anime implements Episodic & Media & WithTimestamps {
ageRatingGuide: String ageRatingGuide: String
"The average rating of this media amongst all Kitsu users" "The average rating of this media amongst all Kitsu users"
averageRating: Float averageRating: Float
"The rank of this media by rating"
averageRatingRank: Int
"A large banner image for this media" "A large banner image for this media"
bannerImage: Image! bannerImage: Image
"A list of categories for this media" "A list of categories for this media"
categories( categories(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -371,10 +401,26 @@ type Anime implements Episodic & Media & WithTimestamps {
): WikiSubmissionConnection! ): WikiSubmissionConnection!
"The time of the next release of this media" "The time of the next release of this media"
nextRelease: ISO8601DateTime 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" "The country in which the media was primarily produced"
originalLocale: String originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages")
"The poster image of this media" "The poster image of this media"
posterImage: Image! 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" "The companies which helped to produce this media"
productions( productions(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -454,6 +500,8 @@ type Anime implements Episodic & Media & WithTimestamps {
updatedAt: ISO8601DateTime! updatedAt: ISO8601DateTime!
"The number of users with this in their library" "The number of users with this in their library"
userCount: Int userCount: Int
"The rank of this media by popularity"
userCountRank: Int
"Video id for a trailer on YouTube" "Video id for a trailer on YouTube"
youtubeTrailerVideoId: String youtubeTrailerVideoId: String
} }
@ -906,7 +954,11 @@ type FranchiseEdge {
node: Franchise node: Franchise
} }
type Generic implements Error { type GenericDelete {
id: ID!
}
type GenericError implements Error {
"The error code." "The error code."
code: String code: String
"A description of the error" "A description of the error"
@ -915,10 +967,6 @@ type Generic implements Error {
path: [String!] path: [String!]
} }
type GenericDelete {
id: ID!
}
type Image { type Image {
"A blurhash-encoded version of this image" "A blurhash-encoded version of this image"
blurhash: String blurhash: String
@ -1273,8 +1321,10 @@ type Manga implements Media & WithTimestamps {
ageRatingGuide: String ageRatingGuide: String
"The average rating of this media amongst all Kitsu users" "The average rating of this media amongst all Kitsu users"
averageRating: Float averageRating: Float
"The rank of this media by rating"
averageRatingRank: Int
"A large banner image for this media" "A large banner image for this media"
bannerImage: Image! bannerImage: Image
"A list of categories for this media" "A list of categories for this media"
categories( categories(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -1350,10 +1400,26 @@ type Manga implements Media & WithTimestamps {
): WikiSubmissionConnection! ): WikiSubmissionConnection!
"The time of the next release of this media" "The time of the next release of this media"
nextRelease: ISO8601DateTime 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" "The country in which the media was primarily produced"
originalLocale: String originalLocale: String @deprecated(reason: "Replaced with originCountries and originLanguages")
"The poster image of this media" "The poster image of this media"
posterImage: Image! 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" "The companies which helped to produce this media"
productions( productions(
"Returns the elements in the list that come after the specified cursor." "Returns the elements in the list that come after the specified cursor."
@ -1418,6 +1484,8 @@ type Manga implements Media & WithTimestamps {
updatedAt: ISO8601DateTime! updatedAt: ISO8601DateTime!
"The number of users with this in their library" "The number of users with this in their library"
userCount: Int userCount: Int
"The rank of this media by popularity"
userCountRank: Int
"The number of volumes in this manga." "The number of volumes in this manga."
volumeCount: Int volumeCount: Int
} }
@ -1639,6 +1707,8 @@ type MediaReaction implements WithTimestamps {
"The author who wrote this reaction." "The author who wrote this reaction."
author: Profile! author: Profile!
createdAt: ISO8601DateTime! createdAt: ISO8601DateTime!
"Whether you have liked this media reaction"
hasLiked: Boolean!
id: ID! id: ID!
"The library entry related to this reaction." "The library entry related to this reaction."
libraryEntry: LibraryEntry! libraryEntry: LibraryEntry!
@ -1718,6 +1788,8 @@ type MediaStaffEdge {
type Mutation { type Mutation {
account: AccountMutations! account: AccountMutations!
"Create a new Kitsu account"
accountCreate(input: AccountCreateInput!): AccountCreatePayload
anime: AnimeMutations! anime: AnimeMutations!
episode: EpisodeMutations! episode: EpisodeMutations!
libraryEntry: LibraryEntryMutations! libraryEntry: LibraryEntryMutations!
@ -2471,7 +2543,7 @@ type Report implements WithTimestamps {
"The moderator who responded to this report" "The moderator who responded to this report"
moderator: Profile moderator: Profile
"The entity that the report is related to" "The entity that the report is related to"
naughty: ReportItemUnion! naughty: ReportItemUnion
"The reason for why the report was made" "The reason for why the report was made"
reason: ReportReasonEnum! reason: ReportReasonEnum!
"The user who made this report" "The user who made this report"
@ -2672,11 +2744,34 @@ type TitlesList {
"A list of additional, alternative, abbreviated, or unofficial titles" "A list of additional, alternative, abbreviated, or unofficial titles"
alternatives: [String!] alternatives: [String!]
"The official or de facto international title" "The official or de facto international title"
canonical: String canonical: String!
"The locale code that identifies which title is used as the canonical title" "The locale code that identifies which title is used as the canonical title"
canonicalLocale: String canonicalLocale: String
"The list of localized titles keyed by locale" "The list of localized titles keyed by locale"
localized(locales: [String!]): Map! 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
}
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." "The media video."
@ -2875,6 +2970,11 @@ enum EpisodeSortEnum {
UPDATED_AT UPDATED_AT
} }
enum ExternalIdentityProviderEnum {
"Facebook identity"
FACEBOOK
}
enum FollowSortEnum { enum FollowSortEnum {
CREATED_AT CREATED_AT
FOLLOWING_FOLLOWED FOLLOWING_FOLLOWED
@ -3134,6 +3234,39 @@ enum WikiSubmissionStatusEnum {
REJECTED 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 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 AnimeCreateInput { input AnimeCreateInput {
ageRating: AgeRatingEnum ageRating: AgeRatingEnum
ageRatingGuide: String ageRatingGuide: String
@ -3373,21 +3506,3 @@ input WikiSubmissionUpdateDraftInput {
id: ID! id: ID!
notes: String notes: String
} }
"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