added test and fixes for get-library-all

corrected get-media-meta-data response
This commit is contained in:
JasonLandbridge
2025-02-06 22:48:23 +01:00
parent 70e85b90e2
commit 457d3aa023
98 changed files with 80138 additions and 120 deletions

View File

@@ -4,18 +4,6 @@ items:
type: object
required:
- id
- duration
- bitrate
- width
- height
- aspectRatio
- audioChannels
- audioCodec
- videoCodec
- videoResolution
- container
- videoFrameRate
- videoProfile
- hasVoiceActivity
- Part
properties:
@@ -25,20 +13,24 @@ items:
example: 387322
duration:
type: integer
format: int32
description: "Duration of the media in milliseconds."
example: 9610350
bitrate:
type: integer
format: int32
description: "Bitrate in bits per second."
example: 25512
width:
type: integer
description: "Video width in pixels."
example: 3840
format: int32
height:
type: integer
description: "Video height in pixels."
example: 1602
format: int32
aspectRatio:
type: number
format: float
@@ -48,6 +40,11 @@ items:
type: integer
description: "Number of audio channels."
example: 6
format: int32
displayOffset:
type: integer
format: int32
example: 50
audioCodec:
type: string
description: "Audio codec used."
@@ -66,7 +63,8 @@ items:
example: "mkv"
videoFrameRate:
type: string
description: "Frame rate of the video (e.g., 24p)."
description: |
Frame rate of the video. Values found include NTSC, PAL, 24p
example: "24p"
videoProfile:
type: string
@@ -76,6 +74,21 @@ items:
type: boolean
description: "Indicates whether voice activity is detected."
example: false
audioProfile:
type: string
description: "The audio profile used for the media (e.g., DTS, Dolby Digital, etc.)."
example: "dts"
optimizedForStreaming:
description: "Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true"
oneOf:
- type: integer
format: int32
enum: [0, 1]
- type: boolean
enum: [true, false]
has64bitOffsets:
type: boolean
example: false
Part:
type: array
description: "An array of parts for this media item."
@@ -84,12 +97,8 @@ items:
required:
- id
- key
- duration
- file
- size
- container
- videoProfile
- Stream
properties:
accessible:
type: boolean
@@ -112,6 +121,7 @@ items:
example: "sd"
duration:
type: integer
format: int32
description: "Duration of the part in milliseconds."
example: 9610350
file:
@@ -119,9 +129,13 @@ items:
description: "File path for the part."
example: "/mnt/Movies_1/W/Wicked (2024).mkv"
size:
type: integer
description: "File size in bytes."
type: integer
example: 30649952104
packetLength:
type: integer
format: int32
example: 188
container:
type: string
description: "Container format of the part."
@@ -130,6 +144,25 @@ items:
type: string
description: "Video profile for the part."
example: "main 10"
audioProfile:
type: string
description: "The audio profile used for the media (e.g., DTS, Dolby Digital, etc.)."
example: "dts"
has64bitOffsets:
type: boolean
example: false
optimizedForStreaming:
description: "Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true"
oneOf:
- type: integer
format: int32
enum: [0, 1]
- type: boolean
enum: [true, false]
hasThumbnail:
allOf:
- description: "Indicates if the part has a thumbnail."
- $ref: "../models/common/PlexBooleanString.yaml"
Stream:
type: array
description: "An array of streams for this part."
@@ -140,7 +173,6 @@ items:
- streamType
- codec
- index
- bitrate
- language
- languageTag
- languageCode
@@ -153,6 +185,7 @@ items:
example: 1002625
streamType:
type: integer
format: int32
description: "Stream type (1=video, 2=audio, 3=subtitle)."
example: 1
default:
@@ -165,10 +198,12 @@ items:
example: "hevc"
index:
type: integer
format: int32
description: "Index of the stream."
example: 0
bitrate:
type: integer
format: int32
description: "Bitrate of the stream."
example: 24743
language:
@@ -183,8 +218,13 @@ items:
type: string
description: "ISO language code."
example: "eng"
headerCompression:
type: boolean
description: "Indicates whether header compression is enabled."
example: true
DOVIBLCompatID:
type: integer
format: int32
description: "Dolby Vision BL compatibility ID."
example: 1
DOVIBLPresent:
@@ -197,6 +237,7 @@ items:
example: false
DOVILevel:
type: integer
format: int32
description: "Dolby Vision level."
example: 6
DOVIPresent:
@@ -205,6 +246,7 @@ items:
example: true
DOVIProfile:
type: integer
format: int32
description: "Dolby Vision profile."
example: 8
DOVIRPUPresent:
@@ -217,6 +259,7 @@ items:
example: "1.0"
bitDepth:
type: integer
format: int32
description: "Bit depth of the video stream."
example: 10
chromaLocation:
@@ -229,10 +272,12 @@ items:
example: "4:2:0"
codedHeight:
type: integer
format: int32
description: "Coded video height."
example: 1608
codedWidth:
type: integer
format: int32
description: "Coded video width."
example: 3840
colorPrimaries:
@@ -258,10 +303,12 @@ items:
example: 23.976
height:
type: integer
format: int32
description: "Height of the video stream."
example: 1602
level:
type: integer
format: int32
description: "Video level."
example: 150
original:
@@ -280,10 +327,12 @@ items:
example: "progressive"
refFrames:
type: integer
format: int32
description: "Number of reference frames."
example: 1
width:
type: integer
format: int32
description: "Width of the video stream."
example: 3840
displayTitle:
@@ -303,6 +352,7 @@ items:
example: true
channels:
type: integer
format: int32
description: "Number of audio channels (for audio streams)."
example: 6
audioChannelLayout:
@@ -311,6 +361,7 @@ items:
example: "5.1(side)"
samplingRate:
type: integer
format: int32
description: "Sampling rate for the audio stream."
example: 48000
canAutoSync:

View File

@@ -3,7 +3,7 @@ required:
- size
properties:
size:
type: number
type: integer
example: 50
offset:
type: integer

View File

@@ -17,7 +17,10 @@ properties:
example: "/library/sections/2/all?type=2"
type:
type: string
example: "show"
example: filter
subtype:
type: string
example: "clip"
title:
type: string
example: "TV Shows"
@@ -50,6 +53,10 @@ properties:
type:
type: string
example: "filter"
advanced:
type: boolean
example: true
Sort:
type: array
items:

View File

@@ -0,0 +1,8 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The user made collection this media item belongs too
example: My Awesome Collection

View File

@@ -4,6 +4,8 @@ enum:
- show
- season
- episode
- artist
- album
example: "movie"
description: |
The type of media content
@@ -12,3 +14,5 @@ x-speakeasy-enums:
- TV_SHOW
- SEASON
- EPISODE
- ARTIST
- ALBUM

View File

@@ -0,0 +1,8 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The country of origin of this media item
example: United States of America

View File

@@ -0,0 +1,8 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The role of Director
example: Danny Boyle

View File

@@ -0,0 +1,9 @@
type: object
required:
- tag
properties:
tag:
type: string
description: |
The genre name of this media-item
example: "Crime"

View File

@@ -0,0 +1,8 @@
type: object
required:
- content
properties:
content:
type: string
description: "The content type or mode."
example: "secondary"

View File

@@ -0,0 +1,8 @@
type: object
required:
- offset
properties:
offset:
type: integer
description: "Offset value for pagination."
example: 0

View File

@@ -3,5 +3,7 @@ required:
- size
properties:
size:
type: number
description: "Number of media items returned in this response."
type: integer
format: int32
example: 50

View File

