diff --git a/seerr-api.yml b/seerr-api.yml index bf9d88271..a29d98c5d 100644 --- a/seerr-api.yml +++ b/seerr-api.yml @@ -7,7 +7,7 @@ info: Two primary authentication methods are supported: - - **Cookie Authentication**: A valid sign-in to the `/auth/plex` or `/auth/local` will generate a valid authentication cookie. + - **Cookie Authentication**: A valid sign-in to the `/auth/plex`, `/auth/jellyfin`, or `/auth/local` will generate a valid authentication cookie. - **API Key Authentication**: Sign-in is also possible by passing an `X-Api-Key` header along with a valid API Key generated by Seerr. tags: - name: public @@ -48,19 +48,96 @@ servers: components: schemas: - Blacklist: + SeerrStatus: + type: object + properties: + version: + type: string + example: 1.0.0 + commitTag: + type: string + updateAvailable: + type: boolean + commitsBehind: + type: integer + restartRequired: + type: boolean + ServerStats: + type: object + properties: + version: + type: string + example: '1.0.0' + totalRequests: + type: integer + example: 100 + totalMediaItems: + type: integer + example: 100 + tz: + type: string + nullable: true + example: Asia/Tokyo + appDataPath: + type: string + example: /app/config + AppDataStatus: + type: object + properties: + appData: + type: boolean + example: true + appDataPath: + type: string + example: /app/config + appDataPermissions: + type: boolean + example: true + PostBlacklistRequest: type: object properties: tmdbId: - type: number + type: integer example: 1 title: type: string media: $ref: '#/components/schemas/MediaInfo' userId: - type: number + type: integer example: 1 + BlacklistItem: + type: object + properties: + user: + $ref: '#/components/schemas/User' + createdAt: + type: string + example: 2024-04-21T01:55:44.000Z + id: + type: integer + example: 1 + mediaType: + type: string + example: movie + title: + type: string + example: Dune + tmdbId: + type: integer + example: 438631 + blacklistedTags: + type: string + example: 'horror,thriller,naughty' + BlacklistPage: + type: object + properties: + pageInfo: + $ref: '#/components/schemas/PageInfo' + results: + type: array + items: + $ref: '#/components/schemas/BlacklistItem' Watchlist: type: object properties: @@ -69,7 +146,7 @@ components: example: 1 readOnly: true tmdbId: - type: number + type: integer example: 1 ratingKey: type: string @@ -77,6 +154,9 @@ components: type: string title: type: string + mediaType: + type: string + example: movie media: $ref: '#/components/schemas/MediaInfo' createdAt: @@ -89,6 +169,18 @@ components: readOnly: true requestedBy: $ref: '#/components/schemas/User' + WatchlistItem: + type: object + properties: + tmdbId: + type: integer + example: 1 + ratingKey: + type: string + type: + type: string + title: + type: string User: type: object properties: @@ -116,7 +208,7 @@ components: example: 1 readOnly: true permissions: - type: number + type: integer example: 0 avatar: type: string @@ -130,7 +222,7 @@ components: example: '2020-09-02T05:02:23.000Z' readOnly: true requestCount: - type: number + type: integer example: 5 readOnly: true required: @@ -169,42 +261,42 @@ components: nullable: true example: 'en' movieQuotaLimit: - type: number + type: integer nullable: true description: 'Maximum number of movie requests allowed' example: 10 movieQuotaDays: - type: number + type: integer nullable: true description: 'Time period in days for movie quota' example: 30 tvQuotaLimit: - type: number + type: integer nullable: true description: 'Maximum number of TV requests allowed' example: 5 tvQuotaDays: - type: number + type: integer nullable: true description: 'Time period in days for TV quota' example: 14 globalMovieQuotaDays: - type: number + type: integer nullable: true description: 'Global movie quota days setting' example: 30 globalMovieQuotaLimit: - type: number + type: integer nullable: true description: 'Global movie quota limit setting' example: 10 globalTvQuotaLimit: - type: number + type: integer nullable: true description: 'Global TV quota limit setting' example: 5 globalTvQuotaDays: - type: number + type: integer nullable: true description: 'Global TV quota days setting' example: 14 @@ -218,6 +310,100 @@ components: nullable: true description: 'Enable watchlist sync for TV' example: false + UsersPage: + type: object + properties: + pageInfo: + $ref: '#/components/schemas/PageInfo' + results: + type: array + items: + $ref: '#/components/schemas/User' + CreateUserRequest: + type: object + properties: + email: + type: string + example: 'hey@itsme.com' + username: + type: string + permissions: + type: integer + UpdateUsersRequest: + type: object + properties: + ids: + type: array + items: + type: integer + permissions: + type: integer + PasswordPageInfo: + type: object + properties: + hasPassword: + type: boolean + example: true + UpdatePasswordRequest: + type: object + properties: + currentPassword: + type: string + nullable: true + newPassword: + type: string + required: + - newPassword + ResetPasswordRequest: + type: object + properties: + email: + type: string + required: + - email + ResetPasswordByGuidRequest: + type: object + properties: + password: + type: string + required: + - password + ResetPasswordResponse: + type: object + properties: + status: + type: string + example: 'ok' + LogoutResponse: + type: object + properties: + status: + type: string + example: 'ok' + PermissionSettings: + type: object + properties: + permissions: + type: integer + example: 2 + UpdatePermissionSettingsRequest: + type: object + properties: + permissions: + type: integer + required: + - permissions + PushSubscription: + type: object + properties: + endpoint: + type: string + p256dh: + type: string + auth: + type: string + userAgent: + type: string MainSettings: type: object properties: @@ -243,13 +429,13 @@ components: type: boolean example: true mediaServerType: - type: number + type: integer example: 1 newPlexLogin: type: boolean example: true defaultPermissions: - type: number + type: integer example: 32 enableSpecialEpisodes: type: boolean @@ -276,7 +462,7 @@ components: type: string example: '' port: - type: number + type: integer example: 8080 useSsl: type: boolean @@ -300,26 +486,145 @@ components: type: boolean example: false forceMinTtl: - type: number + type: integer example: 0 forceMaxTtl: - type: number + type: integer example: -1 - PlexLibrary: + ImageCacheStats: + type: object + properties: + size: + type: integer + example: 123456 + imageCount: + type: integer + example: 123 + ImageCache: + type: object + properties: + tmdb: + $ref: '#/components/schemas/ImageCacheStats' + avatar: + $ref: '#/components/schemas/ImageCacheStats' + DnsCacheStats: + type: object + properties: + size: + type: integer + example: 1 + maxSize: + type: integer + example: 500 + hits: + type: integer + example: 19 + misses: + type: integer + example: 1 + failures: + type: integer + example: 0 + ipv4Fallbacks: + type: integer + example: 0 + hitRate: + type: number + example: 0.95 + DnsCacheEntryAddresses: + type: object + properties: + ipv4: + type: integer + example: 1 + ipv6: + type: integer + example: 1 + DnsCacheEntry: + type: object + properties: + addresses: + $ref: '#/components/schemas/DnsCacheEntryAddresses' + activeAddress: + type: string + example: 127.0.0.1 + family: + type: integer + example: 4 + age: + type: integer + example: 10 + ttl: + type: integer + example: 10 + networkErrors: + type: integer + example: 0 + hits: + type: integer + example: 1 + misses: + type: integer + example: 1 + DnsCache: + type: object + properties: + stats: + $ref: '#/components/schemas/DnsCacheStats' + entries: + type: array + items: + $ref: '#/components/schemas/DnsCacheEntry' + ApiCacheStats: + type: object + properties: + hits: + type: integer + misses: + type: integer + keys: + type: integer + ksize: + type: integer + vsize: + type: integer + ApiCache: type: object properties: id: type: string + example: cache-id name: type: string - example: Movies - enabled: - type: boolean - example: false - required: - - id - - name - - enabled + example: cache name + stats: + $ref: '#/components/schemas/ApiCacheStats' + CacheResponse: + type: object + properties: + imageCache: + $ref: '#/components/schemas/ImageCache' + dnsCache: + $ref: '#/components/schemas/DnsCache' + apiCaches: + type: array + items: + $ref: '#/components/schemas/ApiCache' + LogItem: + type: object + properties: + label: + type: string + example: server + level: + type: string + example: info + message: + type: string + example: Server ready on port 5055 + timestamp: + type: string + example: '2020-12-15T16:20:00.069Z' PlexSettings: type: object properties: @@ -335,7 +640,7 @@ components: type: string example: '127.0.0.1' port: - type: number + type: integer example: 32400 useSsl: type: boolean @@ -344,7 +649,7 @@ components: type: array readOnly: true items: - $ref: '#/components/schemas/PlexLibrary' + $ref: '#/components/schemas/MediaLibrary' webAppUrl: type: string nullable: true @@ -364,7 +669,7 @@ components: type: string example: '127.0.0.1' port: - type: number + type: integer example: 32400 uri: type: string @@ -373,7 +678,7 @@ components: type: boolean example: true status: - type: number + type: integer example: 200 message: type: string @@ -474,7 +779,31 @@ components: - provides - owned - connection - JellyfinLibrary: + JellyfinUser: + type: object + properties: + id: + type: string + username: + type: string + thumb: + type: string + email: + type: string + PlexUser: + type: object + properties: + id: + type: string + title: + type: string + username: + type: string + email: + type: string + thumb: + type: string + MediaLibrary: type: object properties: id: @@ -489,6 +818,33 @@ components: - id - name - enabled + MediaLibrarySyncRequest: + type: object + properties: + cancel: + type: boolean + example: false + start: + type: boolean + example: false + MediaLibrarySyncStatus: + type: object + properties: + running: + type: boolean + example: false + progress: + type: number + example: 0 + total: + type: integer + example: 100 + currentLibrary: + $ref: '#/components/schemas/MediaLibrary' + libraries: + type: array + items: + $ref: '#/components/schemas/MediaLibrary' JellyfinSettings: type: object properties: @@ -515,7 +871,7 @@ components: type: array readOnly: true items: - $ref: '#/components/schemas/JellyfinLibrary' + $ref: '#/components/schemas/MediaLibrary' serverID: type: string readOnly: true @@ -533,6 +889,21 @@ components: type: string enum: [tvdb, tmdb] example: 'tvdb' + MetadataTestRequest: + type: object + properties: + tmdb: + type: boolean + example: true + tvdb: + type: boolean + example: true + MetadataTestResponse: + type: object + properties: + message: + type: string + example: 'Successfully connected to TVDB' TautulliSettings: type: object properties: @@ -541,7 +912,7 @@ components: nullable: true example: 'tautulli.example.com' port: - type: number + type: integer nullable: true example: 8181 useSsl: @@ -553,11 +924,32 @@ components: externalUrl: type: string nullable: true + Region: + type: object + properties: + iso_3166_1: + type: string + example: US + english_name: + type: string + example: United States of America + Language: + type: object + properties: + iso_639_1: + type: string + example: en + english_name: + type: string + example: English + name: + type: string + example: English RadarrSettings: type: object properties: id: - type: number + type: integer example: 0 readOnly: true name: @@ -567,7 +959,7 @@ components: type: string example: '127.0.0.1' port: - type: number + type: integer example: 7878 apiKey: type: string @@ -578,7 +970,7 @@ components: baseUrl: type: string activeProfileId: - type: number + type: integer example: 1 activeProfileName: type: string @@ -616,11 +1008,47 @@ components: - is4k - minimumAvailability - isDefault + RadarrServiceResponse: + type: object + properties: + server: + $ref: '#/components/schemas/RadarrSettings' + profiles: + $ref: '#/components/schemas/ServiceProfile' + ServarrTestRequest: + type: object + properties: + hostname: + type: string + example: '127.0.0.1' + port: + type: integer + example: 7878 + apiKey: + type: string + example: yourapikey + useSsl: + type: boolean + example: false + baseUrl: + type: string + required: + - hostname + - port + - apiKey + - useSsl + ServarrTestResponse: + type: object + properties: + profiles: + type: array + items: + $ref: '#/components/schemas/ServiceProfile' SonarrSettings: type: object properties: id: - type: number + type: integer example: 0 readOnly: true name: @@ -630,7 +1058,7 @@ components: type: string example: '127.0.0.1' port: - type: number + type: integer example: 8989 apiKey: type: string @@ -641,7 +1069,7 @@ components: baseUrl: type: string activeProfileId: - type: number + type: integer example: 1 activeProfileName: type: string @@ -650,13 +1078,13 @@ components: type: string example: '/tv/' activeLanguageProfileId: - type: number + type: integer example: 1 activeAnimeProfileId: - type: number + type: integer nullable: true activeAnimeLanguageProfileId: - type: number + type: integer nullable: true activeAnimeProfileName: type: string @@ -695,11 +1123,18 @@ components: - is4k - enableSeasonFolders - isDefault + SonarrServiceResponse: + type: object + properties: + server: + $ref: '#/components/schemas/SonarrSettings' + profiles: + $ref: '#/components/schemas/ServiceProfile' ServarrTag: type: object properties: id: - type: number + type: integer example: 1 label: type: string @@ -718,7 +1153,7 @@ components: - title properties: id: - type: number + type: integer example: 1234 mediaType: type: string @@ -730,13 +1165,13 @@ components: backdropPath: type: string voteCount: - type: number + type: integer voteAverage: type: number genreIds: type: array items: - type: number + type: integer overview: type: string example: 'Overview of the movie' @@ -763,7 +1198,7 @@ components: type: object properties: id: - type: number + type: integer example: 1234 mediaType: type: string @@ -775,13 +1210,13 @@ components: backdropPath: type: string voteCount: - type: number + type: integer voteAverage: type: number genreIds: type: array items: - type: number + type: integer overview: type: string example: 'Overview of the movie' @@ -806,7 +1241,7 @@ components: type: object properties: id: - type: number + type: integer example: 12345 profilePath: type: string @@ -822,20 +1257,179 @@ components: oneOf: - $ref: '#/components/schemas/MovieResult' - $ref: '#/components/schemas/TvResult' + PaginatedResponse: + type: object + properties: + page: + type: integer + example: 1 + totalPages: + type: integer + example: 20 + totalResults: + type: integer + example: 200 + PaginatedSearchResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + anyOf: + - $ref: '#/components/schemas/MovieResult' + - $ref: '#/components/schemas/TvResult' + - $ref: '#/components/schemas/PersonResult' + PaginatedKeywordSearchResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/Keyword' + PaginatedCompanySearchResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/Company' + PaginatedMoviesResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/MovieResult' + PaginatedDiscoverMoviesByGenreResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + genre: + $ref: '#/components/schemas/Genre' + results: + type: array + items: + $ref: '#/components/schemas/MovieResult' + PaginatedDiscoverMoviesByLanguageResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + language: + $ref: '#/components/schemas/SpokenLanguage' + results: + type: array + items: + $ref: '#/components/schemas/MovieResult' + PaginatedDiscoverMoviesByStudioResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + studio: + $ref: '#/components/schemas/ProductionCompany' + results: + type: array + items: + $ref: '#/components/schemas/MovieResult' + PaginatedTvResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/TvResult' + PaginatedDiscoverTvByGenreResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + genre: + $ref: '#/components/schemas/Genre' + results: + type: array + items: + $ref: '#/components/schemas/TvResult' + PaginatedDiscoverTvByLanguageResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + language: + $ref: '#/components/schemas/SpokenLanguage' + results: + type: array + items: + $ref: '#/components/schemas/TvResult' + PaginatedDiscoverTvByNetworkResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + network: + $ref: '#/components/schemas/Network' + results: + type: array + items: + $ref: '#/components/schemas/TvResult' + PaginatedDiscoverTrendingResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + anyOf: + - $ref: '#/components/schemas/MovieResult' + - $ref: '#/components/schemas/TvResult' + PaginatedWatchlistResponse: + allOf: + - $ref: '#/components/schemas/PaginatedResponse' + - type: object + properties: + results: + type: array + items: + $ref: '#/components/schemas/WatchlistItem' Genre: type: object properties: id: - type: number + type: integer example: 1 name: type: string example: Adventure + GenreSliderItem: + type: object + properties: + id: + type: integer + example: 1 + backdrops: + type: array + items: + type: string + name: + type: string + example: Genre Name Company: type: object properties: id: - type: number + type: integer example: 1 logo_path: type: string @@ -846,7 +1440,7 @@ components: type: object properties: id: - type: number + type: integer example: 1 logoPath: type: string @@ -859,7 +1453,7 @@ components: type: object properties: id: - type: number + type: integer example: 1 logoPath: type: string @@ -881,7 +1475,7 @@ components: type: string example: Trailer for some movie (1978) size: - type: number + type: integer example: 1080 type: type: string @@ -902,7 +1496,7 @@ components: type: object properties: id: - type: number + type: integer example: 123 readOnly: true imdbId: @@ -983,7 +1577,7 @@ components: type: string example: '2017-07-12T00:00:00.000Z' type: - type: number + type: integer example: 1 revenue: type: number @@ -1005,7 +1599,7 @@ components: voteAverage: type: number voteCount: - type: number + type: integer credits: type: object properties: @@ -1021,7 +1615,7 @@ components: type: object properties: id: - type: number + type: integer example: 1 name: type: string @@ -1037,44 +1631,44 @@ components: watchProviders: type: array items: - $ref: '#/components/schemas/WatchProviders' + $ref: '#/components/schemas/WatchProvider' Episode: type: object properties: id: - type: number + type: integer name: type: string airDate: type: string nullable: true episodeNumber: - type: number + type: integer overview: type: string productionCode: type: string seasonNumber: - type: number + type: integer showId: - type: number + type: integer stillPath: type: string nullable: true voteAverage: type: number voteCount: - type: number + type: integer Season: type: object properties: id: - type: number + type: integer airDate: type: string nullable: true episodeCount: - type: number + type: integer name: type: string overview: @@ -1082,7 +1676,7 @@ components: posterPath: type: string seasonNumber: - type: number + type: integer episodes: type: array items: @@ -1091,7 +1685,7 @@ components: type: object properties: id: - type: number + type: integer example: 123 backdropPath: type: string @@ -1117,11 +1711,11 @@ components: type: object properties: id: - type: number + type: integer name: type: string gender: - type: number + type: integer profilePath: type: string nullable: true @@ -1156,9 +1750,9 @@ components: items: $ref: '#/components/schemas/ProductionCompany' numberOfEpisodes: - type: number + type: integer numberOfSeason: - type: number + type: integer originCountry: type: array items: @@ -1201,7 +1795,7 @@ components: voteAverage: type: number voteCount: - type: number + type: integer credits: type: object properties: @@ -1224,16 +1818,155 @@ components: watchProviders: type: array items: - $ref: '#/components/schemas/WatchProviders' + $ref: '#/components/schemas/WatchProvider' + Ratings: + type: object + properties: + title: + type: string + example: Mulan + year: + type: integer + example: 2020 + url: + type: string + example: 'http://www.rottentomatoes.com/m/mulan_2020/' + criticsScore: + type: number + example: 85 + criticsRating: + type: string + enum: ['Rotten', 'Fresh', 'Certified Fresh'] + audienceScore: + type: number + example: 65 + audienceRating: + type: string + enum: ['Spilled', 'Upright'] + IMDbRatings: + type: object + properties: + title: + type: string + example: I am Legend + url: + type: string + example: 'https://www.imdb.com/title/tt0480249' + criticsScore: + type: number + example: 6.5 + CombinedMovieRatings: + type: object + properties: + rt: + $ref: '#/components/schemas/Ratings' + imdb: + $ref: '#/components/schemas/IMDbRatings' + Quota: + type: object + properties: + days: + type: integer + example: 7 + limit: + type: integer + example: 10 + used: + type: integer + example: 6 + remaining: + type: integer + example: 4 + restricted: + type: boolean + example: false + UserQuota: + type: object + properties: + movie: + $ref: '#/components/schemas/Quota' + tv: + $ref: '#/components/schemas/Quota' + MediaRequestsPage: + type: object + properties: + pageInfo: + $ref: '#/components/schemas/PageInfo' + results: + type: array + items: + $ref: '#/components/schemas/MediaRequest' + SeasonsAll: + type: string + enum: + - all + PostRequest: + type: object + properties: + mediaType: + type: string + enum: [movie, tv] + example: movie + mediaId: + type: integer + example: 123 + tvdbId: + type: integer + example: 123 + seasons: + oneOf: + - type: array + items: + type: integer + minimum: 0 + - $ref: '#/components/schemas/SeasonsAll' + is4k: + type: boolean + example: false + serverId: + type: integer + profileId: + type: integer + rootFolder: + type: string + languageProfileId: + type: integer + userId: + type: integer + nullable: true + required: + - mediaType + - mediaId + RequestsCounts: + type: object + properties: + total: + type: integer + movie: + type: integer + tv: + type: integer + pending: + type: integer + approved: + type: integer + declined: + type: integer + processing: + type: integer + available: + type: integer + completed: + type: integer MediaRequest: type: object properties: id: - type: number + type: integer example: 123 readOnly: true status: - type: number + type: integer example: 0 description: Status of the request. 1 = PENDING APPROVAL, 2 = APPROVED, 3 = DECLINED readOnly: true @@ -1258,9 +1991,9 @@ components: type: boolean example: false serverId: - type: number + type: integer profileId: - type: number + type: integer rootFolder: type: string required: @@ -1270,17 +2003,17 @@ components: type: object properties: id: - type: number + type: integer readOnly: true tmdbId: - type: number + type: integer readOnly: true tvdbId: - type: number + type: integer readOnly: true nullable: true status: - type: number + type: integer example: 0 description: Availability of the media. 1 = `UNKNOWN`, 2 = `PENDING`, 3 = `PROCESSING`, 4 = `PARTIALLY_AVAILABLE`, 5 = `AVAILABLE`, 6 = `DELETED` requests: @@ -1296,14 +2029,23 @@ components: type: string example: '2020-09-12T10:00:27.000Z' readOnly: true + MediaInfoPage: + type: object + properties: + pageInfo: + $ref: '#/components/schemas/PageInfo' + results: + type: array + items: + $ref: '#/components/schemas/MediaInfo' Cast: type: object properties: id: - type: number + type: integer example: 123 castId: - type: number + type: integer example: 1 character: type: string @@ -1311,12 +2053,12 @@ components: creditId: type: string gender: - type: number + type: integer name: type: string example: Some Persons Name order: - type: number + type: integer profilePath: type: string nullable: true @@ -1324,12 +2066,12 @@ components: type: object properties: id: - type: number + type: integer example: 123 creditId: type: string gender: - type: number + type: integer name: type: string example: Some Persons Name @@ -1359,10 +2101,10 @@ components: type: string nullable: true tvdbId: - type: number + type: integer nullable: true tvrageId: - type: number + type: integer nullable: true twitterId: type: string @@ -1371,7 +2113,7 @@ components: type: object properties: id: - type: number + type: integer example: 1 name: type: string @@ -1380,13 +2122,20 @@ components: type: object properties: page: - type: number + description: The current page number. + type: integer example: 1 + pageSize: + description: The number of results per page. + type: integer + example: 20 pages: - type: number + description: The total number of pages of results. + type: integer example: 10 results: - type: number + description: The total number of results. + type: integer example: 100 DiscordSettings: type: object @@ -1395,7 +2144,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1417,7 +2166,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1431,7 +2180,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 WebhookSettings: type: object @@ -1440,7 +2189,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1461,7 +2210,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1483,7 +2232,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1500,7 +2249,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1511,6 +2260,13 @@ components: type: string sound: type: string + PushoverSound: + type: object + properties: + name: + type: string + description: + type: string GotifySettings: type: object properties: @@ -1518,7 +2274,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1534,7 +2290,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1560,7 +2316,7 @@ components: type: boolean example: false types: - type: number + type: integer example: 2 options: type: object @@ -1575,7 +2331,7 @@ components: type: string example: 127.0.0.1 smtpPort: - type: number + type: integer example: 465 secure: type: boolean @@ -1620,7 +2376,7 @@ components: type: object properties: id: - type: number + type: integer example: 1 name: type: string @@ -1652,12 +2408,12 @@ components: type: object properties: id: - type: number + type: integer example: 1 originalLanguage: type: string episodeCount: - type: number + type: integer overview: type: string originCountry: @@ -1667,7 +2423,7 @@ components: originalName: type: string voteCount: - type: number + type: integer name: type: string mediaType: @@ -1685,7 +2441,7 @@ components: genreIds: type: array items: - type: number + type: integer posterPath: type: string originalTitle: @@ -1706,12 +2462,12 @@ components: type: object properties: id: - type: number + type: integer example: 1 originalLanguage: type: string episodeCount: - type: number + type: integer overview: type: string originCountry: @@ -1721,7 +2477,7 @@ components: originalName: type: string voteCount: - type: number + type: integer name: type: string mediaType: @@ -1739,7 +2495,7 @@ components: genreIds: type: array items: - type: number + type: integer posterPath: type: string originalTitle: @@ -1758,15 +2514,34 @@ components: type: string mediaInfo: $ref: '#/components/schemas/MediaInfo' + CombinedCredits: + type: object + properties: + cast: + type: array + items: + $ref: '#/components/schemas/CreditCast' + crew: + type: array + items: + $ref: '#/components/schemas/CreditCrew' + id: + type: integer Keyword: type: object properties: id: - type: number + type: integer example: 1 name: type: string example: 'anime' + KeywordError: + type: object + properties: + message: + type: string + example: 'Unable to retrieve keyword data.' SpokenLanguage: type: object properties: @@ -1780,11 +2555,11 @@ components: name: type: string example: 'English' - Collection: + MediaCollection: type: object properties: id: - type: number + type: integer example: 123 name: type: string @@ -1810,7 +2585,7 @@ components: type: string example: covid 25 seasonCount: - type: number + type: integer example: 1 status: type: string @@ -1844,20 +2619,20 @@ components: type: object properties: seasonNumber: - type: number + type: integer example: 1 monitored: type: boolean example: true year: - type: number + type: integer example: 2015 path: type: string profileId: - type: number + type: integer languageProfileId: - type: number + type: integer seasonFolder: type: boolean monitored: @@ -1867,12 +2642,12 @@ components: runtime: type: number tvdbId: - type: number + type: integer example: 12345 tvRageId: - type: number + type: integer tvMazeId: - type: number + type: integer firstAired: type: string lastInfoSync: @@ -1904,13 +2679,13 @@ components: type: object properties: votes: - type: number + type: integer value: - type: number + type: integer qualityProfileId: - type: number + type: integer id: - type: number + type: integer nullable: true rootFolderPath: type: string @@ -1942,7 +2717,7 @@ components: discordEnabled: type: boolean discordEnabledTypes: - type: number + type: integer nullable: true discordId: type: string @@ -1977,56 +2752,83 @@ components: type: object properties: discord: - type: number + type: integer email: - type: number + type: integer pushbullet: - type: number + type: integer pushover: - type: number + type: integer slack: - type: number + type: integer telegram: - type: number + type: integer webhook: - type: number + type: integer webpush: - type: number - WatchProviders: - type: array - items: - type: object - properties: - iso_3166_1: - type: string - link: - type: string - buy: - type: array - items: - $ref: '#/components/schemas/WatchProviderDetails' - flatrate: - items: - $ref: '#/components/schemas/WatchProviderDetails' + type: integer + WatchProvider: + type: object + properties: + iso_3166_1: + type: string + link: + type: string + buy: + type: array + items: + $ref: '#/components/schemas/WatchProviderDetails' + flatrate: + items: + $ref: '#/components/schemas/WatchProviderDetails' WatchProviderDetails: type: object properties: displayPriority: - type: number + type: integer logoPath: type: string id: - type: number + type: integer name: type: string + UserWatchData: + type: object + properties: + recentlyWatched: + type: array + items: + $ref: '#/components/schemas/MediaInfo' + playCount: + type: integer + MediaWatchData: + type: object + properties: + playCount7Days: + type: integer + playCount30Days: + type: integer + playCount: + type: integer + users: + type: array + items: + $ref: '#/components/schemas/User' + MediaWatchCombinedData: + type: object + properties: + data: + $ref: '#/components/schemas/MediaWatchData' + data4k: + $ref: '#/components/schemas/MediaWatchData' Issue: type: object properties: id: - type: number + type: integer example: 1 issueType: - type: number + type: integer example: 1 media: $ref: '#/components/schemas/MediaInfo' @@ -2038,11 +2840,37 @@ components: type: array items: $ref: '#/components/schemas/IssueComment' + IssuesPage: + type: object + properties: + pageInfo: + $ref: '#/components/schemas/PageInfo' + results: + type: array + items: + $ref: '#/components/schemas/Issue' + IssuesCounts: + type: object + properties: + total: + type: integer + video: + type: integer + audio: + type: integer + subtitles: + type: integer + others: + type: integer + open: + type: integer + closed: + type: integer IssueComment: type: object properties: id: - type: number + type: integer example: 1 user: $ref: '#/components/schemas/User' @@ -2053,10 +2881,10 @@ components: type: object properties: id: - type: number + type: integer example: 1 type: - type: number + type: integer example: 1 title: type: string @@ -2099,12 +2927,11 @@ components: example: 'Some material may be inappropriate for children under 13.' nullable: true order: - type: number + type: integer example: 3 nullable: true required: - certification - CertificationResponse: type: object properties: @@ -2123,6 +2950,15 @@ components: - certification: 'PG' meaning: 'Some material may not be suitable for children under 10.' order: 2 + CertificationError: + type: object + properties: + status: + type: integer + example: 500 + message: + type: string + example: Unable to retrieve movie certifications. securitySchemes: cookieAuth: type: apiKey @@ -2147,19 +2983,7 @@ paths: content: application/json: schema: - type: object - properties: - version: - type: string - example: 1.0.0 - commitTag: - type: string - updateAvailable: - type: boolean - commitsBehind: - type: number - restartRequired: - type: boolean + $ref: '#/components/schemas/SeerrStatus' /status/appdata: get: summary: Get application data volume status @@ -2173,17 +2997,7 @@ paths: content: application/json: schema: - type: object - properties: - appData: - type: boolean - example: true - appDataPath: - type: string - example: /app/config - appDataPermissions: - type: boolean - example: true + $ref: '#/components/schemas/AppDataStatus' /settings/main: get: summary: Get main settings @@ -2227,7 +3041,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/MainSettings' + $ref: '#/components/schemas/NetworkSettings' post: summary: Update network settings description: Updates network settings with the provided values. @@ -2319,7 +3133,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/JellyfinLibrary' + $ref: '#/components/schemas/MediaLibrary' /settings/jellyfin/users: get: summary: Get Jellyfin Users @@ -2335,16 +3149,7 @@ paths: schema: type: array items: - type: object - properties: - username: - type: string - id: - type: string - thumb: - type: string - email: - type: string + $ref: '#/components/schemas/JellyfinUser' /settings/jellyfin/sync: get: summary: Get status of full Jellyfin library sync @@ -2357,23 +3162,7 @@ paths: content: application/json: schema: - type: object - properties: - running: - type: boolean - example: false - progress: - type: number - example: 0 - total: - type: number - example: 100 - currentLibrary: - $ref: '#/components/schemas/JellyfinLibrary' - libraries: - type: array - items: - $ref: '#/components/schemas/JellyfinLibrary' + $ref: '#/components/schemas/MediaLibrarySyncStatus' post: summary: Start full Jellyfin library sync description: Runs a full Jellyfin library sync and returns the progress in a JSON array. @@ -2383,37 +3172,14 @@ paths: content: application/json: schema: - type: object - properties: - cancel: - type: boolean - example: false - start: - type: boolean - example: false + $ref: '#/components/schemas/MediaLibrarySyncRequest' responses: '200': description: Status of Jellyfin sync content: application/json: schema: - type: object - properties: - running: - type: boolean - example: false - progress: - type: number - example: 0 - total: - type: number - example: 100 - currentLibrary: - $ref: '#/components/schemas/JellyfinLibrary' - libraries: - type: array - items: - $ref: '#/components/schemas/JellyfinLibrary' + $ref: '#/components/schemas/MediaLibrarySyncStatus' /settings/plex: get: summary: Get Plex settings @@ -2474,7 +3240,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlexLibrary' + $ref: '#/components/schemas/MediaLibrary' /settings/plex/sync: get: summary: Get status of full Plex library scan @@ -2487,23 +3253,7 @@ paths: content: application/json: schema: - type: object - properties: - running: - type: boolean - example: false - progress: - type: number - example: 0 - total: - type: number - example: 100 - currentLibrary: - $ref: '#/components/schemas/PlexLibrary' - libraries: - type: array - items: - $ref: '#/components/schemas/PlexLibrary' + $ref: '#/components/schemas/MediaLibrarySyncStatus' post: summary: Start full Plex library scan description: Runs a full Plex library scan and returns the progress in a JSON array. @@ -2513,37 +3263,14 @@ paths: content: application/json: schema: - type: object - properties: - cancel: - type: boolean - example: false - start: - type: boolean - example: false + $ref: '#/components/schemas/MediaLibrarySyncRequest' responses: '200': description: Status of Plex scan content: application/json: schema: - type: object - properties: - running: - type: boolean - example: false - progress: - type: number - example: 0 - total: - type: number - example: 100 - currentLibrary: - $ref: '#/components/schemas/PlexLibrary' - libraries: - type: array - items: - $ref: '#/components/schemas/PlexLibrary' + $ref: '#/components/schemas/MediaLibrarySyncStatus' /settings/plex/devices/servers: get: summary: Gets the user's available Plex servers @@ -2577,18 +3304,7 @@ paths: schema: type: array items: - type: object - properties: - id: - type: string - title: - type: string - username: - type: string - email: - type: string - thumb: - type: string + $ref: '#/components/schemas/PlexUser' /settings/metadatas: get: summary: Get Metadata settings @@ -2631,25 +3347,14 @@ paths: content: application/json: schema: - type: object - properties: - tmdb: - type: boolean - example: true - tvdb: - type: boolean - example: true + $ref: '#/components/schemas/MetadataTestRequest' responses: '200': description: Succesfully connected to TVDB content: application/json: schema: - type: object - properties: - message: - type: string - example: 'Successfully connected to TVDB' + $ref: '#/components/schemas/MetadataTestResponse' /settings/tautulli: get: summary: Get Tautulli settings @@ -2718,46 +3423,21 @@ paths: post: summary: Test Radarr configuration description: Tests if the Radarr configuration is valid. Returns profiles and root folders on success. - tags: - - settings - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - hostname: - type: string - example: '127.0.0.1' - port: - type: number - example: 7878 - apiKey: - type: string - example: yourapikey - useSsl: - type: boolean - example: false - baseUrl: - type: string - required: - - hostname - - port - - apiKey - - useSsl + tags: + - settings + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServarrTestRequest' responses: '200': description: Succesfully connected to Radarr instance content: application/json: schema: - type: object - properties: - profiles: - type: array - items: - $ref: '#/components/schemas/ServiceProfile' + $ref: '#/components/schemas/ServarrTestResponse' /settings/radarr/{radarrId}: put: summary: Update Radarr instance @@ -2869,39 +3549,14 @@ paths: content: application/json: schema: - type: object - properties: - hostname: - type: string - example: '127.0.0.1' - port: - type: number - example: 8989 - apiKey: - type: string - example: yourapikey - useSsl: - type: boolean - example: false - baseUrl: - type: string - required: - - hostname - - port - - apiKey - - useSsl + $ref: '#/components/schemas/ServarrTestRequest' responses: '200': description: Succesfully connected to Sonarr instance content: application/json: schema: - type: object - properties: - profiles: - type: array - items: - $ref: '#/components/schemas/ServiceProfile' + $ref: '#/components/schemas/ServarrTestResponse' /settings/sonarr/{sonarrId}: put: summary: Update Sonarr instance @@ -3068,115 +3723,7 @@ paths: content: application/json: schema: - type: object - properties: - imageCache: - type: object - properties: - tmdb: - type: object - properties: - size: - type: number - example: 123456 - imageCount: - type: number - example: 123 - avatar: - type: object - properties: - size: - type: number - example: 123456 - imageCount: - type: number - example: 123 - dnsCache: - type: object - properties: - stats: - type: object - properties: - size: - type: number - example: 1 - maxSize: - type: number - example: 500 - hits: - type: number - example: 19 - misses: - type: number - example: 1 - failures: - type: number - example: 0 - ipv4Fallbacks: - type: number - example: 0 - hitRate: - type: number - example: 0.95 - entries: - type: array - additionalProperties: - type: object - properties: - addresses: - type: object - properties: - ipv4: - type: number - example: 1 - ipv6: - type: number - example: 1 - activeAddress: - type: string - example: 127.0.0.1 - family: - type: number - example: 4 - age: - type: number - example: 10 - ttl: - type: number - example: 10 - networkErrors: - type: number - example: 0 - hits: - type: number - example: 1 - misses: - type: number - example: 1 - apiCaches: - type: array - items: - type: object - properties: - id: - type: string - example: cache-id - name: - type: string - example: cache name - stats: - type: object - properties: - hits: - type: number - misses: - type: number - keys: - type: number - ksize: - type: number - vsize: - type: number + $ref: '#/components/schemas/CacheResponse' /settings/cache/{cacheId}/flush: post: summary: Flush a specific cache @@ -3217,13 +3764,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 25 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -3247,20 +3794,7 @@ paths: schema: type: array items: - type: object - properties: - label: - type: string - example: server - level: - type: string - example: info - message: - type: string - example: Server ready on port 5055 - timestamp: - type: string - example: '2020-12-15T16:20:00.069Z' + $ref: '#/components/schemas/LogItem' /settings/notifications/email: get: summary: Get email notification settings @@ -3466,12 +4000,7 @@ paths: schema: type: array items: - type: object - properties: - name: - type: string - description: - type: string + $ref: '#/components/schemas/PushoverSound' /settings/notifications/gotify: get: summary: Get Gotify notification settings @@ -3800,7 +4329,7 @@ paths: name: sliderId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -3812,7 +4341,7 @@ paths: type: string example: 'Slider Title' type: - type: number + type: integer example: 1 data: type: string @@ -3834,7 +4363,7 @@ paths: name: sliderId required: true schema: - type: number + type: integer responses: '200': description: Slider successfully deleted @@ -3860,7 +4389,7 @@ paths: type: string example: 'New Slider' type: - type: number + type: integer example: 1 data: type: string @@ -3893,24 +4422,7 @@ paths: content: application/json: schema: - type: object - properties: - version: - type: string - example: '1.0.0' - totalRequests: - type: number - example: 100 - totalMediaItems: - type: number - example: 100 - tz: - type: string - nullable: true - example: Asia/Tokyo - appDataPath: - type: string - example: /app/config + $ref: '#/components/schemas/ServerStats' /auth/me: get: summary: Get logged-in user @@ -3980,7 +4492,7 @@ paths: email: type: string serverType: - type: number + type: integer required: - username - password @@ -4024,11 +4536,7 @@ paths: content: application/json: schema: - type: object - properties: - status: - type: string - example: 'ok' + $ref: '#/components/schemas/LogoutResponse' /auth/reset-password: post: summary: Send a reset password email @@ -4036,28 +4544,19 @@ paths: security: [] tags: - users + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordRequest' responses: '200': description: OK content: application/json: schema: - type: object - properties: - status: - type: string - example: 'ok' - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - email: - type: string - required: - - email + $ref: '#/components/schemas/ResetPasswordResponse' /auth/reset-password/{guid}: post: summary: Reset the password for a user @@ -4072,28 +4571,19 @@ paths: schema: type: string example: '9afef5a7-ec89-4d5f-9397-261e96970b50' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ResetPasswordByGuidRequest' responses: '200': description: OK content: application/json: schema: - type: object - properties: - status: - type: string - example: 'ok' - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - password: - type: string - required: - - password + $ref: '#/components/schemas/ResetPasswordResponse' /user: get: summary: Get all users @@ -4104,13 +4594,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 20 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -4135,14 +4625,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - $ref: '#/components/schemas/User' + $ref: '#/components/schemas/UsersPage' post: summary: Create new user description: | @@ -4154,15 +4637,7 @@ paths: content: application/json: schema: - type: object - properties: - email: - type: string - example: 'hey@itsme.com' - username: - type: string - permissions: - type: number + $ref: '#/components/schemas/CreateUserRequest' responses: '201': description: The created user @@ -4183,14 +4658,7 @@ paths: content: application/json: schema: - type: object - properties: - ids: - type: array - items: - type: integer - permissions: - type: integer + $ref: '#/components/schemas/UpdateUsersRequest' responses: '200': description: Successfully updated user details @@ -4298,23 +4766,16 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User web push notification settings in JSON content: application/json: schema: - type: object - properties: - endpoint: - type: string - p256dh: - type: string - auth: - type: string - userAgent: - type: string + type: array + items: + $ref: '#/components/schemas/PushSubscription' /user/{userId}/pushSubscription/{endpoint}: get: summary: Get web push notification settings for a user @@ -4327,7 +4788,7 @@ paths: name: userId required: true schema: - type: number + type: integer - in: path name: endpoint required: true @@ -4339,16 +4800,7 @@ paths: content: application/json: schema: - type: object - properties: - endpoint: - type: string - p256dh: - type: string - auth: - type: string - userAgent: - type: string + $ref: '#/components/schemas/PushSubscription' delete: summary: Delete user push subscription by key description: Deletes the user push subscription with the provided key. @@ -4359,7 +4811,7 @@ paths: name: userId required: true schema: - type: number + type: integer - in: path name: endpoint required: true @@ -4380,7 +4832,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: Users details in JSON @@ -4401,7 +4853,7 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -4425,7 +4877,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User successfully deleted @@ -4445,17 +4897,17 @@ paths: name: userId required: true schema: - type: number + type: integer - in: query name: take schema: - type: number + type: integer nullable: true example: 20 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 responses: @@ -4464,14 +4916,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - $ref: '#/components/schemas/MediaRequest' + $ref: '#/components/schemas/MediaRequestsPage' /user/{userId}/quota: get: summary: Get quotas for a specific user @@ -4484,51 +4929,14 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User quota details in JSON content: application/json: schema: - type: object - properties: - movie: - type: object - properties: - days: - type: number - example: 7 - limit: - type: number - example: 10 - used: - type: number - example: 6 - remaining: - type: number - example: 4 - restricted: - type: boolean - example: false - tv: - type: object - properties: - days: - type: number - example: 7 - limit: - type: number - example: 10 - used: - type: number - example: 6 - remaining: - type: number - example: 4 - restricted: - type: boolean - example: false + $ref: '#/components/schemas/UserQuota' /blacklist: get: summary: Returns blacklisted items @@ -4539,13 +4947,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 25 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -4566,32 +4974,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - type: object - properties: - user: - $ref: '#/components/schemas/User' - createdAt: - type: string - example: 2024-04-21T01:55:44.000Z - id: - type: number - example: 1 - mediaType: - type: string - example: movie - title: - type: string - example: Dune - tmdbId: - type: number - example: 438631 + $ref: '#/components/schemas/BlacklistPage' post: summary: Add media to blacklist tags: @@ -4601,7 +4984,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Blacklist' + $ref: '#/components/schemas/PostBlacklistRequest' responses: '201': description: Item succesfully blacklisted @@ -4686,11 +5069,11 @@ paths: name: userId required: true schema: - type: number + type: integer - in: query name: page schema: - type: number + type: integer example: 1 default: 1 responses: @@ -4699,28 +5082,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - totalPages: - type: number - totalResults: - type: number - results: - type: array - items: - type: object - properties: - tmdbId: - type: number - example: 1 - ratingKey: - type: string - type: - type: string - title: - type: string + $ref: '#/components/schemas/PaginatedWatchlistResponse' /user/{userId}/settings/main: get: summary: Get general settings for a user @@ -4732,7 +5094,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User general settings returned @@ -4750,7 +5112,7 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -4775,18 +5137,14 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User password page information returned content: application/json: schema: - type: object - properties: - hasPassword: - type: boolean - example: true + $ref: '#/components/schemas/PasswordPageInfo' post: summary: Update password for a user description: Updates a user's password. Requires `MANAGE_USERS` permission if editing other users. @@ -4797,21 +5155,13 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: application/json: schema: - type: object - properties: - currentPassword: - type: string - nullable: true - newPassword: - type: string - required: - - newPassword + $ref: '#/components/schemas/UpdatePasswordRequest' responses: '204': description: User password updated @@ -4826,7 +5176,7 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -4855,7 +5205,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '204': description: Unlinking account succeeded @@ -4874,7 +5224,7 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -4905,7 +5255,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '204': description: Unlinking account succeeded @@ -4924,7 +5274,7 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User notification settings returned @@ -4942,7 +5292,7 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: @@ -4967,18 +5317,14 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: User permission settings returned content: application/json: schema: - type: object - properties: - permissions: - type: number - example: 2 + $ref: '#/components/schemas/PermissionSettings' post: summary: Update permission settings for a user description: Updates and returns permission settings for a specific user. Requires `MANAGE_USERS` permission if editing other users. @@ -4989,29 +5335,20 @@ paths: name: userId required: true schema: - type: number + type: integer requestBody: required: true content: application/json: schema: - type: object - properties: - permissions: - type: number - required: - - permissions + $ref: '#/components/schemas/UpdatePermissionSettingsRequest' responses: '200': description: Updated user general settings returned content: application/json: schema: - type: object - properties: - permissions: - type: number - example: 2 + $ref: '#/components/schemas/PermissionSettings' /user/{userId}/watch_data: get: summary: Get watch data @@ -5026,21 +5363,14 @@ paths: name: userId required: true schema: - type: number + type: integer responses: '200': description: Users content: application/json: schema: - type: object - properties: - recentlyWatched: - type: array - items: - $ref: '#/components/schemas/MediaInfo' - playCount: - type: number + $ref: '#/components/schemas/UserWatchData' /search: get: summary: Search for movies, TV shows, or people @@ -5057,7 +5387,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5071,24 +5401,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - anyOf: - - $ref: '#/components/schemas/MovieResult' - - $ref: '#/components/schemas/TvResult' - - $ref: '#/components/schemas/PersonResult' + $ref: '#/components/schemas/PaginatedSearchResponse' /search/keyword: get: summary: Search for keywords @@ -5105,7 +5418,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 responses: @@ -5114,21 +5427,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/Keyword' + $ref: '#/components/schemas/PaginatedKeywordSearchResponse' /search/company: get: summary: Search for companies @@ -5145,7 +5444,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 responses: @@ -5154,21 +5453,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/Company' + $ref: '#/components/schemas/PaginatedCompanySearchResponse' /discover/movies: get: summary: Discover movies @@ -5179,7 +5464,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5195,7 +5480,7 @@ paths: - in: query name: studio schema: - type: number + type: integer example: 1 - in: query name: keywords @@ -5246,12 +5531,12 @@ paths: - in: query name: voteCountGte schema: - type: number + type: integer example: 7 - in: query name: voteCountLte schema: - type: number + type: integer example: 10 - in: query name: watchRegion @@ -5298,23 +5583,9 @@ paths: '200': description: Results content: - application/json: - schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoviesResponse' /discover/movies/genre/{genreId}: get: summary: Discover movies by genre @@ -5331,7 +5602,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5345,23 +5616,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - genre: - $ref: '#/components/schemas/Genre' - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedDiscoverMoviesByGenreResponse' /discover/movies/language/{language}: get: summary: Discover movies by original language @@ -5378,7 +5633,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5392,23 +5647,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - language: - $ref: '#/components/schemas/SpokenLanguage' - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedDiscoverMoviesByLanguageResponse' /discover/movies/studio/{studioId}: get: summary: Discover movies by studio @@ -5425,7 +5664,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5439,23 +5678,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - studio: - $ref: '#/components/schemas/ProductionCompany' - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedDiscoverMoviesByStudioResponse' /discover/movies/upcoming: get: summary: Upcoming movies @@ -5466,7 +5689,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5480,21 +5703,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedMoviesResponse' /discover/tv: get: summary: Discover TV shows @@ -5505,7 +5714,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5521,7 +5730,7 @@ paths: - in: query name: network schema: - type: number + type: integer example: 1 - in: query name: keywords @@ -5572,12 +5781,12 @@ paths: - in: query name: voteCountGte schema: - type: number + type: integer example: 7 - in: query name: voteCountLte schema: - type: number + type: integer example: 10 - in: query name: watchRegion @@ -5631,21 +5840,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedTvResponse' /discover/tv/language/{language}: get: summary: Discover TV shows by original language @@ -5662,7 +5857,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5676,23 +5871,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - language: - $ref: '#/components/schemas/SpokenLanguage' - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedDiscoverTvByLanguageResponse' /discover/tv/genre/{genreId}: get: summary: Discover TV shows by genre @@ -5709,7 +5888,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5723,23 +5902,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - genre: - $ref: '#/components/schemas/Genre' - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedDiscoverTvByGenreResponse' /discover/tv/network/{networkId}: get: summary: Discover TV shows by network @@ -5756,7 +5919,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5770,23 +5933,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - network: - $ref: '#/components/schemas/Network' - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedDiscoverTvByNetworkResponse' /discover/tv/upcoming: get: summary: Discover Upcoming TV shows @@ -5797,7 +5944,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5811,21 +5958,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedTvResponse' /discover/trending: get: summary: Trending movies and TV @@ -5836,7 +5969,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5850,24 +5983,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - anyOf: - - $ref: '#/components/schemas/MovieResult' - - $ref: '#/components/schemas/TvResult' - - $ref: '#/components/schemas/PersonResult' + $ref: '#/components/schemas/PaginatedDiscoverTrendingResponse' /discover/keyword/{keywordId}/movies: get: summary: Get movies from keyword @@ -5879,12 +5995,12 @@ paths: name: keywordId required: true schema: - type: number + type: integer example: 207317 - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -5898,21 +6014,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedMoviesResponse' /discover/genreslider/movie: get: summary: Get genre slider data for movies @@ -5933,18 +6035,7 @@ paths: schema: type: array items: - type: object - properties: - id: - type: number - example: 1 - backdrops: - type: array - items: - type: string - name: - type: string - example: Genre Name + $ref: '#/components/schemas/GenreSliderItem' /discover/genreslider/tv: get: summary: Get genre slider data for TV series @@ -5965,18 +6056,7 @@ paths: schema: type: array items: - type: object - properties: - id: - type: number - example: 1 - backdrops: - type: array - items: - type: string - name: - type: string - example: Genre Name + $ref: '#/components/schemas/GenreSliderItem' /discover/watchlist: get: summary: Get the Plex watchlist. @@ -5986,7 +6066,7 @@ paths: - in: query name: page schema: - type: number + type: integer example: 1 default: 1 responses: @@ -5995,28 +6075,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - totalPages: - type: number - totalResults: - type: number - results: - type: array - items: - type: object - properties: - tmdbId: - type: number - example: 1 - ratingKey: - type: string - type: - type: string - title: - type: string + $ref: '#/components/schemas/PaginatedWatchlistResponse' /request: get: summary: Get all requests @@ -6030,13 +6089,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 20 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -6072,7 +6131,7 @@ paths: - in: query name: requestedBy schema: - type: number + type: integer nullable: true example: 1 - in: query @@ -6088,14 +6147,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - $ref: '#/components/schemas/MediaRequest' + $ref: '#/components/schemas/MediaRequestsPage' post: summary: Create new request description: | @@ -6109,43 +6161,7 @@ paths: content: application/json: schema: - type: object - properties: - mediaType: - type: string - enum: [movie, tv] - example: movie - mediaId: - type: number - example: 123 - tvdbId: - type: number - example: 123 - seasons: - oneOf: - - type: array - items: - type: number - minimum: 0 - - type: string - enum: [all] - is4k: - type: boolean - example: false - serverId: - type: number - profileId: - type: number - rootFolder: - type: string - languageProfileId: - type: number - userId: - type: number - nullable: true - required: - - mediaType - - mediaId + $ref: '#/components/schemas/PostRequest' responses: '201': description: Succesfully created the request @@ -6166,26 +6182,7 @@ paths: content: application/json: schema: - type: object - properties: - total: - type: number - movie: - type: number - tv: - type: number - pending: - type: number - approved: - type: number - declined: - type: number - processing: - type: number - available: - type: number - completed: - type: number + $ref: '#/components/schemas/RequestsCounts' /request/{requestId}: get: summary: Get MediaRequest @@ -6233,21 +6230,21 @@ paths: seasons: type: array items: - type: number + type: integer minimum: 0 is4k: type: boolean example: false serverId: - type: number + type: integer profileId: - type: number + type: integer rootFolder: type: string languageProfileId: - type: number + type: integer userId: - type: number + type: integer nullable: true required: - mediaType @@ -6340,7 +6337,7 @@ paths: name: movieId required: true schema: - type: number + type: integer example: 337401 - in: query name: language @@ -6365,12 +6362,12 @@ paths: name: movieId required: true schema: - type: number + type: integer example: 337401 - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -6384,21 +6381,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedMoviesResponse' /movie/{movieId}/similar: get: summary: Get similar movies @@ -6410,12 +6393,12 @@ paths: name: movieId required: true schema: - type: number + type: integer example: 337401 - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -6429,21 +6412,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/MovieResult' + $ref: '#/components/schemas/PaginatedMoviesResponse' /movie/{movieId}/ratings: get: summary: Get movie ratings @@ -6455,7 +6424,7 @@ paths: name: movieId required: true schema: - type: number + type: integer example: 337401 responses: '200': @@ -6463,29 +6432,7 @@ paths: content: application/json: schema: - type: object - properties: - title: - type: string - example: Mulan - year: - type: number - example: 2020 - url: - type: string - example: 'http://www.rottentomatoes.com/m/mulan_2020/' - criticsScore: - type: number - example: 85 - criticsRating: - type: string - enum: ['Rotten', 'Fresh', 'Certified Fresh'] - audienceScore: - type: number - example: 65 - audienceRating: - type: string - enum: ['Spilled', 'Upright'] + $ref: '#/components/schemas/Ratings' /movie/{movieId}/ratingscombined: get: summary: Get RT and IMDB movie ratings combined @@ -6497,7 +6444,7 @@ paths: name: movieId required: true schema: - type: number + type: integer example: 337401 responses: '200': @@ -6505,44 +6452,7 @@ paths: content: application/json: schema: - type: object - properties: - rt: - type: object - properties: - title: - type: string - example: Mulan - year: - type: number - example: 2020 - url: - type: string - example: 'http://www.rottentomatoes.com/m/mulan_2020/' - criticsScore: - type: number - example: 85 - criticsRating: - type: string - enum: ['Rotten', 'Fresh', 'Certified Fresh'] - audienceScore: - type: number - example: 65 - audienceRating: - type: string - enum: ['Spilled', 'Upright'] - imdb: - type: object - properties: - title: - type: string - example: I am Legend - url: - type: string - example: 'https://www.imdb.com/title/tt0480249' - criticsScore: - type: number - example: 6.5 + $ref: '#/components/schemas/CombinedMovieRatings' /tv/{tvId}: get: summary: Get TV details @@ -6554,7 +6464,7 @@ paths: name: tvId required: true schema: - type: number + type: integer example: 76479 - in: query name: language @@ -6579,13 +6489,13 @@ paths: name: tvId required: true schema: - type: number + type: integer example: 76479 - in: path name: seasonNumber required: true schema: - type: number + type: integer example: 123456 - in: query name: language @@ -6610,12 +6520,12 @@ paths: name: tvId required: true schema: - type: number + type: integer example: 76479 - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -6629,21 +6539,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedTvResponse' /tv/{tvId}/similar: get: summary: Get similar TV series @@ -6655,12 +6551,12 @@ paths: name: tvId required: true schema: - type: number + type: integer example: 76479 - in: query name: page schema: - type: number + type: integer example: 1 default: 1 - in: query @@ -6674,21 +6570,7 @@ paths: content: application/json: schema: - type: object - properties: - page: - type: number - example: 1 - totalPages: - type: number - example: 20 - totalResults: - type: number - example: 200 - results: - type: array - items: - $ref: '#/components/schemas/TvResult' + $ref: '#/components/schemas/PaginatedTvResponse' /tv/{tvId}/ratings: get: summary: Get TV ratings @@ -6700,7 +6582,7 @@ paths: name: tvId required: true schema: - type: number + type: integer example: 76479 responses: '200': @@ -6708,23 +6590,7 @@ paths: content: application/json: schema: - type: object - properties: - title: - type: string - example: The Boys - year: - type: number - example: 2019 - url: - type: string - example: 'http://www.rottentomatoes.com/m/mulan_2020/' - criticsScore: - type: number - example: 85 - criticsRating: - type: string - enum: ['Rotten', 'Fresh'] + $ref: '#/components/schemas/Ratings' /person/{personId}: get: summary: Get person details @@ -6736,7 +6602,7 @@ paths: name: personId required: true schema: - type: number + type: integer example: 287 - in: query name: language @@ -6761,7 +6627,7 @@ paths: name: personId required: true schema: - type: number + type: integer example: 287 - in: query name: language @@ -6774,18 +6640,7 @@ paths: content: application/json: schema: - type: object - properties: - cast: - type: array - items: - $ref: '#/components/schemas/CreditCast' - crew: - type: array - items: - $ref: '#/components/schemas/CreditCrew' - id: - type: number + $ref: '#/components/schemas/CombinedCredits' /media: get: summary: Get media @@ -6796,13 +6651,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 20 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -6832,14 +6687,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - $ref: '#/components/schemas/MediaInfo' + $ref: '#/components/schemas/MediaInfoPage' /media/{mediaId}: delete: summary: Delete media item @@ -6946,34 +6794,7 @@ paths: content: application/json: schema: - type: object - properties: - data: - type: object - properties: - playCount7Days: - type: number - playCount30Days: - type: number - playCount: - type: number - users: - type: array - items: - $ref: '#/components/schemas/User' - data4k: - type: object - properties: - playCount7Days: - type: number - playCount30Days: - type: number - playCount: - type: number - users: - type: array - items: - $ref: '#/components/schemas/User' + $ref: '#/components/schemas/MediaWatchCombinedData' /collection/{collectionId}: get: summary: Get collection details @@ -6985,7 +6806,7 @@ paths: name: collectionId required: true schema: - type: number + type: integer example: 537982 - in: query name: language @@ -6998,7 +6819,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Collection' + $ref: '#/components/schemas/MediaCollection' /service/radarr: get: summary: Get non-sensitive Radarr server list @@ -7025,7 +6846,7 @@ paths: name: radarrId required: true schema: - type: number + type: integer example: 0 responses: '200': @@ -7033,12 +6854,7 @@ paths: content: application/json: schema: - type: object - properties: - server: - $ref: '#/components/schemas/RadarrSettings' - profiles: - $ref: '#/components/schemas/ServiceProfile' + $ref: '#/components/schemas/RadarrServiceResponse' /service/sonarr: get: summary: Get non-sensitive Sonarr server list @@ -7065,7 +6881,7 @@ paths: name: sonarrId required: true schema: - type: number + type: integer example: 0 responses: '200': @@ -7073,12 +6889,7 @@ paths: content: application/json: schema: - type: object - properties: - server: - $ref: '#/components/schemas/SonarrSettings' - profiles: - $ref: '#/components/schemas/ServiceProfile' + $ref: '#/components/schemas/SonarrServiceResponse' /service/sonarr/lookup/{tmdbId}: get: summary: Get series from Sonarr @@ -7090,7 +6901,7 @@ paths: name: tmdbId required: true schema: - type: number + type: integer example: 0 responses: '200': @@ -7115,14 +6926,7 @@ paths: schema: type: array items: - type: object - properties: - iso_3166_1: - type: string - example: US - english_name: - type: string - example: United States of America + $ref: '#/components/schemas/Region' /languages: get: summary: Languages supported by TMDB @@ -7137,17 +6941,7 @@ paths: schema: type: array items: - type: object - properties: - iso_639_1: - type: string - example: en - english_name: - type: string - example: English - name: - type: string - example: English + $ref: '#/components/schemas/Language' /studio/{studioId}: get: summary: Get movie studio details @@ -7159,7 +6953,7 @@ paths: name: studioId required: true schema: - type: number + type: integer example: 2 responses: '200': @@ -7179,7 +6973,7 @@ paths: name: networkId required: true schema: - type: number + type: integer example: 1 responses: '200': @@ -7208,17 +7002,10 @@ paths: schema: type: array items: - type: object - properties: - id: - type: number - example: 10751 - name: - type: string - example: Family + $ref: '#/components/schemas/Genre' /genres/tv: get: - summary: Get list of official TMDB movie genres + summary: Get list of official TMDB tv genres description: Returns a list of genres in a JSON array. tags: - tmdb @@ -7236,14 +7023,7 @@ paths: schema: type: array items: - type: object - properties: - id: - type: number - example: 18 - name: - type: string - example: Drama + $ref: '#/components/schemas/Genre' /backdrops: get: summary: Get backdrops of trending items @@ -7271,13 +7051,13 @@ paths: - in: query name: take schema: - type: number + type: integer nullable: true example: 20 - in: query name: skip schema: - type: number + type: integer nullable: true example: 0 - in: query @@ -7295,7 +7075,7 @@ paths: - in: query name: requestedBy schema: - type: number + type: integer nullable: true example: 1 responses: @@ -7304,14 +7084,7 @@ paths: content: application/json: schema: - type: object - properties: - pageInfo: - $ref: '#/components/schemas/PageInfo' - results: - type: array - items: - $ref: '#/components/schemas/Issue' + $ref: '#/components/schemas/IssuesPage' post: summary: Create new issue description: | @@ -7326,11 +7099,11 @@ paths: type: object properties: issueType: - type: number + type: integer message: type: string mediaId: - type: number + type: integer responses: '201': description: Succesfully created the issue @@ -7338,7 +7111,6 @@ paths: application/json: schema: $ref: '#/components/schemas/Issue' - /issue/count: get: summary: Gets issue counts @@ -7352,22 +7124,7 @@ paths: content: application/json: schema: - type: object - properties: - total: - type: number - video: - type: number - audio: - type: number - subtitles: - type: number - others: - type: number - open: - type: number - closed: - type: number + $ref: '#/components/schemas/IssuesCounts' /issue/{issueId}: get: summary: Get issue @@ -7380,7 +7137,7 @@ paths: name: issueId required: true schema: - type: number + type: integer example: 1 responses: '200': @@ -7417,7 +7174,7 @@ paths: name: issueId required: true schema: - type: number + type: integer example: 1 requestBody: required: true @@ -7547,7 +7304,7 @@ paths: name: keywordId required: true schema: - type: number + type: integer example: 1 responses: '200': @@ -7562,11 +7319,7 @@ paths: content: application/json: schema: - type: object - properties: - message: - type: string - example: 'Unable to retrieve keyword data.' + $ref: '#/components/schemas/KeywordError' /watchproviders/regions: get: summary: Get watch provider regions @@ -7650,14 +7403,7 @@ paths: content: application/json: schema: - type: object - properties: - status: - type: number - example: 500 - message: - type: string - example: Unable to retrieve movie certifications. + $ref: '#/components/schemas/CertificationError' /certifications/tv: get: summary: Get TV certifications @@ -7679,14 +7425,7 @@ paths: content: application/json: schema: - type: object - properties: - status: - type: number - example: 500 - message: - type: string - example: Unable to retrieve TV certifications. + $ref: '#/components/schemas/CertificationError' /overrideRule: get: summary: Get override rules @@ -7727,7 +7466,7 @@ paths: name: ruleId required: true schema: - type: number + type: integer responses: '200': description: 'Values were successfully updated' @@ -7747,7 +7486,7 @@ paths: name: ruleId required: true schema: - type: number + type: integer responses: '200': description: Override rule successfully deleted @@ -7755,6 +7494,7 @@ paths: application/json: schema: $ref: '#/components/schemas/OverrideRule' + security: - cookieAuth: [] - apiKey: []