@@ -0,0 +1,9 @@
type: object
required:
- totalSize
properties:
totalSize:
description: "Total number of media items in the library."
type: integer
format: int32
example: 50

View File

@@ -0,0 +1,8 @@
type: object
required:
- addedAt
properties:
addedAt:
allOf:
- description: "Unix timestamp when the item was added."
- $ref: "../../models/common/PlexDateTime.yaml"

View File

@@ -0,0 +1,8 @@
type: object
required:
- art
properties:
art:
type: string
description: "The art image URL for the media item."
example: "/library/metadata/58683/art/1703239236"

View File

@@ -0,0 +1,6 @@
type: object
properties:
audienceRatingImage:
type: string
description: "The URL for the audience rating image."
example: "rottentomatoes://image.rating.upright"

View File

@@ -0,0 +1,8 @@
type: object
required:
- audienceRating
properties:
audienceRating:
type: number
description: "The audience rating for the media item."
example: 9.2

View File

@@ -0,0 +1,8 @@
type: object
required:
- banner
properties:
banner:
type: string
description: "The banner image URL for the media item."
example: "/library/metadata/58683/banner/1703239236"

View File

@@ -0,0 +1,6 @@
type: object
properties:
chapterSource:
type: string
description: "The source from which chapter data is derived."
example: "media"

View File

@@ -0,0 +1,9 @@
type: object
required:
- childCount
properties:
childCount:
type: integer
format: int32
description: "The number of child items associated with this media item."
example: 1

View File

@@ -0,0 +1,6 @@
type: object
properties:
contentRating:
type: string
description: "The content rating for the media item."
example: "PG-13"

View File

@@ -0,0 +1,6 @@
type: object
properties:
createdAtAccuracy:
type: string
description: "The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available)."
example: "epoch,local"

View File

@@ -0,0 +1,6 @@
type: object
properties:
createdAtTZOffset:
type: string
description: "The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC."
example: "0"

View File

@@ -0,0 +1,9 @@
type: object
required:
- duration
properties:
duration:
type: integer
format: int32
description: "The duration of the media item in milliseconds."
example: 11558112

View File

@@ -0,0 +1,16 @@
type: object
required:
- enableCreditsMarkerGeneration
properties:
enableCreditsMarkerGeneration:
type: string
description: >
Setting that indicates if credits marker detection is enabled.
(-1 = Library default, 0 = Disabled).
enum:
- "-1"
- "0"
x-speakeasy-enums:
- LIBRARY_DEFAULT
- DISABLED
example: "-1"

View File

@@ -0,0 +1,18 @@
type: object
required:
- episodeSort
properties:
episodeSort:
type: string
description: >
Setting that indicates how episodes are sorted for the show.
(-1 = Library default, 0 = Oldest first, 1 = Newest first).
enum:
- "-1"
- "0"
- "1"
x-speakeasy-enums:
- LIBRARY_DEFAULT
- OLDEST_FIRST
- NEWEST_FIRST
example: "0"

View File

@@ -0,0 +1,18 @@
type: object
required:
- flattenSeasons
properties:
flattenSeasons:
type: string
description: >
Setting that indicates if seasons are set to hidden for the show.
(-1 = Library default, 0 = Hide, 1 = Show).
enum:
- "-1"
- "0"
- "1"
x-speakeasy-enums:
- LIBRARY_DEFAULT
- HIDE
- SHOW
example: "1"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentArt:
type: string
description: "The art URL for the grandparent media item."
example: "/library/metadata/66/art/1705716261"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentGuid:
type: string
description: "The GUID of the grandparent media item."
example: "plex://show/5d9c081b170e24001f2a7be4"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentKey:
type: string
description: "The key of the grandparent media item."
example: "/library/metadata/66"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentRatingKey:
type: string
description: "The rating key of the grandparent media item."
example: "66"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentSlug:
type: string
description: "The slug for the grandparent media item."
example: "alice-in-borderland-2020"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentTheme:
type: string
description: "The theme URL for the grandparent media item."
example: "/library/metadata/66/theme/1705716261"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentThumb:
type: string
description: "The thumbnail URL for the grandparent media item."
example: "/library/metadata/66/thumb/1705716261"

View File

@@ -0,0 +1,6 @@
type: object
properties:
grandparentTitle:
type: string
description: "The title of the grandparent media item."
example: "Caprica"

View File

@@ -0,0 +1,8 @@
type: object
required:
- guid
properties:
guid:
type: string
description: "The globally unique identifier for the media item."
example: "plex://movie/5d7768ba96b655001fdc0408"

View File

@@ -0,0 +1,8 @@
type: object
required:
- hasPremiumExtras
properties:
hasPremiumExtras:
type: string
description: "Indicates if premium extras are available (as a string value)."
example: "1"

View File

@@ -0,0 +1,8 @@
type: object
required:
- hasPremiumPrimaryExtra
properties:
hasPremiumPrimaryExtra:
type: string
description: "Indicates if a premium primary extra is available (as a string value)."
example: "1"

View File

@@ -0,0 +1,9 @@
type: object
required:
- index
properties:
index:
type: integer
format: int32
description: "The index position of the media item."
example: 1

View File

@@ -0,0 +1,8 @@
type: object
required:
- key
properties:
key:
type: string
description: "The unique key for the media item."
example: "/library/metadata/58683"

View File

@@ -0,0 +1,7 @@
type: object
properties:
lastRatedAt:
type: integer
format: int64
description: "The Unix timestamp representing the last time the item was rated."
example: 1721813113

View File

@@ -0,0 +1,7 @@
type: object
properties:
lastViewedAt:
type: integer
format: int32
description: "Unix timestamp for when the media item was last viewed."
example: 1682752242

View File

@@ -0,0 +1,7 @@
type: object
properties:
leafCount:
type: integer
format: int32
description: "The number of leaf items (end nodes) under this media item."
example: 14

View File

@@ -0,0 +1,8 @@
type: object
required:
- librarySectionID
properties:
librarySectionID:
type: integer
description: "The identifier for the library section."
example: 1

View File

@@ -0,0 +1,8 @@
type: object
required:
- librarySectionKey
properties:
librarySectionKey:
type: string
description: "The key corresponding to the library section."
example: "/library/sections/1"

View File

@@ -0,0 +1,8 @@
type: object
required:
- librarySectionTitle
properties:
librarySectionTitle:
type: string
description: "The title of the library section."
example: "Movies"

View File

@@ -0,0 +1,27 @@
type: object
description: |
The available images for this media item
properties:
Image:
type: array
items:
type: object
required:
- alt
- type
- url
properties:
alt:
type: string
example: "Episode 1"
type:
type: string
enum:
- coverPoster
- background
- snapshot
- clearLogo
example: "background"
url:
type: string
example: "/library/metadata/45521/thumb/1644710589"

View File

@@ -0,0 +1,24 @@
type: object
description: |
Unknown
properties:
UltraBlurColors:
type: object
required:
- topLeft
- topRight
- bottomRight
- bottomLeft
properties:
topLeft:
type: string
example: "11333b"
topRight:
type: string
example: "0a232d"
bottomRight:
type: string
example: "073958"
bottomLeft:
type: string
example: "1f5066"

View File

@@ -0,0 +1,6 @@
type: object
properties:
originalTitle:
type: string
description: "The original title of the media item (if different)."
example: "映画 ブラッククローバー 魔法帝の剣"

View File

@@ -0,0 +1,9 @@
type: object
required:
- originallyAvailableAt
properties:
originallyAvailableAt:
type: string
format: date
description: "The original release date of the media item."
example: "2022-12-14"

View File

@@ -0,0 +1,6 @@
type: object
properties:
parentGuid:
type: string
description: "The GUID of the parent media item."
example: "plex://show/5d9c081b170e24001f2a7be4"

View File

@@ -0,0 +1,7 @@
type: object
properties:
parentIndex:
type: integer
format: int32
description: "The index position of the parent media item."
example: 1

View File

@@ -0,0 +1,6 @@
type: object
properties:
parentKey:
type: string
description: "The key of the parent media item."
example: "/library/metadata/66"

View File

@@ -0,0 +1,6 @@
type: object
properties:
parentRatingKey:
type: string
description: "The rating key of the parent media item."
example: "66"

View File

@@ -0,0 +1,8 @@
type: object
required:
- parentSlug
properties:
parentSlug:
type: string
description: "The slug for the parent media item."
example: "alice-in-borderland-2020"

View File

@@ -0,0 +1,8 @@
type: object
required:
- parentStudio
properties:
parentStudio:
type: string
description: "The studio of the parent media item."
example: "UCP"

View File

@@ -0,0 +1,8 @@
type: object
required:
- parentTheme
properties:
parentTheme:
type: string
description: "The theme URL for the parent media item."
example: "/library/metadata/66/theme/1705716261"

View File

@@ -0,0 +1,6 @@
type: object
properties:
parentThumb:
type: string
description: "The thumbnail URL for the parent media item."
example: "/library/metadata/66/thumb/1705716261"

View File

@@ -0,0 +1,6 @@
type: object
properties:
parentTitle:
type: string
description: "The title of the parent media item."
example: "Caprica"

View File

@@ -0,0 +1,9 @@
type: object
required:
- parentYear
properties:
parentYear:
type: integer
format: int32
description: "The release year of the parent media item."
example: 2010

View File

@@ -0,0 +1,6 @@
type: object
properties:
primaryExtraKey:
type: string
description: "The primary extra key associated with this media item."
example: "/library/metadata/58684"

View File

@@ -0,0 +1,6 @@
type: object
properties:
ratingImage:
type: string
description: "The URL for the rating image."
example: "rottentomatoes://image.rating.ripe"

View File

@@ -0,0 +1,8 @@
type: object
required:
- ratingKey
properties:
ratingKey:
type: string
description: "The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API."
example: "58683"

View File

@@ -0,0 +1,9 @@
type: object
required:
- rating
properties:
rating:
type: number
format: float
description: "The critic rating for the media item."
example: 7.6

View File

@@ -0,0 +1,9 @@
type: object
required:
- seasonCount
properties:
seasonCount:
type: integer
format: int32
description: "The total number of seasons (for TV shows)."
example: 2022

View File

@@ -0,0 +1,27 @@
type: object
required:
- showOrdering
properties:
showOrdering:
type: string
description: |
Setting that indicates the episode ordering for the show.
Options:
- None = Library default
- tmdbAiring = The Movie Database (Aired)
- aired = TheTVDB (Aired)
- dvd = TheTVDB (DVD)
- absolute = TheTVDB (Absolute)
enum:
- None
- tmdbAiring
- aired
- dvd
- absolute
x-speakeasy-enums:
- NONE
- TMDB_AIRING
- TVDB_AIRED
- TVDB_DVD
- TVDB_ABSOLUTE
example: "absolute"

View File

@@ -0,0 +1,8 @@
type: object
required:
- skipChildren
properties:
skipChildren:
type: boolean
description: "Indicates whether child items should be skipped."
example: false

View File

@@ -0,0 +1,7 @@
type: object
properties:
skipCount:
type: integer
format: int32
description: "The number of times this media item has been skipped."
example: 1

View File

@@ -0,0 +1,8 @@
type: object
required:
- slug
properties:
slug:
type: string
description: "A URLfriendly version of the media title."
example: "4-for-texas"

View File

@@ -0,0 +1,6 @@
type: object
properties:
studio:
type: string
description: "The studio that produced the media item."
example: "20th Century Studios"

View File

@@ -0,0 +1,6 @@
type: object
properties:
subtype:
type: string
description: "A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip."
example: "clip"

View File

@@ -0,0 +1,11 @@
type: object
required:
- summary
properties:
summary:
type: string
description: "A synopsis of the media item."
example: |
Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.

View File

@@ -0,0 +1,8 @@
type: object
required:
- tagline
properties:
tagline:
type: string
description: "A brief tagline for the media item."
example: "Return to Pandora."

View File

@@ -0,0 +1,8 @@
type: object
required:
- theme
properties:
theme:
type: string
description: "The theme URL for the media item."
example: "/library/metadata/1/theme/1705636920"

View File

@@ -0,0 +1,8 @@
type: object
required:
- thumb
properties:
thumb:
type: string
description: "The thumbnail image URL for the media item."
example: "/library/metadata/58683/thumb/1703239236"

View File

@@ -0,0 +1,8 @@
type: object
required:
- titleSort
properties:
titleSort:
type: string
description: "The sort title used for ordering media items."
example: "Whale"

View File

@@ -0,0 +1,8 @@
type: object
required:
- title
properties:
title:
type: string
description: "The title of the media item."
example: "Avatar: The Way of Water"

View File

@@ -0,0 +1,7 @@
type: object
required:
- type
properties:
type:
allOf:
- $ref: "../common/PlexMediaTypeString.yaml"

View File

@@ -0,0 +1,4 @@
type: object
properties:
updatedAt:
$ref: "../../models/common/PlexDateTime.yaml"

View File

@@ -0,0 +1,7 @@
type: object
properties:
userRating:
type: number
format: float
description: "The rating provided by a user for the item. This value is expressed as a decimal number."
example: 10.0

View File

@@ -0,0 +1,7 @@
type: object
properties:
viewCount:
type: integer
format: int32
description: "The number of times this media item has been viewed."
example: 1

View File

@@ -0,0 +1,7 @@
type: object
properties:
viewOffset:
type: integer
format: int32
description: "The current playback offset (in milliseconds)."
example: 5222500

View File

@@ -0,0 +1,7 @@
type: object
properties:
viewedLeafCount:
type: integer
format: int32
description: "The number of leaf items that have been viewed."
example: 0

View File

@@ -0,0 +1,9 @@
type: object
required:
- year
properties:
year:
type: integer
format: int32
description: "The release year of the media item."
example: 2022

8
src/models/role/tag.yaml Normal file
View File

@@ -0,0 +1,8 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The name of the actor for this role
example: Danny Boyle

View File

@@ -0,0 +1,8 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The role of Writer
example: Danny Boyle

View File

@@ -0,0 +1,4 @@
name: includeAdvanced
in: query
schema:
$ref: "../models/common/PlexBoolean.yaml"

View File

@@ -0,0 +1,4 @@
name: includeCollections
in: query
schema:
$ref: "../models/common/PlexBoolean.yaml"

View File

@@ -0,0 +1,4 @@
name: includeExternalMedia
in: query
schema:
$ref: "../models/common/PlexBoolean.yaml"

View File

@@ -0,0 +1,6 @@
name: includeGuids
in: query
description: |
Adds the Guid object to the response
schema:
$ref: "../models/common/PlexBoolean.yaml"

View File

@@ -0,0 +1,6 @@
name: unwatchedLeaves
in: query
description: |
Adds the Meta object to the response
schema:
$ref: "../models/common/PlexBoolean.yaml"

View File

@@ -0,0 +1,164 @@
get:
tags:
- Library
summary: Get all media of library
operationId: get-all-media-library
description: |
Retrieves a list of all general media data for this library.
parameters:
- $ref: "../../../parameters/library/section-key.yaml"
- $ref: "../../../parameters/type.yaml"
- $ref: "../../../parameters/include-meta.yaml"
- $ref: "../../../parameters/include-guids.yaml"
- $ref: "../../../parameters/include-advanced.yaml"
- $ref: "../../../parameters/include-collections.yaml"
- $ref: "../../../parameters/include-external-media.yaml"
- $ref: "../../../parameters/container-start.yaml"
- $ref: "../../../parameters/container-size.yaml"
- $ref: "../../../parameters/accept-application-json.yaml"
responses:
"200":
description: Successful response containing media container data.
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "../../../models/media-container/size.yaml"
- $ref: "../../../models/media-container/total-size.yaml"
- $ref: "../../../models/media-container/offset.yaml"
- $ref: "../../../models/media-container/allow-sync.yaml"
- $ref: "../../../models/media-container/art.yaml"
- $ref: "../../../models/media-container/content.yaml"
- $ref: "../../../models/media-container/identifier.yaml"
- $ref: "../../../models/media-container/library-section-id.yaml"
- $ref: "../../../models/media-container/library-section-title.yaml"
- $ref: "../../../models/media-container/library-section-uuid.yaml"
- $ref: "../../../models/media-container/media-tag-prefix.yaml"
- $ref: "../../../models/media-container/media-tag-version.yaml"
- $ref: "../../../models/media-container/thumb.yaml"
- $ref: "../../../models/media-container/nocache.yaml"
- $ref: "../../../models/media-container/title1.yaml"
- $ref: "../../../models/media-container/title2.yaml"
- $ref: "../../../models/media-container/view-group.yaml"
- type: object
properties:
Meta:
$ref: "../../../models/Meta.yaml"
Metadata:
type: array
description: "An array of metadata items."
items:
required:
- type
allOf:
- $ref: "../../../models/meta-data/rating-key.yaml"
- $ref: "../../../models/meta-data/key.yaml"
- $ref: "../../../models/meta-data/guid.yaml"
- $ref: "../../../models/meta-data/slug.yaml"
- $ref: "../../../models/meta-data/studio.yaml"
- $ref: "../../../models/meta-data/type.yaml"
- $ref: "../../../models/meta-data/title.yaml"
- $ref: "../../../models/meta-data/title-sort.yaml"
- $ref: "../../../models/meta-data/content-rating.yaml"
- $ref: "../../../models/meta-data/summary.yaml"
- $ref: "../../../models/meta-data/rating.yaml"
- $ref: "../../../models/meta-data/audience-rating.yaml"
- $ref: "../../../models/meta-data/year.yaml"
- $ref: "../../../models/meta-data/tagline.yaml"
- $ref: "../../../models/meta-data/thumb.yaml"
- $ref: "../../../models/meta-data/art.yaml"
- $ref: "../../../models/meta-data/theme.yaml"
- $ref: "../../../models/meta-data/index.yaml"
- $ref: "../../../models/meta-data/leaf-count.yaml"
- $ref: "../../../models/meta-data/viewed-leaf-count.yaml"
- $ref: "../../../models/meta-data/child-count.yaml"
- $ref: "../../../models/meta-data/season-count.yaml"
- $ref: "../../../models/meta-data/duration.yaml"
- $ref: "../../../models/meta-data/originally-available-at.yaml"
- $ref: "../../../models/meta-data/added-at.yaml"
- $ref: "../../../models/meta-data/updated-at.yaml"
- $ref: "../../../models/meta-data/audience-rating-image.yaml"
- $ref: "../../../models/meta-data/chapter-source.yaml"
- $ref: "../../../models/meta-data/primary-extra-key.yaml"
- $ref: "../../../models/meta-data/original-title.yaml"
- $ref: "../../../models/meta-data/parent-rating-key.yaml"
- $ref: "../../../models/meta-data/grandparent-rating-key.yaml"
- $ref: "../../../models/meta-data/parent-guid.yaml"
- $ref: "../../../models/meta-data/grandparent-guid.yaml"
- $ref: "../../../models/meta-data/grandparent-slug.yaml"
- $ref: "../../../models/meta-data/grandparent-key.yaml"
- $ref: "../../../models/meta-data/parent-key.yaml"
- $ref: "../../../models/meta-data/grandparent-title.yaml"
- $ref: "../../../models/meta-data/grandparent-thumb.yaml"
- $ref: "../../../models/meta-data/grandparent-theme.yaml"
- $ref: "../../../models/meta-data/grandparent-art.yaml"
- $ref: "../../../models/meta-data/parent-title.yaml"
- $ref: "../../../models/meta-data/parent-index.yaml"
- $ref: "../../../models/meta-data/parent-thumb.yaml"
- $ref: "../../../models/meta-data/rating-image.yaml"
- $ref: "../../../models/meta-data/view-count.yaml"
- $ref: "../../../models/meta-data/view-offset.yaml"
- $ref: "../../../models/meta-data/skip-count.yaml"
- $ref: "../../../models/meta-data/subtype.yaml"
- $ref: "../../../models/meta-data/last-rated-at.yaml"
- $ref: "../../../models/meta-data/created-at-accuracy.yaml"
- $ref: "../../../models/meta-data/created-at-tz-offset.yaml"
- $ref: "../../../models/meta-data/last-viewed-at.yaml"
- $ref: "../../../models/meta-data/user-rating.yaml"
- $ref: "../../../models/meta-data/objects/image.yaml"
- $ref: "../../../models/meta-data/objects/ultra-blur-colors.yaml"
- type: object
properties:
Media:
allOf:
- $ref: "../../../models/Media-data.yaml"
Genre:
type: array
items:
allOf:
- $ref: "../../../models/country/tag.yaml"
Country:
type: array
items:
allOf:
- $ref: "../../../models/country/tag.yaml"
Director:
type: array
items:
allOf:
- $ref: "../../../models/director/tag.yaml"
Writer:
type: array
items:
allOf:
- $ref: "../../../models/writer/tag.yaml"
Role:
type: array
items:
allOf:
- $ref: "../../../models/role/tag.yaml"
Guid:
x-speakeasy-name-override: guids
type: array
items:
type: object
properties:
id:
type: string
description: |
The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
example: tvdb://2337
Collection:
type: array
items:
allOf:
- $ref: "../../../models/collection/tag.yaml"
"400":
$ref: "../../../responses/400.yaml"
"401":
$ref: "../../../responses/401.yaml"
"404":
$ref: "../../../responses/404-html.yaml"

View File

@@ -19,49 +19,20 @@ get:
properties:
MediaContainer:
allOf:
- $ref: "../../../models/MediaContainer.yaml"
- $ref: "../../../models/media-container/size.yaml"
- $ref: "../../../models/media-container/allow-sync.yaml"
- $ref: "../../../models/media-container/art.yaml"
- $ref: "../../../models/media-container/content.yaml"
- $ref: "../../../models/media-container/identifier.yaml"
- $ref: "../../../models/media-container/media-tag-prefix.yaml"
- $ref: "../../../models/media-container/media-tag-version.yaml"
- $ref: "../../../models/media-container/nocache.yaml"
- $ref: "../../../models/media-container/thumb.yaml"
- $ref: "../../../models/media-container/title1.yaml"
- $ref: "../../../models/media-container/title2.yaml"
- $ref: "../../../models/media-container/view-group.yaml"
- type: object
required:
- size
- allowSync
- art
- content
- identifier
- mediaTagPrefix
- mediaTagVersion
- nocache
- thumb
- title1
- title2
- viewGroup
properties:
art:
type: string
example: "/:/resources/show-fanart.jpg"
content:
type: string
example: "secondary"
mediaTagPrefix:
type: string
example: "/system/bundle/media/flags/"
mediaTagVersion:
type: integer
example: 1734362201
nocache:
type: boolean
example: true
thumb:
type: string
example: "/:/resources/show.png"
title1:
type: string
example: "TV Series"
title2:
type: string
example: "By Country"
viewGroup:
type: string
example: "secondary"
Directory:
type: array
items:

View File

@@ -19,49 +19,20 @@ get:
properties:
MediaContainer:
allOf:
- $ref: "../../../models/MediaContainer.yaml"
- $ref: "../../../models/media-container/size.yaml"
- $ref: "../../../models/media-container/allow-sync.yaml"
- $ref: "../../../models/media-container/art.yaml"
- $ref: "../../../models/media-container/content.yaml"
- $ref: "../../../models/media-container/identifier.yaml"
- $ref: "../../../models/media-container/media-tag-prefix.yaml"
- $ref: "../../../models/media-container/media-tag-version.yaml"
- $ref: "../../../models/media-container/nocache.yaml"
- $ref: "../../../models/media-container/thumb.yaml"
- $ref: "../../../models/media-container/title1.yaml"
- $ref: "../../../models/media-container/title2.yaml"
- $ref: "../../../models/media-container/view-group.yaml"
- type: object
required:
- size
- allowSync
- art
- content
- identifier
- mediaTagPrefix
- mediaTagVersion
- nocache
- thumb
- title1
- title2
- viewGroup
properties:
art:
type: string
example: "/:/resources/show-fanart.jpg"
content:
type: string
example: "secondary"
mediaTagPrefix:
type: string
example: "/system/bundle/media/flags/"
mediaTagVersion:
type: integer
example: 1734362201
nocache:
type: boolean
example: true
thumb:
type: string
example: "/:/resources/show.png"
title1:
type: string
example: "TV Shows (Reality)"
title2:
type: string
example: "By Genre"
viewGroup:
type: string
example: "secondary"
Directory:
type: array
items:

View File

@@ -33,7 +33,6 @@ get:
schema:
type: string
enum:
- all
- unwatched
- newest
- recentlyAdded
@@ -41,12 +40,9 @@ get:
- onDeck
- collection
- edition
- genre
- year
- decade
- director
- actor
- country
- contentRating
- rating
- resolution

View File

@@ -140,21 +140,15 @@ get:
- librarySectionTitle
- librarySectionID
- librarySectionKey
- contentRating
- summary
- audienceRating
- year
- thumb
- art
- duration
- originallyAvailableAt
- addedAt
- updatedAt
- audienceRatingImage
- Image
- UltraBlurColors
- Guid
- Rating
properties:
ratingKey:
type: string
@@ -268,7 +262,17 @@ get:
year:
type: integer
description: "The release year."
format: int32
example: 2015
rating:
type: number
format: float
description: "The general rating"
example: 6.0
ratingImage:
type: string
description: "The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image)."
example: "rottentomatoes://image.rating.ripe"
tagline:
type: string
description: "The tagline of the content."
@@ -295,6 +299,7 @@ get:
type: integer
description: "Duration of the content in milliseconds."
example: 2700000
format: int32
originallyAvailableAt:
type: string
format: date
@@ -311,15 +316,16 @@ get:
childCount:
type: integer
description: "The number of child items."
format: int32
example: 6
addedAt:
type: integer
description: "Unix timestamp when the item was added."
example: 1625505101
allOf:
- description: "Unix timestamp when the item was added."
- $ref: "../../../../models/common/PlexDateTime.yaml"
updatedAt:
type: integer
description: "Unix timestamp when the item was last updated."
example: 1736487993
allOf:
- description: "Unix timestamp when the item was last updated."
- $ref: "../../../../models/common/PlexDateTime.yaml"
audienceRatingImage:
type: string
description: "The URL for the audience rating image."
@@ -424,6 +430,7 @@ get:
id:
type: integer
description: "The unique country identifier."
format: int32
example: 58591
filter:
type: string
@@ -447,6 +454,7 @@ get:
description: "The GUID value."
example: "imdb://tt3032476"
Rating:
x-speakeasy-name-override: Ratings
type: array
description: "An array of rating objects."
items:

View File

@@ -165,6 +165,8 @@ paths:
/library/sections/{sectionKey}/{tag}:
$ref: "./paths/library/[sectionKey]/get-library-items.yaml"
/library/sections/{sectionKey}/all:
$ref: "./paths/library/[sectionKey]/get-library-all.yaml"
/library/sections/{sectionKey}/refresh:
$ref: "./paths/library/[sectionKey]/refresh/get-refresh-library-metadata.yaml"
/library/sections/{sectionKey}/search:

File diff suppressed because it is too large Load Diff

View File

@@ -4488,4 +4488,900 @@ describe("GET /library/metadata/[RatingKey]/", () => {
validateResponseSpec("/library/metadata/{ratingKey}", "get", 200, response)
})
it("should validate the 200 response when the response is from Episode", () => {
const response = {
MediaContainer: {
size: 1,
allowSync: true,
identifier: "com.plexapp.plugins.library",
librarySectionID: 1,
librarySectionTitle: "Movies",
librarySectionUUID: "0e71027d-88bc-4413-9927-5aad992d3d19",
mediaTagPrefix: "/system/bundle/media/flags/",
mediaTagVersion: 1734362201,
Metadata: [
{
ratingKey: "9881",
key: "/library/metadata/9881",
guid: "plex://movie/5d776834961905001eb939ac",
slug: "91-2-weeks",
studio: "Jonesfilm",
type: "movie",
title: "9½ Weeks",
librarySectionTitle: "Movies",
librarySectionID: 1,
librarySectionKey: "/library/sections/1",
originalTitle: "Nine 1/2 Weeks",
contentRating: "nl/12",
summary:
"An erotic story about a woman, the assistant of an art gallery, who gets involved in an impersonal affair with a man. She barely knows about his life, only about the sex games they play, so the relationship begins to get complicated.",
rating: 6.0,
audienceRating: 5.5,
year: 1986,
tagline: "They Broke Every Rule.",
thumb: "/library/metadata/9881/thumb/1732511607",
art: "/library/metadata/9881/art/1732511607",
duration: 7011007,
originallyAvailableAt: "1986-02-09",
addedAt: 1560801795,
updatedAt: 1732511607,
audienceRatingImage: "rottentomatoes://image.rating.spilled",
chapterSource: "media",
ratingImage: "rottentomatoes://image.rating.ripe",
Media: [
{
id: 12306,
duration: 7011007,
bitrate: 13003,
width: 1920,
height: 1080,
aspectRatio: 1.78,
audioChannels: 6,
audioCodec: "dca",
videoCodec: "h264",
videoResolution: "1080",
container: "mkv",
videoFrameRate: "24p",
audioProfile: "dts",
videoProfile: "high",
hasVoiceActivity: false,
Part: [
{
id: 41930,
key: "/library/parts/41930/1501053187/file.mkv",
duration: 7011007,
file: "/Movies/Nine 1+2 Weeks (1986)/Nine.and.a.Half.Weeks.1986.1080p.BluRay.DTS.x264-HDMaNiAcS.mkv",
size: 11394952434,
audioProfile: "dts",
container: "mkv",
indexes: "sd",
videoProfile: "high",
Stream: [
{
id: 100031,
streamType: 1,
default: true,
codec: "h264",
index: 0,
bitrate: 11494,
language: "English",
languageTag: "en",
languageCode: "eng",
bitDepth: 8,
chromaLocation: "left",
chromaSubsampling: "4:2:0",
codedHeight: 1088,
codedWidth: 1920,
frameRate: 23.976,
hasScalingMatrix: false,
headerCompression: true,
height: 1080,
level: 41,
profile: "high",
refFrames: 4,
scanType: "progressive",
title:
"Nine.Half.Weeks.1986.1080p.BluRay.DTS.x264-HDMaNiAcS",
width: 1920,
displayTitle: "1080p",
extendedDisplayTitle:
"Nine.Half.Weeks.1986.1080p.BluRay.DTS.x264-HDMaNiAcS (1080p H.264)"
},
{
id: 100032,
streamType: 2,
selected: true,
default: true,
codec: "dca",
index: 1,
channels: 6,
bitrate: 1509,
language: "English",
languageTag: "en",
languageCode: "eng",
audioChannelLayout: "5.1(side)",
bitDepth: 24,
headerCompression: true,
profile: "dts",
samplingRate: 48000,
displayTitle: "English (DTS 5.1)",
extendedDisplayTitle: "English (DTS 5.1)"
},
{
id: 100033,
streamType: 3,
canAutoSync: false,
default: true,
codec: "srt",
index: 2,
bitrate: 0,
language: "English",
languageTag: "en",
languageCode: "eng",
displayTitle: "English",
extendedDisplayTitle: "English (SRT)"
},
{
id: 100034,
streamType: 3,
canAutoSync: false,
codec: "srt",
index: 3,
bitrate: 0,
language: "Greek",
languageTag: "el",
languageCode: "ell",
displayTitle: "Greek",
extendedDisplayTitle: "Greek (SRT)"
},
{
id: 100035,
streamType: 3,
canAutoSync: false,
codec: "srt",
index: 4,
bitrate: 0,
language: "Dutch",
languageTag: "nl",
languageCode: "nld",
displayTitle: "Dutch",
extendedDisplayTitle: "Dutch (SRT)"
},
{
id: 100036,
streamType: 3,
canAutoSync: false,
codec: "srt",
index: 5,
bitrate: 0,
language: "French",
languageTag: "fr",
languageCode: "fra",
displayTitle: "French",
extendedDisplayTitle: "French (SRT)"
},
{
id: 100037,
streamType: 3,
canAutoSync: false,
codec: "srt",
index: 6,
bitrate: 0,
language: "Spanish",
languageTag: "es",
languageCode: "spa",
displayTitle: "Spanish",
extendedDisplayTitle: "Spanish (SRT)"
}
]
}
]
}
],
Image: [
{
alt: "9½ Weeks",
type: "coverPoster",
url: "/library/metadata/9881/thumb/1732511607"
},
{
alt: "9½ Weeks",
type: "background",
url: "/library/metadata/9881/art/1732511607"
},
{
alt: "9½ Weeks",
type: "clearLogo",
url: "/library/metadata/9881/clearLogo/1732511607"
}
],
UltraBlurColors: {
topLeft: "452410",
topRight: "0d0202",
bottomRight: "0d0202",
bottomLeft: "272223"
},
Genre: [
{ id: 91, filter: "genre=91", tag: "Drama" },
{ id: 2313, filter: "genre=2313", tag: "Romance" }
],
Country: [
{
id: 58591,
filter: "country=58591",
tag: "United States of America"
}
],
Guid: [
{ id: "imdb://tt0091635" },
{ id: "tmdb://10068" },
{ id: "tvdb://1165" }
],
Rating: [
{ image: "imdb://image.rating", value: 5.9, type: "audience" },
{
image: "rottentomatoes://image.rating.ripe",
value: 6.0,
type: "critic"
},
{
image: "rottentomatoes://image.rating.spilled",
value: 5.5,
type: "audience"
},
{
image: "themoviedb://image.rating",
value: 6.1,
type: "audience"
}
],
Director: [
{
id: 115243,
filter: "director=115243",
tag: "Adrian Lyne",
tagKey: "5d776827151a60001f24aac6",
thumb:
"https://metadata-static.plex.tv/6/people/6f6d8e5aefcae45e3ccb7843de68c905.jpg"
}
],
Writer: [
{
id: 119473,
filter: "writer=119473",
tag: "Sarah Kernochan",
tagKey: "5d776829eb5d26001f1ddfcd",
thumb:
"https://metadata-static.plex.tv/9/people/96dfb2020c32ddae0345c4a0aee59414.jpg"
},
{
id: 119474,
filter: "writer=119474",
tag: "Zalman King",
tagKey: "5d77682ff54112001f5bcc2e",
thumb:
"https://metadata-static.plex.tv/5/people/57a351f9a4343dca762ee432544bf34e.jpg"
},
{
id: 119475,
filter: "writer=119475",
tag: "Patricia Louisianna Knop",
tagKey: "5d77682ff54112001f5bcc3f",
thumb:
"https://metadata-static.plex.tv/4/people/46956d0e94d2446fb7c1e46d247d645a.jpg"
},
{
id: 119476,
filter: "writer=119476",
tag: "Elizabeth McNeill",
tagKey: "5dcd37dc27f42b001fe2a264"
}
],
Role: [
{
id: 112471,
filter: "actor=112471",
tag: "Mickey Rourke",
tagKey: "5d7768254de0ee001fcc8142",
role: "John",
thumb:
"https://metadata-static.plex.tv/9/people/957b644e5f8a141ae9715d7208ed11c7.jpg"
},
{
id: 114907,
filter: "actor=114907",
tag: "Kim Basinger",
tagKey: "5d776826e6d55c002040af92",
role: "Elizabeth",
thumb:
"https://metadata-static.plex.tv/4/people/4b7cdc723474d2effa3e53e37db88f0b.jpg"
},
{
id: 119477,
filter: "actor=119477",
tag: "Margaret Whitton",
tagKey: "5d77683454f42c001f8c42c9",
role: "Molly",
thumb:
"https://metadata-static.plex.tv/b/people/ba5f44eec74e0c12e4cb8924e88bb688.jpg"
},
{
id: 119478,
filter: "actor=119478",
tag: "David Margulies",
tagKey: "5d7768273c3c2a001fbcb1ca",
role: "Harvey",
thumb:
"https://metadata-static.plex.tv/people/5d7768273c3c2a001fbcb1ca.jpg"
},
{
id: 118305,
filter: "actor=118305",
tag: "Christine Baranski",
tagKey: "5d776828151a60001f24af12",
role: "Thea",
thumb:
"https://metadata-static.plex.tv/f/people/f9f3e932357029ab6ec4bf0c128c2cb4.jpg"
},
{
id: 119479,
filter: "actor=119479",
tag: "Karen Young",
tagKey: "5d77682754f42c001f8c2a3c",
role: "Sue",
thumb:
"https://metadata-static.plex.tv/3/people/36d0e412b0d58d6939d1976d306c10c4.jpg"
},
{
id: 119480,
filter: "actor=119480",
tag: "Dwight Weist",
tagKey: "5d776835961905001eb93cd7",
role: "Farnsworth",
thumb:
"https://metadata-static.plex.tv/4/people/4cf65442c74948fcd6758c6b77165019.jpg"
},
{
id: 119481,
filter: "actor=119481",
tag: "Roderick Cook",
tagKey: "5d776825151a60001f24a6d2",
role: "Sinclair - the Critic",
thumb:
"https://metadata-static.plex.tv/people/5d776825151a60001f24a6d2.jpg"
},
{
id: 119482,
filter: "actor=119482",
tag: "Victor Truro",
tagKey: "5d7768278718ba001e311e97",
role: "Gallery Client",
thumb:
"https://metadata-static.plex.tv/a/people/ac35e61b7f92d7e71f676c5742972a6f.jpg"
},
{
id: 119483,
filter: "actor=119483",
tag: "Justine Johnston",
tagKey: "5d776835961905001eb93cd8",
role: "Bedding Saleswoman",
thumb:
"https://metadata-static.plex.tv/people/5d776835961905001eb93cd8.jpg"
},
{
id: 119484,
filter: "actor=119484",
tag: "Julian Beck",
tagKey: "5d776835961905001eb93cd9",
role: "Dinner Guest",
thumb:
"https://metadata-static.plex.tv/people/5d776835961905001eb93cd9.jpg"
},
{
id: 203253,
filter: "actor=203253",
tag: "Michael Margotta",
tagKey: "5d776835961905001eb93cda",
role: "Michael",
thumb:
"https://metadata-static.plex.tv/people/5d776835961905001eb93cda.jpg"
},
{
id: 203254,
filter: "actor=203254",
tag: "Petina Cole",
tagKey: "5dd2c65235afd6001e030cf2",
role: "Woman on Stage at Porno House",
thumb:
"https://metadata-static.plex.tv/f/people/f9ab0a292d3d5d2a59a99bd80341a11d.jpg"
},
{
id: 119487,
filter: "actor=119487",
tag: "Joey Silvera",
tagKey: "5d776835961905001eb93cdc",
role: "Man on Stage at Porno House",
thumb:
"https://metadata-static.plex.tv/8/people/8c4772b1fb3490c51e723d7aa8a1ed27.jpg"
},
{
id: 119488,
filter: "actor=119488",
tag: "Sarah Kernochan",
tagKey: "5d776829eb5d26001f1ddfcd",
role: "Gallery Guest",
thumb:
"https://metadata-static.plex.tv/9/people/96dfb2020c32ddae0345c4a0aee59414.jpg"
},
{
id: 113440,
filter: "actor=113440",
tag: "Helen Hanft",
tagKey: "5d7768278718ba001e311e99",
role: "Flea Market Shawl Seller",
thumb:
"https://metadata-static.plex.tv/5/people/5f0b6b7603e7201abc7ae7a178dd7a3b.jpg"
},
{
id: 203255,
filter: "actor=203255",
tag: "William De Acutis",
tagKey: "5d77683185719b001f3a2bb3",
role: "Ted",
thumb:
"https://metadata-static.plex.tv/e/people/ebf48881699b18061c49cea38d8a8768.jpg"
},
{
id: 203256,
filter: "actor=203256",
tag: "Cintia Cruz",
tagKey: "5d776835961905001eb93cdd",
role: "Whore"
},
{
id: 119491,
filter: "actor=119491",
tag: "Kim Chan",
tagKey: "5d776824103a2d001f563ad5",
role: "Chinatown Butcher",
thumb:
"https://metadata-static.plex.tv/people/5d776824103a2d001f563ad5.jpg"
},
{
id: 181883,
filter: "actor=181883",
tag: "Lee Lai Sing",
tagKey: "632092957b6301b7f349c8d4",
role: "Angry Chinese Customer"
},
{
id: 119493,
filter: "actor=119493",
tag: "Rudolph Willrich",
tagKey: "5d776835961905001eb93cdf",
role: "Chinatown Shopper",
thumb:
"https://metadata-static.plex.tv/8/people/82fa468de3861338bfe4959523a8cb0a.jpg"
},
{
id: 119494,
filter: "actor=119494",
tag: "Michael P. Moran",
tagKey: "5d7768262e80df001ebdce0b",
role: "Flea Market Chicken Seller",
thumb:
"https://metadata-static.plex.tv/f/people/fd5f72c277bcd9935d3e29241e220714.jpg"
},
{
id: 118024,
filter: "actor=118024",
tag: "Raynor Scheine",
tagKey: "5d776827880197001ec90a05",
role: "Flower Delivery Boy",
thumb:
"https://metadata-static.plex.tv/5/people/58ba341047a2498f2eb90ffef11c29b4.jpg"
},
{
id: 119495,
filter: "actor=119495",
tag: "Olek Krupa",
tagKey: "5d7768265af944001f1f6658",
role: "Bruce",
thumb:
"https://metadata-static.plex.tv/d/people/db7a5a43bba485d18322846dc2f37bf4.jpg"
},
{
id: 119496,
filter: "actor=119496",
tag: "John P. Connolly",
tagKey: "5d776835961905001eb93ce0",
role: "Dinner Guest"
},
{
id: 119497,
filter: "actor=119497",
tag: "Cassandra Danz",
tagKey: "5d776835961905001eb93ce1",
role: "Dinner Guest"
},
{
id: 119498,
filter: "actor=119498",
tag: "Beata Jachulski",
tagKey: "5d776835961905001eb93ce2",
role: "Dinner Guest"
},
{
id: 119499,
filter: "actor=119499",
tag: "Peter Pagan",
tagKey: "5d776835961905001eb93ce3",
role: "Riding Crop Salesman"
},
{
id: 119500,
filter: "actor=119500",
tag: "Terri Perri",
tagKey: "5d776826a091de001f2e61f9",
role: "Italian Singer"
},
{
id: 119501,
filter: "actor=119501",
tag: "Charles Malota",
tagKey: "5d776835961905001eb93ce4",
role: "Coney Island Boy"
},
{
id: 119502,
filter: "actor=119502",
tag: "Daniel E. Amrich",
tagKey: "5d776835961905001eb93ce5",
role: "Coney Island Boy"
},
{
id: 119503,
filter: "actor=119503",
tag: "Salvatore Sciangula",
tagKey: "5d776835961905001eb93ce6",
role: "Coney Island Boy"
},
{
id: 119504,
filter: "actor=119504",
tag: "Kim Michel",
tagKey: "5d776835961905001eb93ce7",
role: "Soap Opera Woman"
},
{
id: 119505,
filter: "actor=119505",
tag: "Jeff Severson",
tagKey: "5d776835961905001eb93ce8",
role: "Soap Opera Man"
},
{
id: 119506,
filter: "actor=119506",
tag: "Dan Lauria",
tagKey: "5d77682cf59e580021897bee",
role: "Janitor",
thumb:
"https://metadata-static.plex.tv/d/people/d222064496a31fbcaa8992db0d2283dc.jpg"
},
{
id: 119507,
filter: "actor=119507",
tag: "Corey Parker",
tagKey: "5d776835961905001eb93ce9",
role: "Janitor",
thumb:
"https://metadata-static.plex.tv/3/people/3f539205130ec7b6729a7b4af0de2db9.jpg"
},
{
id: 119508,
filter: "actor=119508",
tag: "Joe Maruzzo",
tagKey: "5d776835961905001eb93cea",
role: "Garbageman",
thumb:
"https://metadata-static.plex.tv/people/5d776835961905001eb93cea.jpg"
},
{
id: 119509,
filter: "actor=119509",
tag: "Tom Traino",
tagKey: "5d776835961905001eb93ceb",
role: "Garbageman"
},
{
id: 119510,
filter: "actor=119510",
tag: "Corvova Choy Lee",
tagKey: "5d776835961905001eb93cec",
role: "Clothing Saleswoman"
},
{
id: 119511,
filter: "actor=119511",
tag: "Ellen Barber",
tagKey: "5d776835961905001eb93ced",
role: "John's Secretary",
thumb:
"https://metadata-static.plex.tv/8/people/8c94f4c0c043cdcbfb1ebdfdd5c3b7cc.jpg"
},
{
id: 119512,
filter: "actor=119512",
tag: "Ethel Ayler",
tagKey: "5d7768276f4521001ea99134",
role: "Jewelry Saleswoman",
thumb:
"https://metadata-static.plex.tv/6/people/6455789c1c3f3e7225a1274637a2d279.jpg"
},
{
id: 119513,
filter: "actor=119513",
tag: "Elisabeth Senn",
tagKey: "5d776835961905001eb93cee",
role: "Perfume Lady"
},
{
id: 119514,
filter: "actor=119514",
tag: "Gittan Goding",
tagKey: "5d776835961905001eb93cef",
role: "Dancer at Porno House"
},
{
id: 119515,
filter: "actor=119515",
tag: "David M. Everard",
tagKey: "5d776835961905001eb93cf0",
role: "Bearded Man at Porno House"
},
{
id: 119516,
filter: "actor=119516",
tag: "Luther Rucker",
tagKey: "5d776835961905001eb93cf1",
role: "Barker at Porno House"
},
{
id: 119517,
filter: "actor=119517",
tag: "Merry Clayton",
tagKey: "5d77682b999c64001ec2d6c9",
role: "Background Vocal at Porno House",
thumb:
"https://metadata-static.plex.tv/1/people/1a4a170d5cf2ba3eecacb9e54002e5c0.jpg"
},
{
id: 119518,
filter: "actor=119518",
tag: "Kim Isaacson",
tagKey: "5d776835961905001eb93cf2",
role: "Gallery Guest"
},
{
id: 255665,
filter: "actor=255665",
tag: "David Tabor",
tagKey: "5d776835961905001eb93cf3",
role: "Leon Berger"
}
],
Producer: [
{
id: 203257,
filter: "producer=203257",
tag: "Alan M. Harris",
tagKey: "5d77682f151a60001f24c92f",
thumb:
"https://metadata-static.plex.tv/c/people/cb6864282bb169e153b82f642af74010.jpg"
},
{
id: 119521,
filter: "producer=119521",
tag: "Sidney Kimmel",
tagKey: "5d776831103a2d001f566d79",
thumb:
"https://metadata-static.plex.tv/5/people/533a50f9436f9ba20ecd5b0d164c374c.jpg"
},
{
id: 119522,
filter: "producer=119522",
tag: "Zalman King",
tagKey: "5d77682ff54112001f5bcc2e",
thumb:
"https://metadata-static.plex.tv/5/people/57a351f9a4343dca762ee432544bf34e.jpg"
},
{
id: 119523,
filter: "producer=119523",
tag: "Antony Rufus-Isaacs",
tagKey: "5d776835961905001eb93cd6"
}
],
Similar: [
{ id: 16619, filter: "similar=16619", tag: "Wild Orchid" },
{ id: 16521, filter: "similar=16521", tag: "Fatal Attraction" },
{ id: 16522, filter: "similar=16522", tag: "Indecent Proposal" },
{ id: 16485, filter: "similar=16485", tag: "Striptease" },
{ id: 5014, filter: "similar=5014", tag: "Disclosure" },
{ id: 16434, filter: "similar=16434", tag: "Tequila Sunrise" },
{ id: 16614, filter: "similar=16614", tag: "No Way Out" },
{
id: 5641,
filter: "similar=5641",
tag: "The Jewel of the Nile"
},
{
id: 16617,
filter: "similar=16617",
tag: "The Witches of Eastwick"
},
{
id: 16616,
filter: "similar=16616",
tag: "The Bonfire of the Vanities"
},
{ id: 16436, filter: "similar=16436", tag: "The Getaway" },
{ id: 16610, filter: "similar=16610", tag: "Cocktail" },
{ id: 12196, filter: "similar=12196", tag: "Working Girl" },
{ id: 16609, filter: "similar=16609", tag: "Blind Date" },
{
id: 46198,
filter: "similar=46198",
tag: "The War of the Roses"
},
{ id: 16484, filter: "similar=16484", tag: "Sliver" },
{
id: 46199,
filter: "similar=46199",
tag: "The Postman Always Rings Twice"
},
{ id: 5639, filter: "similar=5639", tag: "Romancing the Stone" },
{ id: 16615, filter: "similar=16615", tag: "Sea of Love" },
{ id: 16611, filter: "similar=16611", tag: "Frankie and Johnny" }
]
}
]
}
}
validateResponseSpec("/library/metadata/{ratingKey}", "get", 200, response)
})
it("should validate the 200 response when the response is from Episode", () => {
const response = {
MediaContainer: {
size: 1,
allowSync: true,
identifier: "com.plexapp.plugins.library",
librarySectionID: 6,
librarySectionTitle: "Movies (Documentaries)",
librarySectionUUID: "d6a09f3a-3027-4a2f-bb0d-14d6d2b93533",
mediaTagPrefix: "/system/bundle/media/flags/",
mediaTagVersion: 1734362201,
Metadata: [
{
ratingKey: "56939",
key: "/library/metadata/56939",
guid: "local://56939",
type: "movie",
title: "Boiling Point",
librarySectionTitle: "Movies (Documentaries)",
librarySectionID: 6,
librarySectionKey: "/library/sections/6",
summary: "",
year: 1999,
thumb: "/library/metadata/56939/thumb/1737312638",
art: "/library/metadata/56939/art/1737312638",
duration: 8109499,
addedAt: 1622054437,
updatedAt: 1737312638,
Media: [
{
id: 60981,
duration: 8109499,
bitrate: 11710,
width: 2880,
height: 2160,
aspectRatio: 1.33,
audioChannels: 2,
audioCodec: "aac",
videoCodec: "vp9",
videoResolution: "4k",
container: "mkv",
videoFrameRate: "PAL",
audioProfile: "lc",
videoProfile: "profile 0",
hasVoiceActivity: false,
Part: [
{
id: 92023,
key: "/library/parts/92023/1602116112/file.mkv",
duration: 8109499,
file: "/Movies (Documentaries)/Boiling Point (1999)/Boiling Point (1999) WEBDL-2160p.mkv",
size: 11874057616,
audioProfile: "lc",
container: "mkv",
indexes: "sd",
videoProfile: "profile 0",
Stream: [
{
id: 304223,
streamType: 1,
default: true,
codec: "vp9",
index: 0,
bitrate: 11582,
language: "English",
languageTag: "en",
languageCode: "eng",
bitDepth: 8,
chromaSubsampling: "4:2:0",
codedHeight: 2160,
codedWidth: 2880,
colorPrimaries: "bt709",
colorRange: "tv",
colorSpace: "bt709",
colorTrc: "bt709",
frameRate: 25.0,
height: 2160,
profile: "profile 0",
refFrames: 1,
width: 2880,
displayTitle: "4K",
extendedDisplayTitle: "4K (VP9)"
},
{
id: 304224,
streamType: 2,
selected: true,
default: true,
codec: "aac",
index: 1,
channels: 2,
bitrate: 128,
language: "English",
languageTag: "en",
languageCode: "eng",
audioChannelLayout: "stereo",
profile: "lc",
samplingRate: 44100,
displayTitle: "English (AAC Stereo)",
extendedDisplayTitle: "English (AAC Stereo)"
}
]
}
]
}
],
Image: [
{
alt: "Boiling Point",
type: "coverPoster",
url: "/library/metadata/56939/thumb/1737312638"
},
{
alt: "Boiling Point",
type: "background",
url: "/library/metadata/56939/art/1737312638"
}
],
UltraBlurColors: {
topLeft: "421b15",
topRight: "170405",
bottomRight: "2a174e",
bottomLeft: "6f5b24"
}
}
]
}
}
validateResponseSpec("/library/metadata/{ratingKey}", "get", 200, response)
})
})