From 3994020ebb70ebd9e8b75cbfd39292c8ae329d52 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 1 Dec 2025 00:15:57 +0000 Subject: [PATCH] ## Typescript SDK Changes: * `plex-api.libraryPlaylists.addPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getMetadataHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryCollections.moveCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryCollections.deleteCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryCollections.addCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.content.getSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.butler.stopTask()`: `request` **Changed** **Breaking** :warning: * `plex-api.butler.startTask()`: `request` **Changed** **Breaking** :warning: * `plex-api.content.getSonicPath()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.downloadQueue.getItemDecision()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getAllHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getContinueWatching()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getPromotedHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.content.getAllLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getPostplayHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getRelatedHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.hubs.getSectionHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.content.listContent()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.content.getAlbums()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.search.searchHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.search.voiceSearchHubs()`: * `request.type` **Changed** **Breaking** :warning: * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getLibraryItems()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.ingestTransientItem()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getLibraryMatches()`: * `request` **Changed** **Breaking** :warning: * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.content.getMetadataItem()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getSections()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning: * `plex-api.library.addSection()`: * `request` **Changed** * `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning: * `plex-api.library.getTags()`: * `request.type` **Changed** **Breaking** :warning: * `plex-api.content.getCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getAllItemLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.status.listSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.movePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getExtras()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.deletePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.unshuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.listMatches()`: * `request.manual` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.listSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.resetPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getRelatedItems()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.listSimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.clearPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getItemTree()`: `response.mediacontainer.metadataItem.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.addToPlayQueue()`: * `request.next` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.getPlayQueue()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.movePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getPerson()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning: * `plex-api.library.listPersonMedia()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.getPlaylistGeneratorItems()`: `response.mediacontainer.metadata` **Changed** **Breaking** :warning: * `plex-api.library.getLibraryDetails()`: * `request.includeDetails` **Changed** * `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.modifyPlaylistGenerator()`: * `request.item` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.autocomplete()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getCollections()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.getCommon()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.deletePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.clearPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playQueue.shuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.libraryPlaylists.createPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playlist.getPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playlist.getPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.collections.createCollection()`: * `request.type` **Changed** **Breaking** :warning: * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.dvRs.tuneChannel()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.liveTv.getSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.liveTv.getLiveTvSession()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.playlist.listPlaylists()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.subscriptions.getAllSubscriptions()`: * `request` **Changed** * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.createSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.getScheduledRecordings()`: `response.mediacontainer.mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.getTemplate()`: `response.mediacontainer.subscriptionTemplate.[].mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.getSubscription()`: * `request` **Changed** * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.editSubscriptionPreferences()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.subscriptions.reorderSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning: * `plex-api.transcoder.makeDecision()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning: * `plex-api.library.refreshItemsMetadata()`: * `request.markUpdated` **Changed** * `plex-api.authentication.postUsersSignInData()`: **Added** * `plex-api.transcoder.startTranscodeSession()`: `request` **Changed** * `plex-api.devices.modifyDevice()`: * `request.enabled` **Changed** * `plex-api.library.getMediaPart()`: * `request.download` **Changed** * `plex-api.library.detectIntros()`: * `request.force` **Changed** * `plex-api.library.refreshSection()`: * `request.force` **Changed** * `plex-api.libraryPlaylists.uploadPlaylist()`: * `request.force` **Changed** * `plex-api.library.deleteMediaItem()`: * `request.proxy` **Changed** * `plex-api.authentication.getTokenDetails()`: **Added** * `plex-api.library.getFirstCharacters()`: * `request.mediaQuery` **Changed** * `plex-api.library.updateItems()`: * `request.field.locked` **Changed** * `plex-api.library.deleteLibrarySection()`: * `request.async` **Changed** * `plex-api.library.setStreamSelection()`: * `request.allParts` **Changed** * `plex-api.playQueue.createPlayQueue()`: `request` **Changed** * `plex-api.library.getAugmentationStatus()`: * `request.wait` **Changed** * `plex-api.library.detectVoiceActivity()`: `request` **Changed** * `plex-api.transcoder.transcodeImage()`: `request` **Changed** * `plex-api.transcoder.transcodeSubtitles()`: `request` **Changed** * `plex-api.library.addSubtitles()`: `request` **Changed** * `plex-api.library.getStream()`: * `request.autoAdjustSubtitle` **Changed** * `plex-api.library.startBifGeneration()`: * `request.force` **Changed** * `plex-api.library.detectCredits()`: `request` **Changed** * `plex-api.ultraBlur.getImage()`: * `request.noise` **Changed** * `plex-api.library.generateThumbs()`: * `request.force` **Changed** * `plex-api.updater.applyUpdates()`: `request` **Changed** * `plex-api.updater.checkUpdates()`: * `request.download` **Changed** * `plex-api.library.deleteMetadataItem()`: * `request.proxy` **Changed** * `plex-api.library.optimizeDatabase()`: * `request.async` **Changed** * `plex-api.hubs.updateHubVisibility()`: `request` **Changed** * `plex-api.hubs.createCustomHub()`: `request` **Changed** * `plex-api.library.getSectionImage()`: * `request.mediaQuery` **Changed** * `plex-api.downloadQueue.addDownloadQueueItems()`: `request` **Changed** * `plex-api.timeline.report()`: `request` **Changed** * `plex-api.general.getSourceConnectionInformation()`: * `request.refresh` **Changed** * `plex-api.plex.getServerResources()`: **Added** * `plex-api.users.getUsers()`: **Added** --- .speakeasy/gen.lock | 346 +++++-- .speakeasy/gen.yaml | 8 +- .speakeasy/tests.arazzo.yaml | 342 +++++-- .speakeasy/workflow.lock | 14 +- FUNCTIONS.md | 15 +- README.md | 110 ++- RELEASES.md | 12 +- USAGE.md | 15 +- codeSamples.yaml | 727 ++++++++++++--- .../getserverresourcesunauthorizederror.md | 18 + .../errors/gettokendetailsbadrequesterror.md | 18 + .../gettokendetailsunauthorizederror.md | 18 + .../models/errors/getusersbadrequesterror.md | 18 + .../errors/getusersunauthorizederror.md | 18 + .../postuserssignindatabadrequesterror.md | 18 + .../postuserssignindataunauthorizederror.md | 18 + .../adddownloadqueueitemsrequest.md | 20 +- .../models/operations/addsectionrequest.md | 4 +- .../models/operations/addsubtitlesrequest.md | 4 +- .../operations/addtoplayqueuerequest.md | 2 +- docs/sdk/models/operations/alllibraries.md | 18 + .../models/operations/allowcameraupload.md | 18 + docs/sdk/models/operations/allowchannels.md | 18 + .../models/operations/allowsubtitleadmin.md | 18 + docs/sdk/models/operations/allowsync.md | 18 + docs/sdk/models/operations/allowtuners.md | 18 + .../models/operations/applyupdatesrequest.md | 4 +- .../models/operations/autocompleterequest.md | 40 +- docs/sdk/models/operations/billing.md | 19 + docs/sdk/models/operations/butlertasks.md | 6 +- .../models/operations/checkupdatesrequest.md | 2 +- .../operations/createcollectionrequest.md | 38 +- .../operations/createcustomhubrequest.md | 6 +- .../operations/createplayqueuerequest.md | 10 +- .../createsubscriptionmediacontainer.md | 92 +- .../createsubscriptionresponsebody.md | 92 +- .../operations/deletelibrarysectionrequest.md | 2 +- .../operations/deletemediaitemrequest.md | 2 +- .../operations/deletemetadataitemrequest.md | 2 +- .../models/operations/detectcreditsrequest.md | 4 +- .../models/operations/detectintrosrequest.md | 2 +- .../operations/detectvoiceactivityrequest.md | 4 +- .../operations/generatethumbsrequest.md | 2 +- .../operations/getallhubsmediacontainer.md | 92 +- .../models/operations/getallhubsrequest.md | 2 +- .../operations/getallhubsresponsebody.md | 92 +- .../operations/getallsubscriptionsrequest.md | 4 +- .../getaugmentationstatusrequest.md | 2 +- .../operations/getcollectionsrequest.md | 36 +- .../sdk/models/operations/getcommonrequest.md | 38 +- .../getcontinuewatchingmediacontainer.md | 92 +- .../getcontinuewatchingresponsebody.md | 92 +- .../operations/getfirstcharactersrequest.md | 40 +- docs/sdk/models/operations/getimagerequest.md | 2 +- .../getlibrarydetailsmediacontainer.md | 92 +- .../operations/getlibrarydetailsrequest.md | 2 +- .../getlibrarydetailsresponsebody.md | 92 +- .../operations/getlibraryitemsrequest.md | 37 +- .../operations/getlibrarymatchesrequest.md | 63 +- .../models/operations/getmediapartrequest.md | 2 +- .../operations/getmetadatahubsrequest.md | 2 +- .../operations/getmetadataitemrequest.md | 16 +- .../operations/getpersonmediacontainer.md | 1 + .../operations/getpersonresponsebody.md | 1 + .../getplaylistgeneratoritemsguid.md | 18 + ...getplaylistgeneratoritemsmediacontainer.md | 92 +- .../getplaylistgeneratoritemsresponsebody.md | 92 +- .../models/operations/getplayqueuerequest.md | 6 +- .../operations/getpostplayhubsrequest.md | 2 +- .../getpromotedhubsmediacontainer.md | 92 +- .../operations/getpromotedhubsresponsebody.md | 92 +- .../operations/getrelatedhubsrequest.md | 2 +- .../getrelateditemsmediacontainer.md | 92 +- .../operations/getrelateditemsresponsebody.md | 92 +- .../getscheduledrecordingsmediacontainer.md | 92 +- .../getscheduledrecordingsresponsebody.md | 92 +- .../getsectionhubsmediacontainer.md | 92 +- .../operations/getsectionhubsrequest.md | 2 +- .../operations/getsectionhubsresponsebody.md | 92 +- .../operations/getsectionimagerequest.md | 40 +- .../operations/getsectionsmediacontainer.md | 16 +- .../operations/getsectionsresponsebody.md | 18 +- .../operations/getserverresourceserror.md | 21 + .../operations/getserverresourcesglobals.md | 18 + .../operations/getserverresourcesrequest.md | 23 + .../operations/getserverresourcesresponse.md | 21 + .../getsourceconnectioninformationrequest.md | 2 +- .../sdk/models/operations/getstreamrequest.md | 2 +- .../operations/getsubscriptionrequest.md | 4 +- docs/sdk/models/operations/gettagsrequest.md | 33 +- .../{butlertask.md => gettasksbutlertask.md} | 6 +- .../operations/gettemplatemediacontainer.md | 93 +- .../operations/gettemplateresponsebody.md | 93 +- .../gettokendetailsbadrequesterror.md | 21 + .../operations/gettokendetailsglobals.md | 36 + .../operations/gettokendetailsrequest.md | 25 + .../operations/gettokendetailsresponse.md | 21 + .../gettokendetailsunauthorizederror.md | 21 + .../operations/getusersbadrequesterror.md | 21 + docs/sdk/models/operations/getusersglobals.md | 36 + .../operations/getusersmediacontainer.md | 29 + docs/sdk/models/operations/getusersrequest.md | 25 + .../sdk/models/operations/getusersresponse.md | 21 + .../models/operations/getusersresponsebody.md | 74 ++ .../operations/getusersunauthorizederror.md | 21 + docs/sdk/models/operations/home.md | 18 + docs/sdk/models/operations/includehttps.md | 18 + docs/sdk/models/operations/includeipv6.md | 18 + docs/sdk/models/operations/includerelay.md | 20 + .../operations/ingesttransientitemrequest.md | 4 +- .../operations/internalpaymentmethod.md | 14 + .../models/operations/listcontentrequest.md | 42 +- .../models/operations/listmatchesrequest.md | 2 +- .../sdk/models/operations/listsessionsguid.md | 18 + .../operations/listsessionsmediacontainer.md | 92 +- .../operations/listsessionsmetadatum.md | 242 +++-- .../operations/listsessionsresponsebody.md | 92 +- .../models/operations/mailingliststatus.md | 19 + .../models/operations/makedecisionrequest.md | 14 +- .../models/operations/mediasubscription.md | 92 +- docs/sdk/models/operations/metadata.md | 240 +++-- .../models/operations/modifydevicerequest.md | 2 +- .../operations/modifyplaylistgeneratoritem.md | 2 - .../modifyplaylistgeneratorpolicy.md | 2 +- .../modifyplaylistgeneratorrequest.md | 2 - .../operations/optimizedatabaserequest.md | 2 +- docs/sdk/models/operations/owned.md | 18 + .../sdk/models/operations/pastsubscription.md | 41 + docs/sdk/models/operations/pending.md | 18 + .../postuserssignindatabadrequesterror.md | 21 + .../operations/postuserssignindataglobals.md | 36 + .../operations/postuserssignindatarequest.md | 26 + .../postuserssignindatarequestbody.md | 24 + .../operations/postuserssignindataresponse.md | 21 + .../operations/postuserssignindatastate.md | 18 + .../postuserssignindataunauthorizederror.md | 21 + docs/sdk/models/operations/protected.md | 18 + .../operations/refreshitemsmetadatarequest.md | 2 +- .../operations/refreshsectionrequest.md | 2 +- docs/sdk/models/operations/reportrequest.md | 4 +- docs/sdk/models/operations/restricted.md | 18 + .../operations/searchhubsmediacontainer.md | 92 +- .../operations/searchhubsresponsebody.md | 92 +- docs/sdk/models/operations/server.md | 33 + docs/sdk/models/operations/service.md | 25 + docs/sdk/models/operations/servicestatus.md | 19 + .../operations/setstreamselectionrequest.md | 2 +- .../operations/startbifgenerationrequest.md | 2 +- ...stoptasktask.md => starttaskbutlertask.md} | 7 +- .../sdk/models/operations/starttaskrequest.md | 32 +- .../starttranscodesessionrequest.md | 14 +- ...starttasktask.md => stoptaskbutlertask.md} | 7 +- docs/sdk/models/operations/stoptaskrequest.md | 32 +- docs/sdk/models/operations/subscription1.md | 26 + docs/sdk/models/operations/subscription2.md | 24 + .../models/operations/subscriptionstatus1.md | 21 + .../models/operations/subscriptionstatus2.md | 21 + .../models/operations/subscriptiontemplate.md | 92 +- .../operations/transcodeimagerequest.md | 6 +- .../operations/transcodesubtitlesrequest.md | 14 +- docs/sdk/models/operations/trial.md | 14 + .../operations/updatehubvisibilityrequest.md | 6 +- .../models/operations/updateitemsrequest.md | 2 +- .../operations/uploadplaylistrequest.md | 2 +- docs/sdk/models/operations/user.md | 80 ++ docs/sdk/models/operations/userplexaccount.md | 126 +++ .../voicesearchhubsmediacontainer.md | 92 +- .../operations/voicesearchhubsrequest.md | 34 +- .../operations/voicesearchhubsresponsebody.md | 92 +- docs/sdk/models/shared/autoselectsubtitle.md | 19 + docs/sdk/models/shared/boolint.md | 10 +- docs/sdk/models/shared/connection.md | 29 + .../shared/defaultaudioaccessibility.md | 21 + .../shared/defaultsubtitleaccessibility.md | 21 + .../models/shared/defaultsubtitleforced.md | 20 + docs/sdk/models/shared/hub.md | 92 +- docs/sdk/models/shared/items.md | 329 ++++--- docs/sdk/models/shared/itemsguid.md | 18 + docs/sdk/models/shared/librarysection.md | 58 +- docs/sdk/models/shared/mailingliststatus.md | 19 + docs/sdk/models/shared/media.md | 76 +- .../shared/mediacontainerwithdecision.md | 92 +- .../shared/mediacontainerwithdecisionguid.md | 18 + .../shared/mediacontainerwithdecisionmedia.md | 76 +- ...ediacontainerwithdecisionmediacontainer.md | 92 +- .../mediacontainerwithdecisionmetadatum.md | 236 +++-- .../shared/mediacontainerwithdecisionpart.md | 75 +- .../mediacontainerwithdecisionstream.md | 148 +-- .../models/shared/mediacontainerwithhubs.md | 92 +- .../mediacontainerwithhubsmediacontainer.md | 92 +- .../shared/mediacontainerwithmetadata.md | 92 +- ...ediacontainerwithmetadatamediacontainer.md | 92 +- .../mediacontainerwithnestedmetadata.md | 183 +++- .../mediacontainerwithnestedmetadataguid.md | 18 + ...ntainerwithnestedmetadatamediacontainer.md | 183 +++- .../mediacontainerwithplaylistmetadata.md | 92 +- .../mediacontainerwithplaylistmetadataguid.md | 18 + ...ainerwithplaylistmetadatamediacontainer.md | 92 +- ...acontainerwithplaylistmetadatametadatum.md | 244 +++-- .../shared/mediacontainerwithsubscription.md | 92 +- ...containerwithsubscriptionmediacontainer.md | 92 +- docs/sdk/models/shared/mediagraboperation.md | 94 +- ...{status.md => mediagraboperationstatus.md} | 6 +- docs/sdk/models/shared/mediaquery.md | 22 +- .../models/shared/mediareviewsvisibility.md | 20 + docs/sdk/models/shared/mediasubscription.md | 92 +- docs/sdk/models/shared/mediatype.md | 38 + docs/sdk/models/shared/mediatypestring.md | 27 + docs/sdk/models/shared/metadata.md | 236 +++-- docs/sdk/models/shared/metadataguid.md | 18 + docs/sdk/models/shared/metadataitem.md | 329 ++++--- docs/sdk/models/shared/part.md | 75 +- docs/sdk/models/shared/plexdevice.md | 73 ++ docs/sdk/models/shared/plexdeviceprotocol.md | 18 + .../{protocol.md => protocolparameter.md} | 6 +- docs/sdk/models/shared/service.md | 25 + docs/sdk/models/shared/servicestatus.md | 19 + .../sdk/models/shared/slashgetresponses200.md | 92 +- .../slashgetresponses200mediacontainer.md | 92 +- docs/sdk/models/shared/stream.md | 144 ++- docs/sdk/models/shared/subscription1.md | 26 + docs/sdk/models/shared/subscription2.md | 24 + docs/sdk/models/shared/subscriptionstatus1.md | 21 + docs/sdk/models/shared/subscriptionstatus2.md | 21 + docs/sdk/models/shared/tag.md | 25 +- docs/sdk/models/shared/userplexaccount.md | 118 +++ docs/sdk/models/shared/userprofile.md | 44 + docs/sdk/models/shared/watchedindicator.md | 20 + docs/sdks/activities/README.md | 10 +- docs/sdks/authentication/README.md | 211 +++++ docs/sdks/butler/README.md | 48 +- docs/sdks/collections/README.md | 8 +- docs/sdks/content/README.md | 76 +- docs/sdks/devices/README.md | 42 +- docs/sdks/downloadqueue/README.md | 60 +- docs/sdks/dvrs/README.md | 30 +- docs/sdks/epg/README.md | 30 +- docs/sdks/events/README.md | 4 + docs/sdks/general/README.md | 18 +- docs/sdks/hubs/README.md | 72 +- docs/sdks/library/README.md | 406 +++++++-- docs/sdks/librarycollections/README.md | 6 + docs/sdks/libraryplaylists/README.md | 36 +- docs/sdks/livetv/README.md | 14 +- docs/sdks/log/README.md | 12 +- docs/sdks/playlist/README.md | 6 + docs/sdks/playqueue/README.md | 54 +- docs/sdks/plex/README.md | 95 ++ docs/sdks/preferences/README.md | 12 +- docs/sdks/provider/README.md | 20 +- docs/sdks/rate/README.md | 2 + docs/sdks/search/README.md | 10 +- docs/sdks/status/README.md | 24 +- docs/sdks/subscriptions/README.md | 48 +- docs/sdks/timeline/README.md | 14 +- docs/sdks/transcoder/README.md | 106 ++- docs/sdks/ultrablur/README.md | 8 +- docs/sdks/updater/README.md | 24 +- docs/sdks/users/README.md | 104 +++ docs/types/rfcdate.md | 11 + examples/package-lock.json | 2 +- ...transcoderStartTranscodeSession.example.ts | 15 +- jsr.json | 2 +- package-lock.json | 4 +- package.json | 2 +- src/funcs/authenticationGetTokenDetails.ts | 237 +++++ .../authenticationPostUsersSignInData.ts | 238 +++++ src/funcs/butlerStartTask.ts | 4 +- src/funcs/butlerStopTask.ts | 4 +- src/funcs/contentListContent.ts | 4 + src/funcs/plexGetServerResources.ts | 197 ++++ src/funcs/usersGetUsers.ts | 235 +++++ src/lib/config.ts | 6 +- src/lib/encodings.ts | 20 +- src/sdk/authentication.ts | 45 + src/sdk/models/errors/getserverresources.ts | 69 ++ src/sdk/models/errors/gettokendetails.ts | 130 +++ src/sdk/models/errors/getusers.ts | 130 +++ src/sdk/models/errors/index.ts | 4 + src/sdk/models/errors/postuserssignindata.ts | 130 +++ .../operations/adddownloadqueueitems.ts | 40 +- src/sdk/models/operations/addsection.ts | 8 +- src/sdk/models/operations/addsubtitles.ts | 8 +- src/sdk/models/operations/addtoplayqueue.ts | 4 +- src/sdk/models/operations/applyupdates.ts | 8 +- src/sdk/models/operations/autocomplete.ts | 19 +- src/sdk/models/operations/checkupdates.ts | 4 +- src/sdk/models/operations/createcollection.ts | 20 +- src/sdk/models/operations/createcustomhub.ts | 18 +- src/sdk/models/operations/createplayqueue.ts | 20 +- .../models/operations/deletelibrarysection.ts | 4 +- src/sdk/models/operations/deletemediaitem.ts | 4 +- .../models/operations/deletemetadataitem.ts | 4 +- src/sdk/models/operations/detectcredits.ts | 8 +- src/sdk/models/operations/detectintros.ts | 4 +- .../models/operations/detectvoiceactivity.ts | 8 +- src/sdk/models/operations/generatethumbs.ts | 4 +- src/sdk/models/operations/getallhubs.ts | 4 +- .../models/operations/getallsubscriptions.ts | 8 +- .../operations/getaugmentationstatus.ts | 4 +- src/sdk/models/operations/getcollections.ts | 19 +- src/sdk/models/operations/getcommon.ts | 19 +- .../models/operations/getfirstcharacters.ts | 19 +- src/sdk/models/operations/getimage.ts | 4 +- .../models/operations/getlibrarydetails.ts | 4 +- src/sdk/models/operations/getlibraryitems.ts | 19 +- .../models/operations/getlibrarymatches.ts | 38 +- src/sdk/models/operations/getmediapart.ts | 4 +- src/sdk/models/operations/getmetadatahubs.ts | 4 +- src/sdk/models/operations/getmetadataitem.ts | 40 +- .../operations/getplaylistgeneratoritems.ts | 151 ++-- src/sdk/models/operations/getplayqueue.ts | 12 +- src/sdk/models/operations/getpostplayhubs.ts | 4 +- src/sdk/models/operations/getrelatedhubs.ts | 4 +- src/sdk/models/operations/getsectionhubs.ts | 4 +- src/sdk/models/operations/getsectionimage.ts | 19 +- .../models/operations/getserverresources.ts | 199 ++++ .../getsourceconnectioninformation.ts | 4 +- src/sdk/models/operations/getstream.ts | 6 +- src/sdk/models/operations/getsubscription.ts | 8 +- src/sdk/models/operations/gettags.ts | 20 +- src/sdk/models/operations/gettasks.ts | 19 +- src/sdk/models/operations/gettokendetails.ts | 265 ++++++ src/sdk/models/operations/getusers.ts | 643 +++++++++++++ src/sdk/models/operations/index.ts | 4 + .../models/operations/ingesttransientitem.ts | 8 +- src/sdk/models/operations/listcontent.ts | 57 +- src/sdk/models/operations/listmatches.ts | 4 +- src/sdk/models/operations/listsessions.ts | 150 +-- src/sdk/models/operations/makedecision.ts | 36 +- src/sdk/models/operations/modifydevice.ts | 4 +- .../operations/modifyplaylistgenerator.ts | 4 +- src/sdk/models/operations/optimizedatabase.ts | 4 +- .../models/operations/postuserssignindata.ts | 854 ++++++++++++++++++ .../models/operations/refreshitemsmetadata.ts | 4 +- src/sdk/models/operations/refreshsection.ts | 4 +- src/sdk/models/operations/report.ts | 8 +- .../models/operations/setstreamselection.ts | 4 +- .../models/operations/startbifgeneration.ts | 4 +- src/sdk/models/operations/starttask.ts | 14 +- .../operations/starttranscodesession.ts | 36 +- src/sdk/models/operations/stoptask.ts | 13 +- src/sdk/models/operations/transcodeimage.ts | 12 +- .../models/operations/transcodesubtitles.ts | 36 +- .../models/operations/updatehubvisibility.ts | 18 +- src/sdk/models/operations/updateitems.ts | 4 +- src/sdk/models/operations/uploadplaylist.ts | 4 +- src/sdk/models/operations/voicesearchhubs.ts | 20 +- src/sdk/models/shared/boolint.ts | 4 +- src/sdk/models/shared/index.ts | 7 +- src/sdk/models/shared/items.ts | 151 ++-- src/sdk/models/shared/librarysection.ts | 25 +- src/sdk/models/shared/media.ts | 32 +- .../shared/mediacontainerwithdecision.ts | 480 +++++++--- .../mediacontainerwithnestedmetadata.ts | 153 ++-- .../mediacontainerwithplaylistmetadata.ts | 154 ++-- src/sdk/models/shared/mediagraboperation.ts | 11 +- src/sdk/models/shared/mediaquery.ts | 61 +- src/sdk/models/shared/mediatype.ts | 38 + src/sdk/models/shared/mediatypestring.ts | 28 + src/sdk/models/shared/metadata.ts | 150 +-- src/sdk/models/shared/part.ts | 36 +- src/sdk/models/shared/plexdevice.ts | 154 ++++ .../{protocol.ts => protocolparameter.ts} | 7 +- src/sdk/models/shared/stream.ts | 262 +++++- src/sdk/models/shared/tag.ts | 23 +- src/sdk/models/shared/userplexaccount.ts | 419 +++++++++ src/sdk/models/shared/userprofile.ts | 171 ++++ src/sdk/plex.ts | 27 + src/sdk/sdk.ts | 18 + src/sdk/types/enums.ts | 22 +- src/sdk/types/index.ts | 3 +- src/sdk/types/unrecognized.ts | 35 + src/sdk/users.ts | 27 + tsconfig.json | 1 - tsconfig.tsbuildinfo | 1 + 376 files changed, 16211 insertions(+), 3902 deletions(-) create mode 100644 docs/sdk/models/errors/getserverresourcesunauthorizederror.md create mode 100644 docs/sdk/models/errors/gettokendetailsbadrequesterror.md create mode 100644 docs/sdk/models/errors/gettokendetailsunauthorizederror.md create mode 100644 docs/sdk/models/errors/getusersbadrequesterror.md create mode 100644 docs/sdk/models/errors/getusersunauthorizederror.md create mode 100644 docs/sdk/models/errors/postuserssignindatabadrequesterror.md create mode 100644 docs/sdk/models/errors/postuserssignindataunauthorizederror.md create mode 100644 docs/sdk/models/operations/alllibraries.md create mode 100644 docs/sdk/models/operations/allowcameraupload.md create mode 100644 docs/sdk/models/operations/allowchannels.md create mode 100644 docs/sdk/models/operations/allowsubtitleadmin.md create mode 100644 docs/sdk/models/operations/allowsync.md create mode 100644 docs/sdk/models/operations/allowtuners.md create mode 100644 docs/sdk/models/operations/billing.md create mode 100644 docs/sdk/models/operations/getplaylistgeneratoritemsguid.md create mode 100644 docs/sdk/models/operations/getserverresourceserror.md create mode 100644 docs/sdk/models/operations/getserverresourcesglobals.md create mode 100644 docs/sdk/models/operations/getserverresourcesrequest.md create mode 100644 docs/sdk/models/operations/getserverresourcesresponse.md rename docs/sdk/models/operations/{butlertask.md => gettasksbutlertask.md} (96%) create mode 100644 docs/sdk/models/operations/gettokendetailsbadrequesterror.md create mode 100644 docs/sdk/models/operations/gettokendetailsglobals.md create mode 100644 docs/sdk/models/operations/gettokendetailsrequest.md create mode 100644 docs/sdk/models/operations/gettokendetailsresponse.md create mode 100644 docs/sdk/models/operations/gettokendetailsunauthorizederror.md create mode 100644 docs/sdk/models/operations/getusersbadrequesterror.md create mode 100644 docs/sdk/models/operations/getusersglobals.md create mode 100644 docs/sdk/models/operations/getusersmediacontainer.md create mode 100644 docs/sdk/models/operations/getusersrequest.md create mode 100644 docs/sdk/models/operations/getusersresponse.md create mode 100644 docs/sdk/models/operations/getusersresponsebody.md create mode 100644 docs/sdk/models/operations/getusersunauthorizederror.md create mode 100644 docs/sdk/models/operations/home.md create mode 100644 docs/sdk/models/operations/includehttps.md create mode 100644 docs/sdk/models/operations/includeipv6.md create mode 100644 docs/sdk/models/operations/includerelay.md create mode 100644 docs/sdk/models/operations/internalpaymentmethod.md create mode 100644 docs/sdk/models/operations/listsessionsguid.md create mode 100644 docs/sdk/models/operations/mailingliststatus.md create mode 100644 docs/sdk/models/operations/owned.md create mode 100644 docs/sdk/models/operations/pastsubscription.md create mode 100644 docs/sdk/models/operations/pending.md create mode 100644 docs/sdk/models/operations/postuserssignindatabadrequesterror.md create mode 100644 docs/sdk/models/operations/postuserssignindataglobals.md create mode 100644 docs/sdk/models/operations/postuserssignindatarequest.md create mode 100644 docs/sdk/models/operations/postuserssignindatarequestbody.md create mode 100644 docs/sdk/models/operations/postuserssignindataresponse.md create mode 100644 docs/sdk/models/operations/postuserssignindatastate.md create mode 100644 docs/sdk/models/operations/postuserssignindataunauthorizederror.md create mode 100644 docs/sdk/models/operations/protected.md create mode 100644 docs/sdk/models/operations/restricted.md create mode 100644 docs/sdk/models/operations/server.md create mode 100644 docs/sdk/models/operations/service.md create mode 100644 docs/sdk/models/operations/servicestatus.md rename docs/sdk/models/operations/{stoptasktask.md => starttaskbutlertask.md} (90%) rename docs/sdk/models/operations/{starttasktask.md => stoptaskbutlertask.md} (91%) create mode 100644 docs/sdk/models/operations/subscription1.md create mode 100644 docs/sdk/models/operations/subscription2.md create mode 100644 docs/sdk/models/operations/subscriptionstatus1.md create mode 100644 docs/sdk/models/operations/subscriptionstatus2.md create mode 100644 docs/sdk/models/operations/trial.md create mode 100644 docs/sdk/models/operations/user.md create mode 100644 docs/sdk/models/operations/userplexaccount.md create mode 100644 docs/sdk/models/shared/autoselectsubtitle.md create mode 100644 docs/sdk/models/shared/connection.md create mode 100644 docs/sdk/models/shared/defaultaudioaccessibility.md create mode 100644 docs/sdk/models/shared/defaultsubtitleaccessibility.md create mode 100644 docs/sdk/models/shared/defaultsubtitleforced.md create mode 100644 docs/sdk/models/shared/itemsguid.md create mode 100644 docs/sdk/models/shared/mailingliststatus.md create mode 100644 docs/sdk/models/shared/mediacontainerwithdecisionguid.md create mode 100644 docs/sdk/models/shared/mediacontainerwithnestedmetadataguid.md create mode 100644 docs/sdk/models/shared/mediacontainerwithplaylistmetadataguid.md rename docs/sdk/models/shared/{status.md => mediagraboperationstatus.md} (71%) create mode 100644 docs/sdk/models/shared/mediareviewsvisibility.md create mode 100644 docs/sdk/models/shared/mediatype.md create mode 100644 docs/sdk/models/shared/mediatypestring.md create mode 100644 docs/sdk/models/shared/metadataguid.md create mode 100644 docs/sdk/models/shared/plexdevice.md create mode 100644 docs/sdk/models/shared/plexdeviceprotocol.md rename docs/sdk/models/shared/{protocol.md => protocolparameter.md} (50%) create mode 100644 docs/sdk/models/shared/service.md create mode 100644 docs/sdk/models/shared/servicestatus.md create mode 100644 docs/sdk/models/shared/subscription1.md create mode 100644 docs/sdk/models/shared/subscription2.md create mode 100644 docs/sdk/models/shared/subscriptionstatus1.md create mode 100644 docs/sdk/models/shared/subscriptionstatus2.md create mode 100644 docs/sdk/models/shared/userplexaccount.md create mode 100644 docs/sdk/models/shared/userprofile.md create mode 100644 docs/sdk/models/shared/watchedindicator.md create mode 100644 docs/sdks/authentication/README.md create mode 100644 docs/sdks/plex/README.md create mode 100644 docs/sdks/users/README.md create mode 100644 docs/types/rfcdate.md create mode 100644 src/funcs/authenticationGetTokenDetails.ts create mode 100644 src/funcs/authenticationPostUsersSignInData.ts create mode 100644 src/funcs/plexGetServerResources.ts create mode 100644 src/funcs/usersGetUsers.ts create mode 100644 src/sdk/authentication.ts create mode 100644 src/sdk/models/errors/getserverresources.ts create mode 100644 src/sdk/models/errors/gettokendetails.ts create mode 100644 src/sdk/models/errors/getusers.ts create mode 100644 src/sdk/models/errors/postuserssignindata.ts create mode 100644 src/sdk/models/operations/getserverresources.ts create mode 100644 src/sdk/models/operations/gettokendetails.ts create mode 100644 src/sdk/models/operations/getusers.ts create mode 100644 src/sdk/models/operations/postuserssignindata.ts create mode 100644 src/sdk/models/shared/mediatype.ts create mode 100644 src/sdk/models/shared/mediatypestring.ts create mode 100644 src/sdk/models/shared/plexdevice.ts rename src/sdk/models/shared/{protocol.ts => protocolparameter.ts} (52%) create mode 100644 src/sdk/models/shared/userplexaccount.ts create mode 100644 src/sdk/models/shared/userprofile.ts create mode 100644 src/sdk/plex.ts create mode 100644 src/sdk/types/unrecognized.ts create mode 100644 src/sdk/users.ts create mode 100644 tsconfig.tsbuildinfo diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 62918c6b..ae42f954 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 16f22cbf-f23f-4419-8924-3a4b06381947 management: - docChecksum: e95c0e17d3e268dcd18d26ac8d0bfc98 + docChecksum: 40b5081b26bc3736b1710ebbcc9a05b7 docVersion: 1.1.1 - speakeasyVersion: 1.656.1 - generationVersion: 2.753.1 - releaseVersion: 0.43.0 - configChecksum: d19d0763c1fa11a918aba6737078ecff + speakeasyVersion: 1.665.0 + generationVersion: 2.767.2 + releaseVersion: 0.44.0 + configChecksum: 2c2d20783109d054e322cf01eaa8396e repoURL: https://github.com/LukeHagar/plexjs.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexjs @@ -17,23 +17,29 @@ features: additionalDependencies: 0.1.0 additionalProperties: 0.1.2 constsAndDefaults: 0.1.12 - core: 3.26.6 + core: 3.26.13 deepObjectParams: 0.1.0 defaultEnabledRetries: 0.1.0 + deprecations: 2.81.1 downloadStreams: 0.1.1 enumUnions: 0.1.0 + enums: 2.83.0 envVarSecurityUsage: 0.1.2 + errors: 2.86.1 examples: 2.82.3 globalSecurity: 2.82.14 globalSecurityCallbacks: 0.1.0 globalSecurityFlattening: 0.1.0 globalServerURLs: 2.83.0 globals: 2.82.2 + methodServerURLs: 2.82.1 nameOverrides: 2.81.2 + nullables: 0.1.1 + openEnums: 0.1.1 responseFormat: 0.2.3 retries: 2.83.0 - sdkHooks: 0.3.0 - unions: 2.86.0 + sdkHooks: 0.4.0 + unions: 2.86.2 uploadStreams: 0.1.0 generatedFiles: - .gitattributes @@ -42,6 +48,13 @@ generatedFiles: - RUNTIMES.md - USAGE.md - docs/lib/utils/retryconfig.md + - docs/sdk/models/errors/getserverresourcesunauthorizederror.md + - docs/sdk/models/errors/gettokendetailsbadrequesterror.md + - docs/sdk/models/errors/gettokendetailsunauthorizederror.md + - docs/sdk/models/errors/getusersbadrequesterror.md + - docs/sdk/models/errors/getusersunauthorizederror.md + - docs/sdk/models/errors/postuserssignindatabadrequesterror.md + - docs/sdk/models/errors/postuserssignindataunauthorizederror.md - docs/sdk/models/operations/account.md - docs/sdk/models/operations/action.md - docs/sdk/models/operations/activity.md @@ -91,6 +104,12 @@ generatedFiles: - docs/sdk/models/operations/addtoplayqueuerequest.md - docs/sdk/models/operations/addtoplayqueueresponse.md - docs/sdk/models/operations/advancedsubtitles.md + - docs/sdk/models/operations/alllibraries.md + - docs/sdk/models/operations/allowcameraupload.md + - docs/sdk/models/operations/allowchannels.md + - docs/sdk/models/operations/allowsubtitleadmin.md + - docs/sdk/models/operations/allowsync.md + - docs/sdk/models/operations/allowtuners.md - docs/sdk/models/operations/analyzemetadataglobals.md - docs/sdk/models/operations/analyzemetadatarequest.md - docs/sdk/models/operations/analyzemetadataresponse.md @@ -102,7 +121,7 @@ generatedFiles: - docs/sdk/models/operations/autocompleteresponse.md - docs/sdk/models/operations/bandwidth.md - docs/sdk/models/operations/bandwidths.md - - docs/sdk/models/operations/butlertask.md + - docs/sdk/models/operations/billing.md - docs/sdk/models/operations/butlertasks.md - docs/sdk/models/operations/cancelactivityglobals.md - docs/sdk/models/operations/cancelactivityrequest.md @@ -489,6 +508,7 @@ generatedFiles: - docs/sdk/models/operations/getplaylistgeneratorglobals.md - docs/sdk/models/operations/getplaylistgeneratoritem.md - docs/sdk/models/operations/getplaylistgeneratoritemsglobals.md + - docs/sdk/models/operations/getplaylistgeneratoritemsguid.md - docs/sdk/models/operations/getplaylistgeneratoritemsmediacontainer.md - docs/sdk/models/operations/getplaylistgeneratoritemsrequest.md - docs/sdk/models/operations/getplaylistgeneratoritemsresponse.md @@ -569,6 +589,10 @@ generatedFiles: - docs/sdk/models/operations/getserverinfoglobals.md - docs/sdk/models/operations/getserverinforequest.md - docs/sdk/models/operations/getserverinforesponse.md + - docs/sdk/models/operations/getserverresourceserror.md + - docs/sdk/models/operations/getserverresourcesglobals.md + - docs/sdk/models/operations/getserverresourcesrequest.md + - docs/sdk/models/operations/getserverresourcesresponse.md - docs/sdk/models/operations/getsessionplaylistindexglobals.md - docs/sdk/models/operations/getsessionplaylistindexrequest.md - docs/sdk/models/operations/getsessionplaylistindexresponse.md @@ -609,6 +633,7 @@ generatedFiles: - docs/sdk/models/operations/gettagsrequest.md - docs/sdk/models/operations/gettagsresponse.md - docs/sdk/models/operations/gettagsresponsebody.md + - docs/sdk/models/operations/gettasksbutlertask.md - docs/sdk/models/operations/gettasksresponse.md - docs/sdk/models/operations/gettasksresponsebody.md - docs/sdk/models/operations/gettemplateglobals.md @@ -619,6 +644,11 @@ generatedFiles: - docs/sdk/models/operations/getthumbglobals.md - docs/sdk/models/operations/getthumbrequest.md - docs/sdk/models/operations/getthumbresponse.md + - docs/sdk/models/operations/gettokendetailsbadrequesterror.md + - docs/sdk/models/operations/gettokendetailsglobals.md + - docs/sdk/models/operations/gettokendetailsrequest.md + - docs/sdk/models/operations/gettokendetailsresponse.md + - docs/sdk/models/operations/gettokendetailsunauthorizederror.md - docs/sdk/models/operations/gettransienttokenglobals.md - docs/sdk/models/operations/gettransienttokenmediacontainer.md - docs/sdk/models/operations/gettransienttokenrequest.md @@ -630,12 +660,24 @@ generatedFiles: - docs/sdk/models/operations/getupdatesstatusresponse.md - docs/sdk/models/operations/getupdatesstatusresponsebody.md - docs/sdk/models/operations/getupdatesstatusstate.md + - docs/sdk/models/operations/getusersbadrequesterror.md + - docs/sdk/models/operations/getusersglobals.md + - docs/sdk/models/operations/getusersmediacontainer.md + - docs/sdk/models/operations/getusersrequest.md + - docs/sdk/models/operations/getusersresponse.md + - docs/sdk/models/operations/getusersresponsebody.md + - docs/sdk/models/operations/getusersunauthorizederror.md - docs/sdk/models/operations/hints.md + - docs/sdk/models/operations/home.md - docs/sdk/models/operations/homevisibility.md - docs/sdk/models/operations/hub.md + - docs/sdk/models/operations/includehttps.md + - docs/sdk/models/operations/includeipv6.md + - docs/sdk/models/operations/includerelay.md - docs/sdk/models/operations/ingesttransientitemglobals.md - docs/sdk/models/operations/ingesttransientitemrequest.md - docs/sdk/models/operations/ingesttransientitemresponse.md + - docs/sdk/models/operations/internalpaymentmethod.md - docs/sdk/models/operations/language.md - docs/sdk/models/operations/lineup.md - docs/sdk/models/operations/lineuptype.md @@ -689,6 +731,7 @@ generatedFiles: - docs/sdk/models/operations/listprovidersmediacontainer.md - docs/sdk/models/operations/listprovidersresponse.md - docs/sdk/models/operations/listprovidersresponsebody.md + - docs/sdk/models/operations/listsessionsguid.md - docs/sdk/models/operations/listsessionsmediacontainer.md - docs/sdk/models/operations/listsessionsmetadatum.md - docs/sdk/models/operations/listsessionsresponse.md @@ -704,6 +747,7 @@ generatedFiles: - docs/sdk/models/operations/listtopusersrequest.md - docs/sdk/models/operations/listtopusersresponse.md - docs/sdk/models/operations/listtopusersresponsebody.md + - docs/sdk/models/operations/mailingliststatus.md - docs/sdk/models/operations/makedecisionglobals.md - docs/sdk/models/operations/makedecisionlocation.md - docs/sdk/models/operations/makedecisionprotocol.md @@ -750,12 +794,23 @@ generatedFiles: - docs/sdk/models/operations/optimizedatabaseglobals.md - docs/sdk/models/operations/optimizedatabaserequest.md - docs/sdk/models/operations/optimizedatabaseresponse.md + - docs/sdk/models/operations/owned.md - docs/sdk/models/operations/params.md + - docs/sdk/models/operations/pastsubscription.md + - docs/sdk/models/operations/pending.md - docs/sdk/models/operations/playlisttype.md - docs/sdk/models/operations/playqueuegenerator.md + - docs/sdk/models/operations/postuserssignindatabadrequesterror.md + - docs/sdk/models/operations/postuserssignindataglobals.md + - docs/sdk/models/operations/postuserssignindatarequest.md + - docs/sdk/models/operations/postuserssignindatarequestbody.md + - docs/sdk/models/operations/postuserssignindataresponse.md + - docs/sdk/models/operations/postuserssignindatastate.md + - docs/sdk/models/operations/postuserssignindataunauthorizederror.md - docs/sdk/models/operations/processingstate.md - docs/sdk/models/operations/processingstatecontext.md - docs/sdk/models/operations/processsubscriptionsresponse.md + - docs/sdk/models/operations/protected.md - docs/sdk/models/operations/recommendationsvisibility.md - docs/sdk/models/operations/refreshitemsmetadataglobals.md - docs/sdk/models/operations/refreshitemsmetadatarequest.md @@ -807,6 +862,7 @@ generatedFiles: - docs/sdk/models/operations/restartprocessingdownloadqueueitemsglobals.md - docs/sdk/models/operations/restartprocessingdownloadqueueitemsrequest.md - docs/sdk/models/operations/restartprocessingdownloadqueueitemsresponse.md + - docs/sdk/models/operations/restricted.md - docs/sdk/models/operations/scanglobals.md - docs/sdk/models/operations/scanrequest.md - docs/sdk/models/operations/scanresponse.md @@ -815,6 +871,9 @@ generatedFiles: - docs/sdk/models/operations/searchhubsrequest.md - docs/sdk/models/operations/searchhubsresponse.md - docs/sdk/models/operations/searchhubsresponsebody.md + - docs/sdk/models/operations/server.md + - docs/sdk/models/operations/service.md + - docs/sdk/models/operations/servicestatus.md - docs/sdk/models/operations/setchannelmapchannelmapping.md - docs/sdk/models/operations/setchannelmapglobals.md - docs/sdk/models/operations/setchannelmaprequest.md @@ -866,11 +925,11 @@ generatedFiles: - docs/sdk/models/operations/startbifgenerationglobals.md - docs/sdk/models/operations/startbifgenerationrequest.md - docs/sdk/models/operations/startbifgenerationresponse.md + - docs/sdk/models/operations/starttaskbutlertask.md - docs/sdk/models/operations/starttaskglobals.md - docs/sdk/models/operations/starttaskrequest.md - docs/sdk/models/operations/starttaskresponse.md - docs/sdk/models/operations/starttasksresponse.md - - docs/sdk/models/operations/starttasktask.md - docs/sdk/models/operations/starttranscodesessionglobals.md - docs/sdk/models/operations/starttranscodesessionlocation.md - docs/sdk/models/operations/starttranscodesessionprotocol.md @@ -884,11 +943,15 @@ generatedFiles: - docs/sdk/models/operations/stopscanglobals.md - docs/sdk/models/operations/stopscanrequest.md - docs/sdk/models/operations/stopscanresponse.md + - docs/sdk/models/operations/stoptaskbutlertask.md - docs/sdk/models/operations/stoptaskglobals.md - docs/sdk/models/operations/stoptaskrequest.md - docs/sdk/models/operations/stoptaskresponse.md - docs/sdk/models/operations/stoptasksresponse.md - - docs/sdk/models/operations/stoptasktask.md + - docs/sdk/models/operations/subscription1.md + - docs/sdk/models/operations/subscription2.md + - docs/sdk/models/operations/subscriptionstatus1.md + - docs/sdk/models/operations/subscriptionstatus2.md - docs/sdk/models/operations/subscriptiontemplate.md - docs/sdk/models/operations/terminatesessionglobals.md - docs/sdk/models/operations/terminatesessionrequest.md @@ -903,6 +966,7 @@ generatedFiles: - docs/sdk/models/operations/transcodesubtitlesrequest.md - docs/sdk/models/operations/transcodesubtitlesresponse.md - docs/sdk/models/operations/transcodesubtitlessubtitles.md + - docs/sdk/models/operations/trial.md - docs/sdk/models/operations/triggerfallbackglobals.md - docs/sdk/models/operations/triggerfallbackrequest.md - docs/sdk/models/operations/triggerfallbackresponse.md @@ -935,6 +999,8 @@ generatedFiles: - docs/sdk/models/operations/uploadplaylistglobals.md - docs/sdk/models/operations/uploadplaylistrequest.md - docs/sdk/models/operations/uploadplaylistresponse.md + - docs/sdk/models/operations/user.md + - docs/sdk/models/operations/userplexaccount.md - docs/sdk/models/operations/voicesearchhubsglobals.md - docs/sdk/models/operations/voicesearchhubsmediacontainer.md - docs/sdk/models/operations/voicesearchhubsrequest.md @@ -948,15 +1014,20 @@ generatedFiles: - docs/sdk/models/shared/accepts.md - docs/sdk/models/shared/advancedsubtitles.md - docs/sdk/models/shared/airingstype.md + - docs/sdk/models/shared/autoselectsubtitle.md - docs/sdk/models/shared/boolint.md - docs/sdk/models/shared/channel.md - docs/sdk/models/shared/channelmapping.md - docs/sdk/models/shared/composite.md + - docs/sdk/models/shared/connection.md - docs/sdk/models/shared/crop.md - docs/sdk/models/shared/decision.md - docs/sdk/models/shared/default.md + - docs/sdk/models/shared/defaultaudioaccessibility.md - docs/sdk/models/shared/defaultdirection.md - docs/sdk/models/shared/defaultenum.md + - docs/sdk/models/shared/defaultsubtitleaccessibility.md + - docs/sdk/models/shared/defaultsubtitleforced.md - docs/sdk/models/shared/device.md - docs/sdk/models/shared/directory.md - docs/sdk/models/shared/directorypivot.md @@ -978,6 +1049,7 @@ generatedFiles: - docs/sdk/models/shared/image.md - docs/sdk/models/shared/imagetype.md - docs/sdk/models/shared/items.md + - docs/sdk/models/shared/itemsguid.md - docs/sdk/models/shared/librarysection.md - docs/sdk/models/shared/librarysectionlocation.md - docs/sdk/models/shared/librarysections.md @@ -985,6 +1057,7 @@ generatedFiles: - docs/sdk/models/shared/lineup.md - docs/sdk/models/shared/lineuptype.md - docs/sdk/models/shared/locationparameter.md + - docs/sdk/models/shared/mailingliststatus.md - docs/sdk/models/shared/media.md - docs/sdk/models/shared/mediacontainer.md - docs/sdk/models/shared/mediacontainerwithartwork.md @@ -992,6 +1065,7 @@ generatedFiles: - docs/sdk/models/shared/mediacontainerwithartworkmetadatum.md - docs/sdk/models/shared/mediacontainerwithartworktype.md - docs/sdk/models/shared/mediacontainerwithdecision.md + - docs/sdk/models/shared/mediacontainerwithdecisionguid.md - docs/sdk/models/shared/mediacontainerwithdecisionlocation.md - docs/sdk/models/shared/mediacontainerwithdecisionmedia.md - docs/sdk/models/shared/mediacontainerwithdecisionmediacontainer.md @@ -1010,8 +1084,10 @@ generatedFiles: - docs/sdk/models/shared/mediacontainerwithmetadata.md - docs/sdk/models/shared/mediacontainerwithmetadatamediacontainer.md - docs/sdk/models/shared/mediacontainerwithnestedmetadata.md + - docs/sdk/models/shared/mediacontainerwithnestedmetadataguid.md - docs/sdk/models/shared/mediacontainerwithnestedmetadatamediacontainer.md - docs/sdk/models/shared/mediacontainerwithplaylistmetadata.md + - docs/sdk/models/shared/mediacontainerwithplaylistmetadataguid.md - docs/sdk/models/shared/mediacontainerwithplaylistmetadatamediacontainer.md - docs/sdk/models/shared/mediacontainerwithplaylistmetadatametadatum.md - docs/sdk/models/shared/mediacontainerwithsettings.md @@ -1020,19 +1096,28 @@ generatedFiles: - docs/sdk/models/shared/mediacontainerwithsubscriptionmediacontainer.md - docs/sdk/models/shared/mediaenum.md - docs/sdk/models/shared/mediagraboperation.md + - docs/sdk/models/shared/mediagraboperationstatus.md - docs/sdk/models/shared/mediaquery.md + - docs/sdk/models/shared/mediareviewsvisibility.md - docs/sdk/models/shared/mediasubscription.md + - docs/sdk/models/shared/mediatype.md + - docs/sdk/models/shared/mediatypestring.md - docs/sdk/models/shared/metadata.md + - docs/sdk/models/shared/metadataguid.md - docs/sdk/models/shared/metadataitem.md - docs/sdk/models/shared/metadatumresponse.md - docs/sdk/models/shared/part.md - docs/sdk/models/shared/player.md - docs/sdk/models/shared/playlisttype.md + - docs/sdk/models/shared/plexdevice.md + - docs/sdk/models/shared/plexdeviceprotocol.md - docs/sdk/models/shared/postresponses200.md - docs/sdk/models/shared/postresponses200mediacontainer.md - - docs/sdk/models/shared/protocol.md + - docs/sdk/models/shared/protocolparameter.md - docs/sdk/models/shared/recommendationsvisibility.md - docs/sdk/models/shared/security.md + - docs/sdk/models/shared/service.md + - docs/sdk/models/shared/servicestatus.md - docs/sdk/models/shared/session.md - docs/sdk/models/shared/sessionlocation.md - docs/sdk/models/shared/setting.md @@ -1041,17 +1126,24 @@ generatedFiles: - docs/sdk/models/shared/slashgetresponses200mediacontainer.md - docs/sdk/models/shared/sort.md - docs/sdk/models/shared/sortpivot.md - - docs/sdk/models/shared/status.md - docs/sdk/models/shared/stream.md - docs/sdk/models/shared/streamdecision.md + - docs/sdk/models/shared/subscription1.md + - docs/sdk/models/shared/subscription2.md + - docs/sdk/models/shared/subscriptionstatus1.md + - docs/sdk/models/shared/subscriptionstatus2.md - docs/sdk/models/shared/subtitles.md - docs/sdk/models/shared/tag.md - docs/sdk/models/shared/transcodesession.md - docs/sdk/models/shared/transcodetype.md - docs/sdk/models/shared/typeresponse.md - docs/sdk/models/shared/user.md + - docs/sdk/models/shared/userplexaccount.md + - docs/sdk/models/shared/userprofile.md - docs/sdk/models/shared/value.md + - docs/sdk/models/shared/watchedindicator.md - docs/sdks/activities/README.md + - docs/sdks/authentication/README.md - docs/sdks/butler/README.md - docs/sdks/collections/README.md - docs/sdks/content/README.md @@ -1069,6 +1161,7 @@ generatedFiles: - docs/sdks/log/README.md - docs/sdks/playlist/README.md - docs/sdks/playqueue/README.md + - docs/sdks/plex/README.md - docs/sdks/preferences/README.md - docs/sdks/provider/README.md - docs/sdks/rate/README.md @@ -1079,6 +1172,8 @@ generatedFiles: - docs/sdks/transcoder/README.md - docs/sdks/ultrablur/README.md - docs/sdks/updater/README.md + - docs/sdks/users/README.md + - docs/types/rfcdate.md - eslint.config.mjs - examples/.env.template - examples/README.md @@ -1089,6 +1184,8 @@ generatedFiles: - src/core.ts - src/funcs/activitiesCancelActivity.ts - src/funcs/activitiesListActivities.ts + - src/funcs/authenticationGetTokenDetails.ts + - src/funcs/authenticationPostUsersSignInData.ts - src/funcs/butlerGetTasks.ts - src/funcs/butlerStartTask.ts - src/funcs/butlerStartTasks.ts @@ -1285,6 +1382,7 @@ generatedFiles: - src/funcs/playlistGetPlaylist.ts - src/funcs/playlistGetPlaylistItems.ts - src/funcs/playlistListPlaylists.ts + - src/funcs/plexGetServerResources.ts - src/funcs/preferencesGetAllPreferences.ts - src/funcs/preferencesGetPreference.ts - src/funcs/preferencesSetPreferences.ts @@ -1324,6 +1422,7 @@ generatedFiles: - src/funcs/updaterApplyUpdates.ts - src/funcs/updaterCheckUpdates.ts - src/funcs/updaterGetUpdatesStatus.ts + - src/funcs/usersGetUsers.ts - src/hooks/hooks.ts - src/hooks/index.ts - src/hooks/types.ts @@ -1344,6 +1443,7 @@ generatedFiles: - src/lib/security.ts - src/lib/url.ts - src/sdk/activities.ts + - src/sdk/authentication.ts - src/sdk/butler.ts - src/sdk/collections.ts - src/sdk/content.ts @@ -1360,9 +1460,13 @@ generatedFiles: - src/sdk/libraryplaylists.ts - src/sdk/livetv.ts - src/sdk/log.ts + - src/sdk/models/errors/getserverresources.ts + - src/sdk/models/errors/gettokendetails.ts + - src/sdk/models/errors/getusers.ts - src/sdk/models/errors/httpclienterrors.ts - src/sdk/models/errors/index.ts - src/sdk/models/errors/plexapierror.ts + - src/sdk/models/errors/postuserssignindata.ts - src/sdk/models/errors/responsevalidationerror.ts - src/sdk/models/errors/sdkerror.ts - src/sdk/models/errors/sdkvalidationerror.ts @@ -1503,6 +1607,7 @@ generatedFiles: - src/sdk/models/operations/getsections.ts - src/sdk/models/operations/getsectionsprefs.ts - src/sdk/models/operations/getserverinfo.ts + - src/sdk/models/operations/getserverresources.ts - src/sdk/models/operations/getsessionplaylistindex.ts - src/sdk/models/operations/getsessions.ts - src/sdk/models/operations/getsessionsegment.ts @@ -1517,8 +1622,10 @@ generatedFiles: - src/sdk/models/operations/gettasks.ts - src/sdk/models/operations/gettemplate.ts - src/sdk/models/operations/getthumb.ts + - src/sdk/models/operations/gettokendetails.ts - src/sdk/models/operations/gettransienttoken.ts - src/sdk/models/operations/getupdatesstatus.ts + - src/sdk/models/operations/getusers.ts - src/sdk/models/operations/index.ts - src/sdk/models/operations/ingesttransientitem.ts - src/sdk/models/operations/listactivities.ts @@ -1549,6 +1656,7 @@ generatedFiles: - src/sdk/models/operations/moveplaylistitem.ts - src/sdk/models/operations/moveplayqueueitem.ts - src/sdk/models/operations/optimizedatabase.ts + - src/sdk/models/operations/postuserssignindata.ts - src/sdk/models/operations/processsubscriptions.ts - src/sdk/models/operations/refreshitemsmetadata.ts - src/sdk/models/operations/refreshplaylist.ts @@ -1640,11 +1748,14 @@ generatedFiles: - src/sdk/models/shared/mediagraboperation.ts - src/sdk/models/shared/mediaquery.ts - src/sdk/models/shared/mediasubscription.ts + - src/sdk/models/shared/mediatype.ts + - src/sdk/models/shared/mediatypestring.ts - src/sdk/models/shared/metadata.ts - src/sdk/models/shared/part.ts - src/sdk/models/shared/player.ts + - src/sdk/models/shared/plexdevice.ts - src/sdk/models/shared/postresponses200.ts - - src/sdk/models/shared/protocol.ts + - src/sdk/models/shared/protocolparameter.ts - src/sdk/models/shared/security.ts - src/sdk/models/shared/session.ts - src/sdk/models/shared/setting.ts @@ -1656,8 +1767,11 @@ generatedFiles: - src/sdk/models/shared/transcodesession.ts - src/sdk/models/shared/transcodetype.ts - src/sdk/models/shared/user.ts + - src/sdk/models/shared/userplexaccount.ts + - src/sdk/models/shared/userprofile.ts - src/sdk/playlist.ts - src/sdk/playqueue.ts + - src/sdk/plex.ts - src/sdk/preferences.ts - src/sdk/provider.ts - src/sdk/rate.ts @@ -1676,8 +1790,10 @@ generatedFiles: - src/sdk/types/operations.ts - src/sdk/types/rfcdate.ts - src/sdk/types/streams.ts + - src/sdk/types/unrecognized.ts - src/sdk/ultrablur.ts - src/sdk/updater.ts + - src/sdk/users.ts - tsconfig.json examples: getServerCapabilities: @@ -2006,6 +2122,7 @@ examples: path: taskName: "RefreshPeriodicMetadata" task: "RefreshLocalMedia" + butlerTask: "RefreshLocalMedia" header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -2029,6 +2146,7 @@ examples: path: taskName: "CleanOldCacheFiles" task: "CleanOldBundles" + butlerTask: "CleanOldBundles" header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -2105,7 +2223,8 @@ examples: includeRelay: 1 includeIPv6: 1 header: - X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" + X-Plex-Client-Identifier: "abc123" + accepts: "application/xml" responses: "200": application/json: [{"name": "", "product": "Ergonomic Plastic Hat", "productVersion": "", "platform": "", "platformVersion": "", "device": "Mobile", "clientIdentifier": "", "createdAt": "2019-06-24T11:38:02Z", "lastSeenAt": "2019-06-24T11:38:02Z", "provides": "", "ownerId": null, "sourceTitle": "", "publicAddress": "", "accessToken": "", "owned": true, "home": false, "synced": false, "relay": true, "presence": false, "httpsRequired": true, "publicAddressMatches": false, "dnsRebindingProtection": true, "natLoopbackSupported": false, "connections": [{"protocol": "http", "address": "5746 Mount Street", "port": 441996, "uri": "https://wide-kick.name/", "local": false, "relay": true, "IPv6": true}]}] @@ -2621,7 +2740,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/96/composite/1705724593", "duration": 141000, "key": "/playlists/96/items", "leafCount": 1, "playlistType": "video", "smart": false, "title": "A Great Playlist", "type": "playlist", "addedAt": 1705719589, "lastViewedAt": 1705719589, "ratingKey": "96", "summary": "What a great playlist", "updatedAt": 1705724593, "viewCount": 1, "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "icon": "playlist://image.smart"}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/96/composite/1705724593", "duration": 141000, "key": "/playlists/96/items", "leafCount": 1, "playlistType": "video", "smart": false, "title": "A Great Playlist", "type": "playlist", "addedAt": 1705719589, "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "lastViewedAt": 1705719589, "ratingKey": "96", "summary": "What a great playlist", "updatedAt": 1705724593, "viewCount": 1, "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2655,7 +2774,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/95/composite/1705717387", "duration": 282000, "key": "/playlists/95/items", "leafCount": 2, "playlistType": "video", "smart": true, "title": "Smart Movie Playlist", "type": "playlist", "addedAt": 1705716493, "ratingKey": "95", "summary": "", "updatedAt": 1705717387, "content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "icon": "playlist://image.smart"}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/95/composite/1705717387", "duration": 282000, "key": "/playlists/95/items", "leafCount": 2, "playlistType": "video", "smart": true, "title": "Smart Movie Playlist", "type": "playlist", "addedAt": 1705716493, "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "ratingKey": "95", "summary": "", "updatedAt": 1705717387, "content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2821,9 +2940,22 @@ examples: application/json: {} getTokenDetails: speakeasy-default-get-token-details: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "200": - application/json: {"adsConsent": true, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": ["[]"], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1556281940, "locale": "it", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null} + application/json: {"adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": [], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1556281940, "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultAudioAccessibility": 0, "defaultAudioLanguages": null, "defaultSubtitleLanguage": "en", "defaultSubtitleLanguages": null, "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1, "mediaReviewsLanguages": null}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2849,16 +2981,22 @@ examples: speakeasy-default-post-users-sign-in-data: parameters: header: - X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" + X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" X-Plex-Device: "Roku 3" X-Plex-Version: "2.4.1" X-Plex-Platform: "Roku" + accepts: "application/xml" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" requestBody: application/x-www-form-urlencoded: {"login": "username@email.com", "password": "password123", "rememberMe": false, "verificationCode": "123456"} responses: "201": - application/json: {"adsConsent": null, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": ["[]"], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1556281940, "locale": "ru", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [], "trials": []} + application/json: {"adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": [], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1556281940, "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultAudioAccessibility": 0, "defaultAudioLanguages": null, "defaultSubtitleLanguage": "en", "defaultSubtitleLanguages": null, "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1, "mediaReviewsLanguages": null}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [], "trials": []} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2936,7 +3074,7 @@ examples: speakeasy-default-get-sessions: responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "guid": "plex://track/6535834f71f22f36f71a8e8f", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "channels": 2, "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "key": "/library/streams/216389", "samplingRate": 44100, "selected": true, "streamType": 1, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -3144,10 +3282,10 @@ examples: speakeasy-default-get-users: parameters: header: - X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" + X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" X-Plex-Device: "Roku 3" - X-Plex-Device-Name: "Chrome" + X-Plex-Device-Name: "Living Room TV" X-Plex-Device-Screen-Resolution: "1487x1165,2560x1440" X-Plex-Version: "2.4.1" X-Plex-Platform: "Roku" @@ -3157,9 +3295,13 @@ examples: X-Plex-Language: "en" X-Plex-Platform-Version: "4.3 build 1057" X-Plex-Token: "CV5xoxjTpFKUzBTShsaf" + accepts: "application/xml" + X-Plex-Device-Vendor: "Roku" + X-Plex-Marketplace: "googlePlay" responses: "200": application/xml: "0xfD5052DbD1" + application/json: {"MediaContainer": {"friendlyName": "myPlex", "identifier": "com.plexapp.plugins.myplex", "machineIdentifier": "3dff4c4da3b1229a649aa574a9e2b419a684a20e", "totalSize": 30, "size": 30, "User": [{"id": 22526914, "title": "Plex User", "username": "zgfuc7krcqfimrmb9lsl5j", "email": "zgfuc7krcqfimrmb9lsl5j@protonmail.com", "recommendationsPlaylistId": "", "thumb": "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", "protected": 1, "home": 1, "allowTuners": 1, "allowSync": 1, "allowCameraUpload": 1, "allowChannels": 1, "allowSubtitleAdmin": 1, "filterAll": "", "filterMovies": "", "filterMusic": "", "filterPhotos": "", "filterTelevision": "", "restricted": 1, "Server": [{"id": 907759180, "serverId": 9999999, "machineIdentifier": "fbb8aa6be6e0c997c6268bc2b4431c8807f70a3", "name": "ConnectedUserFlix", "lastSeenAt": 1556281940, "numLibraries": 16, "allLibraries": 1, "owned": 1, "pending": 1}]}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -3474,7 +3616,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 231605, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getDownloadQueueMedia: speakeasy-default-get-download-queue-media: parameters: @@ -3569,7 +3711,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 406301, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getContinueWatching: speakeasy-default-get-continue-watching: parameters: @@ -3587,7 +3729,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 302705, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getHubItems: speakeasy-default-get-hub-items: parameters: @@ -3625,7 +3767,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 424115, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getMetadataHubs: speakeasy-default-get-metadata-hubs: parameters: @@ -3647,7 +3789,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 605482, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getPostplayHubs: speakeasy-default-get-postplay-hubs: parameters: @@ -3669,7 +3811,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 441419, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getRelatedHubs: speakeasy-default-get-related-hubs: parameters: @@ -3691,7 +3833,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 8858, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getSectionHubs: speakeasy-default-get-section-hubs: parameters: @@ -3713,7 +3855,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 336924, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} resetSectionDefaults: speakeasy-default-reset-section-defaults: parameters: @@ -3855,12 +3997,13 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 758235, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} voiceSearchHubs: speakeasy-default-voice-search-hubs: parameters: query: query: "" + type: 2 header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -3875,10 +4018,12 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 594971, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} getLibraryItems: speakeasy-default-get-library-items: parameters: + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -3893,7 +4038,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 159678, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} deleteCaches: {} cleanBundles: {} ingestTransientItem: @@ -3918,7 +4063,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 82660, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getLibraryMatches: speakeasy-default-get-library-matches: parameters: @@ -3926,6 +4071,7 @@ examples: includeFullMetadata: 1 includeAncestorMetadata: 1 includeAlternateMetadataSources: 1 + type: 2 header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -3940,7 +4086,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 84198, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} optimizeDatabase: speakeasy-default-optimize-database: parameters: @@ -3982,7 +4128,7 @@ examples: speakeasy-default-get-sections: responses: "200": - application/json: {} + application/json: {"MediaContainer": {"Directory": [{"title": "Movies", "type": "movie", "contentChangedAt": 1556281940, "createdAt": 1556281940, "language": "", "uuid": "e69655a2-ef48-4aba-bb19-d3cc3401e7d6", "scannedAt": 1556281940, "updatedAt": 1556281940}]}} addSection: speakeasy-default-add-section: parameters: @@ -4009,7 +4155,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Directory": [{"title": "", "type": "", "addedAt": 39544, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} stopAllRefreshes: speakeasy-default-stop-all-refreshes: responses: @@ -4053,6 +4199,8 @@ examples: getTags: speakeasy-default-get-tags: parameters: + query: + type: 2 header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -4140,7 +4288,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 890240, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} analyzeMetadata: speakeasy-default-analyze-metadata: parameters: @@ -4216,7 +4364,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 713455, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} addExtras: speakeasy-default-add-extras: parameters: @@ -4357,7 +4505,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 419882, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} mergeItems: speakeasy-default-merge-items: parameters: @@ -4394,7 +4542,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 51724, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} setItemPreferences: speakeasy-default-set-item-preferences: parameters: @@ -4450,7 +4598,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"title": "", "type": "", "addedAt": 138475, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} listSimilar: speakeasy-default-list-similar: parameters: @@ -4470,7 +4618,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 976861, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} splitItem: speakeasy-default-split-item: parameters: @@ -4527,7 +4675,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} + application/json: {"MediaContainer": {"MetadataItem": [{"title": "", "type": "", "addedAt": 440490, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "MetadataItem": [{"title": "", "type": "", "addedAt": 405454, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} unmatch: speakeasy-default-unmatch: parameters: @@ -4662,7 +4810,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 718998, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} deleteLibrarySection: speakeasy-default-delete-library-section: parameters: @@ -4703,7 +4851,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Directory": [{"title": "", "type": "", "addedAt": 704505, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} editSection: speakeasy-default-edit-section: parameters: @@ -4766,6 +4914,8 @@ examples: parameters: path: sectionId: 942007 + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -4780,12 +4930,14 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 942007, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getCollections: speakeasy-default-get-collections: parameters: path: sectionId: 348838 + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -4800,12 +4952,14 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 348838, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getCommon: speakeasy-default-get-common: parameters: path: sectionId: 298154 + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -4820,7 +4974,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 298154, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} emptyTrash: speakeasy-default-empty-trash: parameters: @@ -4863,6 +5017,8 @@ examples: parameters: path: sectionId: 3947 + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -5212,6 +5368,8 @@ examples: path: sectionId: 925611 updatedAt: 117413 + query: + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -5351,6 +5509,7 @@ examples: parameters: query: sectionId: "" + type: 2 header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -5365,7 +5524,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 112848, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} listDVRs: speakeasy-default-list-DV-rs: responses: @@ -5548,7 +5707,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 834281, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} removeDeviceFromDVR: speakeasy-default-remove-device-from-DVR: parameters: @@ -5763,7 +5922,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 186347, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getSessionPlaylistIndex: speakeasy-default-get-session-playlist-index: parameters: @@ -6128,7 +6287,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 516979, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} createSubscription: speakeasy-default-create-subscription: parameters: @@ -6153,13 +6312,13 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 868201, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} processSubscriptions: {} getScheduledRecordings: speakeasy-default-get-scheduled-recordings: responses: "200": - application/json: {"MediaContainer": {"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} + application/json: {"MediaContainer": {"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 478229, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} getTemplate: speakeasy-default-get-template: parameters: @@ -6179,7 +6338,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"SubscriptionTemplate": [{"MediaSubscription": [{"title": "This Episode", "MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} + application/json: {"MediaContainer": {"SubscriptionTemplate": [{"MediaSubscription": [{"title": "This Episode", "MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 655183, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} cancelGrab: speakeasy-default-cancel-grab: parameters: @@ -6236,7 +6395,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 186713, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} editSubscriptionPreferences: speakeasy-default-edit-subscription-preferences: parameters: @@ -6258,7 +6417,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 673918, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} reorderSubscription: speakeasy-default-reorder-subscription: parameters: @@ -6278,7 +6437,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"title": "", "type": "", "addedAt": 440634, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} transcodeImage: speakeasy-default-transcode-image: parameters: @@ -6354,7 +6513,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 313548, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} triggerFallback: speakeasy-default-trigger-fallback: parameters: @@ -6485,7 +6644,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 511190, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getPlaylistItems: speakeasy-default-get-playlist-items: parameters: @@ -6505,7 +6664,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 118195, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getPlaylistGenerators: speakeasy-default-get-playlist-generators: parameters: @@ -6545,7 +6704,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 552140, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} addPlaylistItems: speakeasy-default-add-playlist-items: parameters: @@ -6565,7 +6724,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 533723, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} deletePlaylistItem: speakeasy-default-delete-playlist-item: parameters: @@ -6586,7 +6745,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 981646, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getPlaylistGenerator: speakeasy-default-get-playlist-generator: parameters: @@ -6630,7 +6789,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 972007, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getPlaylistGeneratorItems: speakeasy-default-get-playlist-generator-items: parameters: @@ -6651,7 +6810,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} + application/json: {"MediaContainer": {"Metadata": {"title": "", "type": "", "addedAt": 77230, "art": "/library/metadata/58683/art/1703239236", "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "chapterSource": "media", "childCount": 1, "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "guid": "plex://movie/5d7768ba96b655001fdc0408", "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "lastViewedAt": 1556281940, "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} movePlaylistItem: speakeasy-default-move-playlist-item: parameters: @@ -6672,7 +6831,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 940298, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} refreshPlaylist: speakeasy-default-refresh-playlist: parameters: @@ -6741,7 +6900,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 210646, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} addToPlayQueue: speakeasy-default-add-to-play-queue: parameters: @@ -6763,7 +6922,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 919248, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} clearPlayQueue: speakeasy-default-clear-play-queue: parameters: @@ -6783,7 +6942,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 86357, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} resetPlayQueue: speakeasy-default-reset-play-queue: parameters: @@ -6803,7 +6962,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 581891, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} shuffle: speakeasy-default-shuffle: parameters: @@ -6823,7 +6982,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 316150, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} unshuffle: speakeasy-default-unshuffle: parameters: @@ -6843,7 +7002,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 484388, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} deletePlayQueueItem: speakeasy-default-delete-play-queue-item: parameters: @@ -6864,7 +7023,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 285738, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} movePlayQueueItem: speakeasy-default-move-play-queue-item: parameters: @@ -6885,7 +7044,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"key": "", "title": "", "type": "", "addedAt": 31341, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getColors: speakeasy-default-get-colors: parameters: @@ -6936,7 +7095,7 @@ examples: speakeasy-default-list-sessions: responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 103950, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getBackgroundTasks: speakeasy-default-get-background-tasks: responses: @@ -7061,7 +7220,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 314585, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getMetadataItem: speakeasy-default-get-metadata-item: parameters: @@ -7090,7 +7249,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 28609, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getAlbums: speakeasy-default-get-albums: parameters: @@ -7110,12 +7269,18 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 817133, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} listContent: speakeasy-default-list-content: parameters: path: sectionId: "" + query: + X-Plex-Container-Start: 0 + X-Plex-Container-Size: 50 + mediaQuery: {"type": 4, "sourceType": 2, "sort": "duration:desc,index"} + includeMeta: 1 + includeGuids: 1 header: X-Plex-Client-Identifier: "abc123" X-Plex-Product: "Plex for Roku" @@ -7130,7 +7295,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 813218, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getAllLeaves: speakeasy-default-get-all-leaves: parameters: @@ -7150,7 +7315,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 633197, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getArts: speakeasy-default-get-arts: parameters: @@ -7233,7 +7398,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 914549, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getFolders: speakeasy-default-get-folders: parameters: @@ -7295,7 +7460,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 525956, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} getCollectionImage: speakeasy-default-get-collection-image: parameters: @@ -7338,7 +7503,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 338144, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} deleteCollectionItem: speakeasy-default-delete-collection-item: parameters: @@ -7359,7 +7524,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 320928, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} moveCollectionItem: speakeasy-default-move-collection-item: parameters: @@ -7380,7 +7545,7 @@ examples: accepts: "application/xml" responses: "200": - application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "", "type": "", "addedAt": 239532, "Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "key": "", "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} examplesVersion: 1.0.2 generatedTests: getServerInfo: "2025-10-12T05:25:28Z" @@ -7540,3 +7705,8 @@ generatedTests: addCollectionItems: "2025-10-12T05:25:28Z" deleteCollectionItem: "2025-10-12T05:25:28Z" moveCollectionItem: "2025-10-12T05:25:28Z" + getTokenDetails: "2025-12-01T00:14:41Z" + post-users-sign-in-data: "2025-12-01T00:14:41Z" + get-users: "2025-12-01T00:14:41Z" + get-server-resources: "2025-12-01T00:14:41Z" +releaseNotes: "## Typescript SDK Changes:\n* `plex-api.libraryPlaylists.addPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getMetadataHubs()`: \n * `request.onlyTransient` **Changed**\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryCollections.moveCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryCollections.deleteCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryCollections.addCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.content.getSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.butler.stopTask()`: `request` **Changed** **Breaking** :warning:\n* `plex-api.butler.startTask()`: `request` **Changed** **Breaking** :warning:\n* `plex-api.content.getSonicPath()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.downloadQueue.getItemDecision()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getAllHubs()`: \n * `request.onlyTransient` **Changed**\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getContinueWatching()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getPromotedHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.content.getAllLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getPostplayHubs()`: \n * `request.onlyTransient` **Changed**\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getRelatedHubs()`: \n * `request.onlyTransient` **Changed**\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.hubs.getSectionHubs()`: \n * `request.onlyTransient` **Changed**\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.content.listContent()`: \n * `request` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.content.getAlbums()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.search.searchHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.search.voiceSearchHubs()`: \n * `request.type` **Changed** **Breaking** :warning:\n * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getLibraryItems()`: \n * `request.mediaQuery` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.ingestTransientItem()`: \n * `request` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getLibraryMatches()`: \n * `request` **Changed** **Breaking** :warning:\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.content.getMetadataItem()`: \n * `request` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getSections()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.addSection()`: \n * `request` **Changed**\n * `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getTags()`: \n * `request.type` **Changed** **Breaking** :warning:\n* `plex-api.content.getCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getAllItemLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.status.listSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.movePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getExtras()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.deletePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.unshuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.listMatches()`: \n * `request.manual` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.listSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.resetPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getRelatedItems()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.listSimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.clearPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getItemTree()`: `response.mediacontainer.metadataItem.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.addToPlayQueue()`: \n * `request.next` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.getPlayQueue()`: \n * `request` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.movePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getPerson()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.listPersonMedia()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.getPlaylistGeneratorItems()`: `response.mediacontainer.metadata` **Changed** **Breaking** :warning:\n* `plex-api.library.getLibraryDetails()`: \n * `request.includeDetails` **Changed**\n * `response.mediacontainer.directory.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.modifyPlaylistGenerator()`: \n * `request.item` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.autocomplete()`: \n * `request.mediaQuery` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getCollections()`: \n * `request.mediaQuery` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.getCommon()`: \n * `request.mediaQuery` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.deletePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.clearPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playQueue.shuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.libraryPlaylists.createPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playlist.getPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playlist.getPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.collections.createCollection()`: \n * `request.type` **Changed** **Breaking** :warning:\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.dvRs.tuneChannel()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.liveTv.getSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.liveTv.getLiveTvSession()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.playlist.listPlaylists()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.getAllSubscriptions()`: \n * `request` **Changed**\n * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.createSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.getScheduledRecordings()`: `response.mediacontainer.mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.getTemplate()`: `response.mediacontainer.subscriptionTemplate.[].mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.getSubscription()`: \n * `request` **Changed**\n * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.editSubscriptionPreferences()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.subscriptions.reorderSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** :warning:\n* `plex-api.transcoder.makeDecision()`: \n * `request` **Changed**\n * `response.mediacontainer.metadata.[]` **Changed** **Breaking** :warning:\n* `plex-api.library.refreshItemsMetadata()`: \n * `request.markUpdated` **Changed**\n* `plex-api.authentication.postUsersSignInData()`: **Added**\n* `plex-api.transcoder.startTranscodeSession()`: `request` **Changed**\n* `plex-api.devices.modifyDevice()`: \n * `request.enabled` **Changed**\n* `plex-api.library.getMediaPart()`: \n * `request.download` **Changed**\n* `plex-api.library.detectIntros()`: \n * `request.force` **Changed**\n* `plex-api.library.refreshSection()`: \n * `request.force` **Changed**\n* `plex-api.libraryPlaylists.uploadPlaylist()`: \n * `request.force` **Changed**\n* `plex-api.library.deleteMediaItem()`: \n * `request.proxy` **Changed**\n* `plex-api.authentication.getTokenDetails()`: **Added**\n* `plex-api.library.getFirstCharacters()`: \n * `request.mediaQuery` **Changed**\n* `plex-api.library.updateItems()`: \n * `request.field.locked` **Changed**\n* `plex-api.library.deleteLibrarySection()`: \n * `request.async` **Changed**\n* `plex-api.library.setStreamSelection()`: \n * `request.allParts` **Changed**\n* `plex-api.playQueue.createPlayQueue()`: `request` **Changed**\n* `plex-api.library.getAugmentationStatus()`: \n * `request.wait` **Changed**\n* `plex-api.library.detectVoiceActivity()`: `request` **Changed**\n* `plex-api.transcoder.transcodeImage()`: `request` **Changed**\n* `plex-api.transcoder.transcodeSubtitles()`: `request` **Changed**\n* `plex-api.library.addSubtitles()`: `request` **Changed**\n* `plex-api.library.getStream()`: \n * `request.autoAdjustSubtitle` **Changed**\n* `plex-api.library.startBifGeneration()`: \n * `request.force` **Changed**\n* `plex-api.library.detectCredits()`: `request` **Changed**\n* `plex-api.ultraBlur.getImage()`: \n * `request.noise` **Changed**\n* `plex-api.library.generateThumbs()`: \n * `request.force` **Changed**\n* `plex-api.updater.applyUpdates()`: `request` **Changed**\n* `plex-api.updater.checkUpdates()`: \n * `request.download` **Changed**\n* `plex-api.library.deleteMetadataItem()`: \n * `request.proxy` **Changed**\n* `plex-api.library.optimizeDatabase()`: \n * `request.async` **Changed**\n* `plex-api.hubs.updateHubVisibility()`: `request` **Changed**\n* `plex-api.hubs.createCustomHub()`: `request` **Changed**\n* `plex-api.library.getSectionImage()`: \n * `request.mediaQuery` **Changed**\n* `plex-api.downloadQueue.addDownloadQueueItems()`: `request` **Changed**\n* `plex-api.timeline.report()`: `request` **Changed**\n* `plex-api.general.getSourceConnectionInformation()`: \n * `request.refresh` **Changed**\n* `plex-api.plex.getServerResources()`: **Added**\n* `plex-api.users.getUsers()`: **Added**\n" diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index ca56fe4f..ab4d0a53 100755 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -25,7 +25,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false typescript: - version: 0.43.0 + version: 0.44.0 acceptHeaderEnum: true additionalDependencies: dependencies: {} @@ -46,6 +46,9 @@ typescript: exportZodModelNamespace: false flattenGlobalSecurity: true flatteningOrder: body-first + formStringArrayEncodeMode: encoded-string + forwardCompatibleEnumsByDefault: false + forwardCompatibleUnionsByDefault: "false" generateExamples: true imports: option: openapi @@ -55,12 +58,15 @@ typescript: operations: sdk/models/operations shared: sdk/models/shared webhooks: sdk/models/webhooks + inferUnionDiscriminators: true inputModelSuffix: input jsonpath: legacy + laxMode: strict maxMethodParams: 4 methodArguments: require-security-and-request modelPropertyCasing: camel moduleFormat: commonjs + multipartArrayFormat: legacy outputModelSuffix: output packageName: '@lukehagar/plexjs' responseFormat: envelope diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index 1a2b2001..546bac87 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -448,7 +448,7 @@ workflows: - stepId: test operationId: stopTask parameters: - - name: task + - name: butlerTask in: path value: CleanOldBundles - name: X-Plex-Client-Identifier @@ -493,7 +493,7 @@ workflows: - stepId: test operationId: startTask parameters: - - name: task + - name: butlerTask in: path value: RefreshLocalMedia - name: X-Plex-Client-Identifier @@ -828,7 +828,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":231605,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Download Queue x-speakeasy-test-rebuild: true @@ -934,7 +934,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":406301,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -981,7 +981,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":302705,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1081,7 +1081,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":424115,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1134,7 +1134,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":605482,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1187,7 +1187,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":441419,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1240,7 +1240,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":8858,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1293,7 +1293,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":336924,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Hubs x-speakeasy-test-rebuild: true @@ -1449,7 +1449,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":758235,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Search x-speakeasy-test-rebuild: true @@ -1461,6 +1461,9 @@ workflows: - name: query in: query value: + - name: type + in: query + value: 2 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -1499,7 +1502,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":594971,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Search x-speakeasy-test-rebuild: true @@ -1508,6 +1511,12 @@ workflows: - stepId: test operationId: getLibraryItems parameters: + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -1546,7 +1555,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":159678,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -1605,7 +1614,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":82660,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -1623,6 +1632,9 @@ workflows: - name: includeAlternateMetadataSources in: query value: 1 + - name: type + in: query + value: 2 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -1661,7 +1673,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":84198,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -1726,7 +1738,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {} + {"MediaContainer":{"Directory":[{"title":"Movies","type":"movie","contentChangedAt":1556281940,"createdAt":1556281940,"language":"","uuid":"e69655a2-ef48-4aba-bb19-d3cc3401e7d6","scannedAt":1556281940,"updatedAt":1556281940}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -1799,7 +1811,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Directory":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Directory":[{"title":"","type":"","addedAt":39544,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -1871,6 +1883,9 @@ workflows: - stepId: test operationId: getTags parameters: + - name: type + in: query + value: 2 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -1959,7 +1974,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":890240,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2009,7 +2024,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":713455,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2171,7 +2186,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":419882,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2221,7 +2236,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":51724,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2271,7 +2286,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} + {"MediaContainer":{"Hub":[{"type":"track","context":"hub.home.onDeck","hubIdentifier":"home.onDeck","key":"/hubs/sections/home/onDeck","Metadata":[{"title":"","type":"","addedAt":138475,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}],"size":1,"subtype":"podcast","totalSize":8}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2321,7 +2336,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":976861,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2371,7 +2386,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MetadataItem":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"MetadataItem":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} + {"MediaContainer":{"MetadataItem":[{"title":"","type":"","addedAt":440490,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"MetadataItem":[{"title":"","type":"","addedAt":405454,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2521,7 +2536,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":718998,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2574,7 +2589,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Directory":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Directory":[{"title":"","type":"","addedAt":704505,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2586,6 +2601,12 @@ workflows: - name: sectionId in: path value: 942007 + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -2624,7 +2645,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":942007,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2636,6 +2657,12 @@ workflows: - name: sectionId in: path value: 348838 + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -2674,7 +2701,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":348838,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2686,6 +2713,12 @@ workflows: - name: sectionId in: path value: 298154 + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -2724,7 +2757,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":298154,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library x-speakeasy-test-rebuild: true @@ -2786,6 +2819,12 @@ workflows: - name: sectionId in: path value: 3947 + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -3316,6 +3355,9 @@ workflows: - name: sectionId in: query value: + - name: type + in: query + value: 2 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -3354,7 +3396,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":112848,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Collections x-speakeasy-test-rebuild: true @@ -3683,7 +3725,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":834281,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: DVRs x-speakeasy-test-rebuild: true @@ -4145,7 +4187,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"title":"The American Dream Is Killing Me","type":"track","addedAt":1705543312,"art":"/library/metadata/39904/art/1705310687","duration":186240,"grandparentArt":"/library/metadata/39904/art/1705310687","grandparentKey":"/library/metadata/39904","grandparentRatingKey":"39904","grandparentThumb":"/library/metadata/39904/thumb/1705310687","grandparentTitle":"Green Day","index":1,"key":"/library/metadata/67085","Media":[{"audioChannels":2,"audioCodec":"flac","bitrate":1014,"container":"flac","duration":186240,"id":130355,"Part":[{"container":"flac","duration":186240,"file":"/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac","id":130625,"key":"/library/parts/130625/1705543268/file.flac","size":23644000,"Stream":[{"audioChannelLayout":"stereo","bitDepth":16,"bitrate":1014,"codec":"flac","displayTitle":"FLAC (Stereo)","id":352487,"index":0,"samplingRate":44100,"selected":true,"streamType":2,"albumGain":"-12.94","albumPeak":"1.000000","albumRange":"4.751014","channels":2,"extendedDisplayTitle":"FLAC (Stereo)","gain":"-12.94","loudness":"-5.94","lra":"1.74","peak":"1.000000","location":"direct"}],"hasThumbnail":"1","decision":"directplay","selected":true}],"selected":true}],"originalTitle":"The American Dream Is Killing Me","parentIndex":1,"parentKey":"/library/metadata/67084","parentRatingKey":"67084","parentThumb":"/library/metadata/67084/thumb/1705543314","parentTitle":"Saviors","ratingCount":45885,"ratingKey":"67085","thumb":"/library/metadata/67084/thumb/1705543314","titleSort":"American Dream Is Killing Me","updatedAt":1705543314,"viewOffset":1000,"grandparentGuid":"plex://artist/5d07bbfd403c6402904a6480","guid":"plex://track/6535834f71f22f36f71a8e8f","librarySectionID":"3","librarySectionKey":"/library/sections/3","librarySectionTitle":"Music","musicAnalysisVersion":"1","parentGuid":"plex://album/65394d6d472b8ab03ef47f12","parentStudio":"Reprise Records","parentYear":2024,"sessionKey":"203","User":{"id":"1","thumb":"https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661","title":"Blindkitty38"},"Player":{"address":"10.10.10.171","machineIdentifier":"3tsdzir85m2onc3qyr255aq1","model":"standalone","platform":"windows","platformVersion":"10.0.22621","product":"Plex for Windows","profile":"Plex Desktop","remotePublicAddress":"68.248.140.20","state":"playing","title":"DESKTOP-BL80MTD","version":"1.85.0.4071-21128b56","local":true,"relayed":false,"secure":true,"userID":1},"Session":{"id":"93h7e00ncblxncqw9lkfaoxi","bandwidth":1050,"location":"lan"}}]}} + {"MediaContainer":{"Metadata":[{"title":"The American Dream Is Killing Me","type":"track","addedAt":1705543312,"art":"/library/metadata/39904/art/1705310687","duration":186240,"grandparentArt":"/library/metadata/39904/art/1705310687","grandparentGuid":"plex://artist/5d07bbfd403c6402904a6480","grandparentKey":"/library/metadata/39904","grandparentRatingKey":"39904","grandparentThumb":"/library/metadata/39904/thumb/1705310687","grandparentTitle":"Green Day","guid":"plex://track/6535834f71f22f36f71a8e8f","index":1,"key":"/library/metadata/67085","Media":[{"audioChannels":2,"audioCodec":"flac","bitrate":1014,"container":"flac","duration":186240,"id":130355,"Part":[{"container":"flac","duration":186240,"file":"/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac","id":130625,"key":"/library/parts/130625/1705543268/file.flac","size":23644000,"Stream":[{"audioChannelLayout":"stereo","channels":2,"bitDepth":16,"bitrate":1014,"codec":"flac","displayTitle":"FLAC (Stereo)","extendedDisplayTitle":"FLAC (Stereo)","id":352487,"index":0,"key":"/library/streams/216389","samplingRate":44100,"selected":true,"streamType":1,"albumGain":"-12.94","albumPeak":"1.000000","albumRange":"4.751014","gain":"-12.94","loudness":"-5.94","lra":"1.74","peak":"1.000000","location":"direct"}],"hasThumbnail":"1","decision":"directplay","selected":true}],"selected":true}],"originalTitle":"The American Dream Is Killing Me","parentGuid":"plex://album/65394d6d472b8ab03ef47f12","parentIndex":1,"parentKey":"/library/metadata/67084","parentRatingKey":"67084","parentThumb":"/library/metadata/67084/thumb/1705543314","parentTitle":"Saviors","ratingCount":45885,"ratingKey":"67085","thumb":"/library/metadata/67084/thumb/1705543314","titleSort":"American Dream Is Killing Me","updatedAt":1705543314,"viewOffset":1000,"librarySectionID":"3","librarySectionKey":"/library/sections/3","librarySectionTitle":"Music","musicAnalysisVersion":"1","parentStudio":"Reprise Records","parentYear":2024,"sessionKey":"203","User":{"id":"1","thumb":"https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661","title":"Blindkitty38"},"Player":{"address":"10.10.10.171","machineIdentifier":"3tsdzir85m2onc3qyr255aq1","model":"standalone","platform":"windows","platformVersion":"10.0.22621","product":"Plex for Windows","profile":"Plex Desktop","remotePublicAddress":"68.248.140.20","state":"playing","title":"DESKTOP-BL80MTD","version":"1.85.0.4071-21128b56","local":true,"relayed":false,"secure":true,"userID":1},"Session":{"id":"93h7e00ncblxncqw9lkfaoxi","bandwidth":1050,"location":"lan"}}]}} type: simple x-speakeasy-test-group: Live TV x-speakeasy-test-rebuild: true @@ -4195,7 +4237,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":186347,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Live TV x-speakeasy-test-rebuild: true @@ -4753,7 +4795,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":516979,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -4818,7 +4860,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":868201,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -4831,7 +4873,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} + {"MediaContainer":{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":478229,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -4881,7 +4923,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"SubscriptionTemplate":[{"MediaSubscription":[{"title":"This Episode","MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} + {"MediaContainer":{"SubscriptionTemplate":[{"MediaSubscription":[{"title":"This Episode","MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":655183,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -4937,7 +4979,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":186713,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -4990,7 +5032,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":673918,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -5040,7 +5082,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + {"MediaContainer":{"MediaSubscription":[{"MediaGrabOperation":[{"Metadata":{"title":"","type":"","addedAt":440634,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} type: simple x-speakeasy-test-group: Subscriptions x-speakeasy-test-rebuild: true @@ -5239,7 +5281,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":313548,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Transcoder x-speakeasy-test-rebuild: true @@ -5423,7 +5465,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":511190,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Playlist x-speakeasy-test-rebuild: true @@ -5473,7 +5515,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"composite":"/playlists/95/composite/1705717387","duration":282000,"key":"/playlists/95/items","leafCount":2,"playlistType":"video","smart":true,"title":"Smart Movie Playlist","type":"playlist","addedAt":1705716493,"ratingKey":"95","summary":"","updatedAt":1705717387,"content":"library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1","guid":"com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91","icon":"playlist://image.smart"}]}} + {"MediaContainer":{"Metadata":[{"composite":"/playlists/95/composite/1705717387","duration":282000,"key":"/playlists/95/items","leafCount":2,"playlistType":"video","smart":true,"title":"Smart Movie Playlist","type":"playlist","addedAt":1705716493,"guid":"com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91","ratingKey":"95","summary":"","updatedAt":1705717387,"content":"library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1","icon":"playlist://image.smart"}]}} type: simple x-speakeasy-test-group: Playlist x-speakeasy-test-rebuild: true @@ -5523,7 +5565,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":118195,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Playlist x-speakeasy-test-rebuild: true @@ -5573,7 +5615,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"composite":"/playlists/96/composite/1705724593","duration":141000,"key":"/playlists/96/items","leafCount":1,"playlistType":"video","smart":false,"title":"A Great Playlist","type":"playlist","addedAt":1705719589,"lastViewedAt":1705719589,"ratingKey":"96","summary":"What a great playlist","updatedAt":1705724593,"viewCount":1,"guid":"com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55","icon":"playlist://image.smart"}]}} + {"MediaContainer":{"Metadata":[{"composite":"/playlists/96/composite/1705724593","duration":141000,"key":"/playlists/96/items","leafCount":1,"playlistType":"video","smart":false,"title":"A Great Playlist","type":"playlist","addedAt":1705719589,"guid":"com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55","lastViewedAt":1705719589,"ratingKey":"96","summary":"What a great playlist","updatedAt":1705724593,"viewCount":1,"icon":"playlist://image.smart"}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -5811,7 +5853,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":552140,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -5861,7 +5903,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":533723,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -5914,7 +5956,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":981646,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -6034,7 +6076,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":972007,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -6087,7 +6129,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} + {"MediaContainer":{"Metadata":{"title":"","type":"","addedAt":77230,"art":"/library/metadata/58683/art/1703239236","Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"chapterSource":"media","childCount":1,"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"grandparentGuid":"plex://show/5d9c081b170e24001f2a7be4","guid":"plex://movie/5d7768ba96b655001fdc0408","Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","lastViewedAt":1556281940,"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"originallyAvailableAt":"2022-12-14","parentGuid":"plex://show/5d9c081b170e24001f2a7be4","Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"theme":"/library/metadata/1/theme/1705636920","thumb":"/library/metadata/58683/thumb/1703239236","Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -6140,7 +6182,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":940298,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Playlists x-speakeasy-test-rebuild: true @@ -6264,7 +6306,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":210646,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6317,7 +6359,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":919248,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6367,7 +6409,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":86357,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6417,7 +6459,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":581891,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6467,7 +6509,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":316150,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6517,7 +6559,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":484388,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6570,7 +6612,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":285738,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6623,7 +6665,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"key":"","title":"","type":"","addedAt":31341,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Play Queue x-speakeasy-test-rebuild: true @@ -6754,7 +6796,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":103950,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Status x-speakeasy-test-rebuild: true @@ -6981,7 +7023,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":314585,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7055,7 +7097,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":28609,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7105,7 +7147,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":817133,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7117,6 +7159,24 @@ workflows: - name: sectionId in: path value: + - name: X-Plex-Container-Start + in: query + value: 0 + - name: X-Plex-Container-Size + in: query + value: 50 + - name: mediaQuery + in: query + value: + sort: duration:desc,index + sourceType: 2 + type: 4 + - name: includeMeta + in: query + value: 1 + - name: includeGuids + in: query + value: 1 - name: X-Plex-Client-Identifier in: header value: abc123 @@ -7155,7 +7215,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":813218,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7205,7 +7265,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":633197,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7411,7 +7471,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":914549,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7564,7 +7624,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":525956,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Content x-speakeasy-test-rebuild: true @@ -7670,7 +7730,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":338144,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Collections x-speakeasy-test-rebuild: true @@ -7723,7 +7783,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":320928,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Collections x-speakeasy-test-rebuild: true @@ -7776,7 +7836,149 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"MediaContainer":{"Metadata":[{"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + {"MediaContainer":{"Metadata":[{"title":"","type":"","addedAt":239532,"Autotag":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Country":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Director":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Genre":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Guid":[{"id":"{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}],"key":"","Media":[{"aspectRatio":2.35,"audioChannels":2,"audioCodec":"aac","audioProfile":"lc","bitrate":5612,"container":"mov","duration":150192,"has64bitOffsets":false,"hasVoiceActivity":true,"height":544,"id":1,"optimizedForStreaming":false,"Part":[{"audioProfile":"lc","container":"mov","duration":150192,"file":"/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov","has64bitOffsets":false,"id":1,"key":"/library/parts/1/1531779263/file.mov","optimizedForStreaming":false,"size":105355654,"Stream":[{"default":true,"audioChannelLayout":"stereo","bitDepth":8,"bitrate":5466,"canAutoSync":true,"chromaLocation":"topleft","chromaSubsampling":"4:2:0","codec":"h264","colorPrimaries":"bt709","colorRange":"tv","colorSpace":"bt709","colorTrc":"bt709","displayTitle":"English (H.264 Main)","frameRate":23.976,"hasScalingMatrix":false,"height":544,"id":1,"index":0,"key":"/library/streams/1","language":"English","languageCode":"eng","level":31,"profile":"main","refFrames":2,"samplingRate":48000,"streamIdentifier":1,"streamType":1,"width":1280}],"videoProfile":"main"}],"videoCodec":"h264","videoFrameRate":"24p","videoProfile":"main","videoResolution":"720","width":1280}],"Rating":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Role":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}],"Writer":[{"filter":"actor=49","role":"Secretary","tag":"Shaun Lawton","tagKey":"5d3ee12c4cde6a001c3e0b27","thumb":"http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} type: simple x-speakeasy-test-group: Library Collections x-speakeasy-test-rebuild: true + - workflowId: getTokenDetails + steps: + - stepId: test + operationId: getTokenDetails + parameters: + - name: accepts + in: header + value: application/xml + - name: X-Plex-Client-Identifier + in: header + value: abc123 + - name: X-Plex-Product + in: header + value: Plex for Roku + - name: X-Plex-Version + in: header + value: 2.4.1 + - name: X-Plex-Platform + in: header + value: Roku + - name: X-Plex-Platform-Version + in: header + value: 4.3 build 1057 + - name: X-Plex-Device + in: header + value: Roku 3 + - name: X-Plex-Model + in: header + value: 4200X + - name: X-Plex-Device-Vendor + in: header + value: Roku + - name: X-Plex-Device-Name + in: header + value: Living Room TV + - name: X-Plex-Marketplace + in: header + value: googlePlay + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"adsConsentReminderAt":1556281940,"adsConsentSetAt":1556281940,"anonymous":false,"authToken":"CxoUzBTSV5hsxjTpFKaf","backupCodesCreated":false,"confirmed":false,"country":"US","email":"username@email.com","emailOnlyAuth":false,"experimentalFeatures":false,"friendlyName":"friendlyUsername","entitlements":[],"guest":false,"hasPassword":true,"home":false,"homeAdmin":false,"homeSize":1,"id":13692262,"joinedAt":1556281940,"mailingListActive":false,"mailingListStatus":"active","maxHomeSize":15,"profile":{"autoSelectAudio":true,"defaultAudioLanguage":"ja","defaultAudioAccessibility":0,"defaultAudioLanguages":null,"defaultSubtitleLanguage":"en","defaultSubtitleLanguages":null,"autoSelectSubtitle":1,"defaultSubtitleAccessibility":1,"defaultSubtitleForced":1,"watchedIndicator":1,"mediaReviewsVisibility":1,"mediaReviewsLanguages":null},"protected":false,"rememberExpiresAt":1556281940,"restricted":false,"services":[],"subscription":{"active":true,"subscribedAt":"2021-04-12T18:21:12Z","status":"Inactive"},"subscriptions":[{"active":true,"subscribedAt":"2021-04-12T18:21:12Z","status":"Inactive"}],"thumb":"https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101","title":"UsernameTitle","twoFactorEnabled":false,"username":"Username","uuid":"dae343c1f45beb4f","attributionPartner":null} + type: simple + x-speakeasy-test-group: Authentication + x-speakeasy-test-rebuild: true + - workflowId: post-users-sign-in-data + steps: + - stepId: test + operationId: post-users-sign-in-data + parameters: + - name: X-Plex-Client-Identifier + in: header + value: 3381b62b-9ab7-4e37-827b-203e9809eb58 + - name: X-Plex-Product + in: header + value: Plex for Roku + - name: X-Plex-Device + in: header + value: Roku 3 + - name: X-Plex-Version + in: header + value: 2.4.1 + - name: X-Plex-Platform + in: header + value: Roku + requestBody: + contentType: application/x-www-form-urlencoded + payload: + login: username@email.com + password: password123 + rememberMe: false + verificationCode: "123456" + successCriteria: + - condition: $statusCode == 201 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"adsConsent": null, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": ["[]"], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1556281940, "locale": "ru", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [], "trials": []} + type: simple + x-speakeasy-test-group: Authentication + x-speakeasy-test-rebuild: true + - workflowId: get-users + steps: + - stepId: test + operationId: get-users + parameters: + - name: X-Plex-Client-Identifier + in: header + value: 3381b62b-9ab7-4e37-827b-203e9809eb58 + - name: X-Plex-Product + in: header + value: Plex for Roku + - name: X-Plex-Device + in: header + value: Roku 3 + - name: X-Plex-Device-Name + in: header + value: Chrome + - name: X-Plex-Version + in: header + value: 2.4.1 + - name: X-Plex-Platform + in: header + value: Roku + - name: X-Plex-Model + in: header + value: 4200X + - name: X-Plex-Platform-Version + in: header + value: 4.3 build 1057 + successCriteria: + - condition: $statusCode == 200 + x-speakeasy-test-group: Users + x-speakeasy-test-rebuild: true + - workflowId: get-server-resources + steps: + - stepId: test + operationId: get-server-resources + parameters: + - name: includeHttps + in: query + value: 1 + - name: includeRelay + in: query + value: 1 + - name: includeIPv6 + in: query + value: 1 + - name: X-Plex-Client-Identifier + in: header + value: 3381b62b-9ab7-4e37-827b-203e9809eb58 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + [{"name": "", "product": "Ergonomic Plastic Hat", "productVersion": "", "platform": "", "platformVersion": "", "device": "Mobile", "clientIdentifier": "", "createdAt": "2019-06-24T11:38:02Z", "lastSeenAt": "2019-06-24T11:38:02Z", "provides": "", "ownerId": null, "sourceTitle": "", "publicAddress": "", "accessToken": "", "owned": true, "home": false, "synced": false, "relay": true, "presence": false, "httpsRequired": true, "publicAddressMatches": false, "dnsRebindingProtection": true, "natLoopbackSupported": false, "connections": [{"protocol": "http", "address": "5746 Mount Street", "port": 441996, "uri": "https://wide-kick.name/", "local": false, "relay": true, "IPv6": true}]}] + type: simple + x-speakeasy-test-group: Plex + x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 5848f8e7..bf99f268 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.656.1 +speakeasyVersion: 1.665.0 sources: my-source: sourceNamespace: my-source @@ -9,20 +9,20 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:56fc783b16af019db4eb0fe52df504315e8e7c7ae41e319a61bba8823f19df4b - sourceBlobDigest: sha256:b62613477fd824bb42cf0bf5d0f9980448259c9c7456e03ca6a10eef39a3994f + sourceRevisionDigest: sha256:ace004a3b232e8ab9ca3d89f2da8e40470236e6d997073a16c3f8872d67a7383 + sourceBlobDigest: sha256:993bfb796a3833b0a3b813ad12469ca34db94f23c2d15ae988a26b4d1ed80fbe tags: - latest - - speakeasy-sdk-regen-1762992705 + - speakeasy-sdk-regen-1764548057 - 1.1.1 targets: plexjs: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:56fc783b16af019db4eb0fe52df504315e8e7c7ae41e319a61bba8823f19df4b - sourceBlobDigest: sha256:b62613477fd824bb42cf0bf5d0f9980448259c9c7456e03ca6a10eef39a3994f + sourceRevisionDigest: sha256:ace004a3b232e8ab9ca3d89f2da8e40470236e6d997073a16c3f8872d67a7383 + sourceBlobDigest: sha256:993bfb796a3833b0a3b813ad12469ca34db94f23c2d15ae988a26b4d1ed80fbe codeSamplesNamespace: code-samples-typescript-plexjs - codeSamplesRevisionDigest: sha256:9c301d7b022dab8173b220aa8f2546378c973a75491335d1742c60d131abdf27 + codeSamplesRevisionDigest: sha256:c53f6ae11c517b30d265b87a938e710393ce8921f2f8f5e04f73419faf2ae2f0 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/FUNCTIONS.md b/FUNCTIONS.md index 04b4ebc1..b717531b 100644 --- a/FUNCTIONS.md +++ b/FUNCTIONS.md @@ -38,6 +38,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -47,13 +48,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/README.md b/README.md index a488ce72..4aa933c6 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -105,13 +106,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -151,6 +152,11 @@ run(); * [listActivities](docs/sdks/activities/README.md#listactivities) - Get all activities * [cancelActivity](docs/sdks/activities/README.md#cancelactivity) - Cancel a running activity +### [authentication](docs/sdks/authentication/README.md) + +* [getTokenDetails](docs/sdks/authentication/README.md#gettokendetails) - Get Token Details +* [postUsersSignInData](docs/sdks/authentication/README.md#postuserssignindata) - Get User Sign In Data + ### [butler](docs/sdks/butler/README.md) * [stopTasks](docs/sdks/butler/README.md#stoptasks) - Stop all Butler tasks @@ -398,6 +404,10 @@ run(); * [deletePlayQueueItem](docs/sdks/playqueue/README.md#deleteplayqueueitem) - Delete an item from a play queue * [movePlayQueueItem](docs/sdks/playqueue/README.md#moveplayqueueitem) - Move an item in a play queue +### [plex](docs/sdks/plex/README.md) + +* [getServerResources](docs/sdks/plex/README.md#getserverresources) - Get Server Resources + ### [preferences](docs/sdks/preferences/README.md) * [getAllPreferences](docs/sdks/preferences/README.md#getallpreferences) - Get all preferences @@ -467,6 +477,10 @@ run(); * [checkUpdates](docs/sdks/updater/README.md#checkupdates) - Checking for updates * [getUpdatesStatus](docs/sdks/updater/README.md#getupdatesstatus) - Querying status of updates +### [users](docs/sdks/users/README.md) + +* [getUsers](docs/sdks/users/README.md#getusers) - Get list of all connected users + @@ -475,13 +489,14 @@ run(); [`PlexAPIError`](./src/sdk/models/errors/plexapierror.ts) is the base class for all HTTP error responses. It has the following properties: -| Property | Type | Description | -| ------------------- | ---------- | ------------------------------------------------------ | -| `error.message` | `string` | Error message | -| `error.statusCode` | `number` | HTTP response status code eg `404` | -| `error.headers` | `Headers` | HTTP response headers | -| `error.body` | `string` | HTTP body. Can be empty string if no body is returned. | -| `error.rawResponse` | `Response` | Raw HTTP response | +| Property | Type | Description | +| ------------------- | ---------- | --------------------------------------------------------------------------------------- | +| `error.message` | `string` | Error message | +| `error.statusCode` | `number` | HTTP response status code eg `404` | +| `error.headers` | `Headers` | HTTP response headers | +| `error.body` | `string` | HTTP body. Can be empty string if no body is returned. | +| `error.rawResponse` | `Response` | Raw HTTP response | +| `error.data$` | | Optional. Some errors may contain structured data. [See Error Classes](#error-classes). | ### Example ```typescript @@ -501,19 +516,27 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { try { - const result = await plexAPI.general.getServerInfo({}); + const result = await plexAPI.authentication.getTokenDetails({}); console.log(result); } catch (error) { + // The base class for HTTP error responses if (error instanceof errors.PlexAPIError) { console.log(error.message); console.log(error.statusCode); console.log(error.body); console.log(error.headers); + + // Depending on the method different errors may be thrown + if (error instanceof errors.GetTokenDetailsBadRequestError) { + console.log(error.data$.errors); // GetTokenDetailsBadRequestError[] + console.log(error.data$.rawResponse); // Response + } } } } @@ -526,7 +549,7 @@ run(); **Primary error:** * [`PlexAPIError`](./src/sdk/models/errors/plexapierror.ts): The base class for HTTP error responses. -
Less common errors (6) +
Less common errors (13)
@@ -539,9 +562,18 @@ run(); **Inherit from [`PlexAPIError`](./src/sdk/models/errors/plexapierror.ts)**: +* [`GetTokenDetailsBadRequestError`](./src/sdk/models/errors/gettokendetailsbadrequesterror.ts): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 241 methods.* +* [`PostUsersSignInDataBadRequestError`](./src/sdk/models/errors/postuserssignindatabadrequesterror.ts): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 241 methods.* +* [`GetUsersBadRequestError`](./src/sdk/models/errors/getusersbadrequesterror.ts): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 241 methods.* +* [`GetTokenDetailsUnauthorizedError`](./src/sdk/models/errors/gettokendetailsunauthorizederror.ts): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 241 methods.* +* [`PostUsersSignInDataUnauthorizedError`](./src/sdk/models/errors/postuserssignindataunauthorizederror.ts): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 241 methods.* +* [`GetUsersUnauthorizedError`](./src/sdk/models/errors/getusersunauthorizederror.ts): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 241 methods.* +* [`GetServerResourcesUnauthorizedError`](./src/sdk/models/errors/getserverresourcesunauthorizederror.ts): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 241 methods.* * [`ResponseValidationError`](./src/sdk/models/errors/responsevalidationerror.ts): Type mismatch between the data returned from the server and the structure expected by the SDK. See `error.rawValue` for the raw value and `error.pretty()` for a nicely formatted multi-line string.
+ +\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable. @@ -590,6 +622,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -622,6 +655,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -632,6 +666,40 @@ async function run() { run(); +``` + +### Override Server URL Per-Operation + +The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "", +}); + +async function run() { + const result = await plexAPI.authentication.getTokenDetails({}, { + serverURL: "https://plex.tv/api/v2", + }); + + console.log(result); +} + +run(); + ``` @@ -749,6 +817,8 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`activitiesCancelActivity`](docs/sdks/activities/README.md#cancelactivity) - Cancel a running activity - [`activitiesListActivities`](docs/sdks/activities/README.md#listactivities) - Get all activities +- [`authenticationGetTokenDetails`](docs/sdks/authentication/README.md#gettokendetails) - Get Token Details +- [`authenticationPostUsersSignInData`](docs/sdks/authentication/README.md#postuserssignindata) - Get User Sign In Data - [`butlerGetTasks`](docs/sdks/butler/README.md#gettasks) - Get all Butler tasks - [`butlerStartTask`](docs/sdks/butler/README.md#starttask) - Start a single Butler task - [`butlerStartTasks`](docs/sdks/butler/README.md#starttasks) - Start all Butler tasks @@ -945,6 +1015,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`playQueueResetPlayQueue`](docs/sdks/playqueue/README.md#resetplayqueue) - Reset a play queue - [`playQueueShuffle`](docs/sdks/playqueue/README.md#shuffle) - Shuffle a play queue - [`playQueueUnshuffle`](docs/sdks/playqueue/README.md#unshuffle) - Unshuffle a play queue +- [`plexGetServerResources`](docs/sdks/plex/README.md#getserverresources) - Get Server Resources - [`preferencesGetAllPreferences`](docs/sdks/preferences/README.md#getallpreferences) - Get all preferences - [`preferencesGetPreference`](docs/sdks/preferences/README.md#getpreference) - Get a preferences - [`preferencesSetPreferences`](docs/sdks/preferences/README.md#setpreferences) - Set preferences @@ -984,6 +1055,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`updaterApplyUpdates`](docs/sdks/updater/README.md#applyupdates) - Applying updates - [`updaterCheckUpdates`](docs/sdks/updater/README.md#checkupdates) - Checking for updates - [`updaterGetUpdatesStatus`](docs/sdks/updater/README.md#getupdatesstatus) - Querying status of updates +- [`usersGetUsers`](docs/sdks/users/README.md#getusers) - Get list of all connected users
@@ -1006,7 +1078,9 @@ Certain SDK methods accept files as part of a multi-part request. It is possible import { PlexAPI } from "@lukehagar/plexjs"; import { openAsBlob } from "node:fs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.log.writeLog(await openAsBlob("example.file")); @@ -1041,6 +1115,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1091,6 +1166,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/RELEASES.md b/RELEASES.md index e3788463..d5694d6b 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1438,4 +1438,14 @@ Based on: ### Generated - [typescript v0.43.0] . ### Releases -- [NPM v0.43.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.43.0 - . \ No newline at end of file +- [NPM v0.43.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.43.0 - . + +## 2025-12-01 00:13:55 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.665.0 (2.767.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [typescript v0.44.0] . +### Releases +- [NPM v0.44.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.44.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index c53f34a9..031b5c4a 100644 --- a/USAGE.md +++ b/USAGE.md @@ -25,6 +25,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -34,13 +35,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/codeSamples.yaml b/codeSamples.yaml index 981331de..8a7d23ed 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -24,6 +24,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -54,6 +55,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -71,7 +73,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.preferences.getAllPreferences(); @@ -101,6 +105,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -133,6 +138,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -163,6 +169,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -197,6 +204,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -230,6 +238,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -240,9 +249,9 @@ actions: playQueueItemID: "123", time: 0, duration: 10000, - continuing: BoolInt.One, + continuing: BoolInt.True, updated: 14200000, - offline: BoolInt.One, + offline: BoolInt.True, timeToFirstFrame: 1000, timeStalled: 1000, bandwidth: 100, @@ -275,6 +284,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -307,6 +317,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -324,7 +335,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.activities.listActivities(); @@ -354,6 +367,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -373,7 +387,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.butler.stopTasks(); @@ -390,7 +406,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.butler.getTasks(); @@ -407,7 +425,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.butler.startTasks(); @@ -416,14 +436,14 @@ actions: } run(); - - target: $["paths"]["/butler/{task}"]["delete"] + - target: $["paths"]["/butler/{butlerTask}"]["delete"] update: x-codeSamples: - lang: typescript label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { StopTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; + import { StopTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ @@ -438,25 +458,26 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.butler.stopTask({ - task: StopTaskTask.CleanOldBundles, + butlerTask: StopTaskButlerTask.CleanOldBundles, }); console.log(result); } run(); - - target: $["paths"]["/butler/{task}"]["post"] + - target: $["paths"]["/butler/{butlerTask}"]["post"] update: x-codeSamples: - lang: typescript label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { StartTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; + import { StartTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ @@ -471,11 +492,12 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.butler.startTask({ - task: StartTaskTask.RefreshLocalMedia, + butlerTask: StartTaskButlerTask.RefreshLocalMedia, }); console.log(result); @@ -490,7 +512,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.downloadQueue.createDownloadQueue(); @@ -520,6 +544,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -538,7 +563,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, Protocol } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, ProtocolParameter } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -552,6 +577,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -564,13 +590,13 @@ actions: advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: LocationParameter.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -580,7 +606,7 @@ actions: path: "/library/metadata/151671", peakBitrate: 12000, photoResolution: "1080x1080", - protocol: Protocol.Dash, + protocol: ProtocolParameter.Dash, secondsPerSegment: 5, subtitleSize: 50, videoBitrate: 12000, @@ -613,6 +639,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -646,6 +673,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -679,6 +707,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -711,6 +740,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -748,6 +778,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -785,6 +816,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -822,11 +854,12 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getAllHubs({ - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -854,6 +887,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -884,6 +918,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -920,12 +955,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getMetadataHubs({ metadataId: 605482, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -953,12 +989,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getPostplayHubs({ metadataId: 441419, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -986,12 +1023,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getRelatedHubs({ metadataId: 8858, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -1019,6 +1057,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1049,6 +1088,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1068,7 +1108,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -1082,11 +1122,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.search.voiceSearchHubs({ query: "", + type: MediaType.TvShow, }); console.log(result); @@ -1114,12 +1156,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getSectionHubs({ sectionId: 336924, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -1147,6 +1190,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1179,6 +1223,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1211,15 +1256,16 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.createCustomHub({ sectionId: 869922, metadataItemId: 703843, - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); console.log(result); @@ -1247,6 +1293,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1280,6 +1327,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1313,15 +1361,16 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.updateHubVisibility({ sectionId: 341650, identifier: "", - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); console.log(result); @@ -1336,7 +1385,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.general.getIdentity(); @@ -1352,7 +1403,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -1366,10 +1417,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const result = await plexAPI.library.getLibraryItems({}); + const result = await plexAPI.library.getLibraryItems({ + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + }); console.log(result); } @@ -1383,7 +1441,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.library.deleteCaches(); @@ -1400,7 +1460,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.library.cleanBundles(); @@ -1416,7 +1478,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -1430,11 +1492,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.collections.createCollection({ sectionId: "", + type: MediaType.TvShow, }); console.log(result); @@ -1462,6 +1526,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1495,6 +1560,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1527,6 +1593,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1560,6 +1627,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1593,6 +1661,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1626,14 +1695,15 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.ingestTransientItem({ url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", virtualFilePath: "/Avatar.mkv", - computeHashes: BoolInt.One, - ingestNonMatches: BoolInt.One, + computeHashes: BoolInt.True, + ingestNonMatches: BoolInt.True, }); console.log(result); @@ -1647,7 +1717,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -1661,13 +1731,15 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getLibraryMatches({ - includeFullMetadata: BoolInt.One, - includeAncestorMetadata: BoolInt.One, - includeAlternateMetadataSources: BoolInt.One, + type: MediaType.TvShow, + includeFullMetadata: BoolInt.True, + includeAncestorMetadata: BoolInt.True, + includeAlternateMetadataSources: BoolInt.True, }); console.log(result); @@ -1695,6 +1767,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1728,12 +1801,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getAugmentationStatus({ augmentationId: "", - wait: BoolInt.One, + wait: BoolInt.True, }); console.log(result); @@ -1761,12 +1835,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteMetadataItem({ ids: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); console.log(result); @@ -1794,19 +1869,20 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.content.getMetadataItem({ ids: [], - asyncCheckFiles: BoolInt.One, - asyncRefreshLocalMediaAgent: BoolInt.One, - asyncRefreshAnalysis: BoolInt.One, - checkFiles: BoolInt.One, - skipRefresh: BoolInt.One, - checkFileAvailability: BoolInt.One, - asyncAugmentMetadata: BoolInt.One, - augmentCount: BoolInt.One, + asyncCheckFiles: BoolInt.True, + asyncRefreshLocalMediaAgent: BoolInt.True, + asyncRefreshAnalysis: BoolInt.True, + checkFiles: BoolInt.True, + skipRefresh: BoolInt.True, + checkFileAvailability: BoolInt.True, + asyncAugmentMetadata: BoolInt.True, + augmentCount: BoolInt.True, }); console.log(result); @@ -1834,6 +1910,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1869,6 +1946,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1901,6 +1979,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1933,6 +2012,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1965,12 +2045,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.generateThumbs({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -1998,13 +2079,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectCredits({ ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); console.log(result); @@ -2032,6 +2114,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2064,6 +2147,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2097,6 +2181,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2129,12 +2214,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.startBifGeneration({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -2162,12 +2248,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectIntros({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -2195,6 +2282,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2230,6 +2318,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2263,6 +2352,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2299,6 +2389,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2331,12 +2422,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.listMatches({ ids: "", - manual: BoolInt.One, + manual: BoolInt.True, }); console.log(result); @@ -2364,13 +2456,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteMediaItem({ ids: "", mediaItem: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); console.log(result); @@ -2398,6 +2491,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2430,6 +2524,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2462,6 +2557,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2494,12 +2590,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.refreshItemsMetadata({ ids: "", - markUpdated: BoolInt.One, + markUpdated: BoolInt.True, }); console.log(result); @@ -2527,6 +2624,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2559,6 +2657,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2591,6 +2690,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2623,13 +2723,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.addSubtitles({ ids: "", - forced: BoolInt.One, - hearingImpaired: BoolInt.One, + forced: BoolInt.True, + hearingImpaired: BoolInt.True, }); console.log(result); @@ -2657,6 +2758,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2689,6 +2791,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2721,6 +2824,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2753,13 +2857,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectVoiceActivity({ ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); console.log(result); @@ -2788,6 +2893,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2822,6 +2928,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2856,6 +2963,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2890,11 +2998,12 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.optimizeDatabase({ - async: BoolInt.One, + async: BoolInt.True, }); console.log(result); @@ -2922,12 +3031,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.setStreamSelection({ partId: 360489, - allParts: BoolInt.One, + allParts: BoolInt.True, }); console.log(result); @@ -2956,6 +3066,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2990,6 +3101,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3024,6 +3136,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3031,7 +3144,7 @@ actions: partId: 877105, changestamp: 970622, filename: "example.file", - download: BoolInt.One, + download: BoolInt.True, }); console.log(result); @@ -3059,6 +3172,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3091,6 +3205,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3123,6 +3238,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3145,7 +3261,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.library.getSections(); @@ -3175,6 +3293,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3188,8 +3307,8 @@ actions: "O:\fatboy\\Media\\My Music", ], prefs: {}, - relative: BoolInt.One, - importFromiTunes: BoolInt.One, + relative: BoolInt.True, + importFromiTunes: BoolInt.True, }); console.log(result); @@ -3204,7 +3323,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.library.stopAllRefreshes(); @@ -3234,6 +3355,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3266,6 +3388,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3296,12 +3419,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteLibrarySection({ sectionId: "", - async: BoolInt.One, + async: BoolInt.True, }); console.log(result); @@ -3329,12 +3453,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getLibraryDetails({ sectionId: "", - includeDetails: BoolInt.One, + includeDetails: BoolInt.True, }); console.log(result); @@ -3362,6 +3487,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3400,6 +3526,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3418,7 +3545,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3432,10 +3559,18 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.content.listContent({ + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + includeMeta: BoolInt.True, + includeGuids: BoolInt.True, sectionId: "", }); @@ -3464,12 +3599,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.updateItems({ sectionId: "", - fieldLocked: BoolInt.One, + fieldLocked: BoolInt.True, }); console.log(result); @@ -3497,6 +3633,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3529,6 +3666,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3561,6 +3699,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3579,7 +3718,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3593,11 +3732,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.autocomplete({ sectionId: 942007, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -3625,6 +3770,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3657,6 +3803,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3689,6 +3836,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3708,7 +3856,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3722,11 +3870,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getCollections({ sectionId: 348838, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -3740,7 +3894,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3754,11 +3908,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getCommon({ sectionId: 298154, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -3772,7 +3932,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3786,12 +3946,18 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getSectionImage({ sectionId: 925611, updatedAt: 117413, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -3819,6 +3985,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3853,6 +4020,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3885,6 +4053,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3903,7 +4072,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -3917,11 +4086,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getFirstCharacters({ sectionId: 3947, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -3949,6 +4124,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3981,6 +4157,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4013,6 +4190,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4045,6 +4223,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4077,6 +4256,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4110,6 +4290,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4142,6 +4323,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4175,6 +4357,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4207,12 +4390,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.refreshSection({ sectionId: 450300, - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -4240,6 +4424,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4272,6 +4457,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4305,13 +4491,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getStream({ streamId: 314506, ext: "", - autoAdjustSubtitle: BoolInt.One, + autoAdjustSubtitle: BoolInt.True, }); console.log(result); @@ -4339,6 +4526,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4372,6 +4560,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4404,6 +4593,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4422,7 +4612,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -4436,10 +4626,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const result = await plexAPI.library.getTags({}); + const result = await plexAPI.library.getTags({ + type: MediaType.TvShow, + }); console.log(result); } @@ -4453,7 +4646,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.dvRs.listDVRs(); @@ -4483,6 +4678,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4571,6 +4767,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4603,6 +4800,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4635,6 +4833,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4668,6 +4867,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4701,6 +4901,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4734,6 +4935,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4767,6 +4969,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4800,6 +5003,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4832,6 +5036,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4864,6 +5069,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4896,6 +5102,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4929,6 +5136,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4948,7 +5156,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.epg.getCountries(); @@ -4978,6 +5188,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5011,6 +5222,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5044,6 +5256,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5065,7 +5278,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.epg.getAllLanguages(); @@ -5095,6 +5310,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5128,6 +5344,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5150,7 +5367,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.liveTV.getSessions(); @@ -5180,6 +5399,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5212,6 +5432,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5245,6 +5466,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5267,7 +5489,9 @@ actions: import { PlexAPI } from "@lukehagar/plexjs"; import { openAsBlob } from "node:fs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.log.writeLog(await openAsBlob("example.file")); @@ -5297,6 +5521,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5327,6 +5552,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5357,6 +5583,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5376,7 +5603,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.devices.listDevices(); @@ -5406,6 +5635,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5425,7 +5655,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.devices.discoverDevices(); @@ -5455,6 +5687,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5487,6 +5720,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5519,12 +5753,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.devices.modifyDevice({ deviceId: 879135, - enabled: BoolInt.One, + enabled: BoolInt.True, }); console.log(result); @@ -5552,6 +5787,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5602,6 +5838,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5634,6 +5871,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5666,6 +5904,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5698,6 +5937,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5731,6 +5971,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5764,6 +6005,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5783,7 +6025,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.provider.listProviders(); @@ -5813,6 +6057,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5832,7 +6077,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.provider.refreshProviders(); @@ -5862,6 +6109,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5894,12 +6142,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.subscriptions.getAllSubscriptions({ - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); console.log(result); @@ -5927,6 +6176,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5951,7 +6201,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.subscriptions.processSubscriptions(); @@ -5968,7 +6220,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.subscriptions.getScheduledRecordings(); @@ -5998,6 +6252,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6030,6 +6285,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6062,13 +6318,14 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.subscriptions.getSubscription({ subscriptionId: 186713, - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); console.log(result); @@ -6096,6 +6353,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6129,6 +6387,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6161,15 +6420,16 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.transcoder.transcodeImage({ url: "/library/metadata/265/thumb/1715112705", background: "#ff5522", - upscale: BoolInt.One, - minSize: BoolInt.One, - rotate: BoolInt.One, + upscale: BoolInt.True, + minSize: BoolInt.True, + rotate: BoolInt.True, blendColor: "#ff5522", }); @@ -6199,16 +6459,17 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.createPlayQueue({ type: CreatePlayQueueType.Audio, - shuffle: BoolInt.One, - repeat: BoolInt.One, - continuous: BoolInt.One, - recursive: BoolInt.One, - onDeck: BoolInt.One, + shuffle: BoolInt.True, + repeat: BoolInt.True, + continuous: BoolInt.True, + recursive: BoolInt.True, + onDeck: BoolInt.True, }); console.log(result); @@ -6236,14 +6497,15 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.getPlayQueue({ playQueueId: 210646, - own: BoolInt.One, - includeBefore: BoolInt.One, - includeAfter: BoolInt.One, + own: BoolInt.True, + includeBefore: BoolInt.True, + includeAfter: BoolInt.True, }); console.log(result); @@ -6271,12 +6533,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.addToPlayQueue({ playQueueId: 919248, - next: BoolInt.One, + next: BoolInt.True, }); console.log(result); @@ -6304,6 +6567,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6336,6 +6600,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6369,6 +6634,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6402,6 +6668,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6434,6 +6701,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6466,6 +6734,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6498,6 +6767,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6528,6 +6798,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6558,12 +6829,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.libraryPlaylists.uploadPlaylist({ path: "/home/barkley/playlist.m3u", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -6591,6 +6863,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6623,6 +6896,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6655,6 +6929,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6687,6 +6962,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6719,6 +6995,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6751,6 +7028,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6783,6 +7061,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6815,6 +7094,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6848,6 +7128,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6868,7 +7149,7 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; import { ModifyPlaylistGeneratorScope } from "@lukehagar/plexjs/sdk/models/operations"; - import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; + import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -6882,6 +7163,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6895,7 +7177,6 @@ actions: locationID: -1, policy: { scope: ModifyPlaylistGeneratorScope.All, - unwatched: BoolInt.Zero, }, target: "", targetTagID: 1, @@ -6929,6 +7210,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6963,6 +7245,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6998,6 +7281,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7009,6 +7293,33 @@ actions: console.log(result); } + run(); + - target: $["paths"]["/resources"]["get"] + update: + x-codeSamples: + - lang: typescript + label: PlexJS + source: |- + import { PlexAPI } from "@lukehagar/plexjs"; + import { IncludeHttps, IncludeIPv6, IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; + import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + + const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + token: "", + }); + + async function run() { + const result = await plexAPI.plex.getServerResources({ + includeHttps: IncludeHttps.True, + includeRelay: IncludeRelay.True, + includeIPv6: IncludeIPv6.True, + }); + + console.log(result); + } + run(); - target: $["paths"]["/security/resources"]["get"] update: @@ -7031,12 +7342,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.general.getSourceConnectionInformation({ source: "", - refresh: BoolInt.One, + refresh: BoolInt.True, }); console.log(result); @@ -7065,6 +7377,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7098,6 +7411,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7130,6 +7444,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7140,7 +7455,7 @@ actions: bottomLeft: "1c425d", width: 1920, height: 1080, - noise: BoolInt.One, + noise: BoolInt.True, }); console.log(result); @@ -7155,7 +7470,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.status.listSessions(); @@ -7172,7 +7489,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.status.getBackgroundTasks(); @@ -7202,6 +7521,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7258,6 +7578,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7290,6 +7611,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7322,6 +7644,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7355,12 +7678,13 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.updater.applyUpdates({ - tonight: BoolInt.One, - skip: BoolInt.One, + tonight: BoolInt.True, + skip: BoolInt.True, }); console.log(result); @@ -7388,11 +7712,12 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.updater.checkUpdates({ - download: BoolInt.One, + download: BoolInt.True, }); console.log(result); @@ -7407,7 +7732,9 @@ actions: source: |- import { PlexAPI } from "@lukehagar/plexjs"; - const plexAPI = new PlexAPI(); + const plexAPI = new PlexAPI({ + token: "", + }); async function run() { const result = await plexAPI.updater.getUpdatesStatus(); @@ -7415,6 +7742,104 @@ actions: console.log(result); } + run(); + - target: $["paths"]["/user"]["get"] + update: + x-codeSamples: + - lang: typescript + label: PlexJS + source: |- + import { PlexAPI } from "@lukehagar/plexjs"; + import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + + const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "", + }); + + async function run() { + const result = await plexAPI.authentication.getTokenDetails({}); + + console.log(result); + } + + run(); + - target: $["paths"]["/users"]["get"] + update: + x-codeSamples: + - lang: typescript + label: PlexJS + source: |- + import { PlexAPI } from "@lukehagar/plexjs"; + import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + + const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "", + }); + + async function run() { + const result = await plexAPI.users.getUsers({}); + + console.log(result); + } + + run(); + - target: $["paths"]["/users/signin"]["post"] + update: + x-codeSamples: + - lang: typescript + label: PlexJS + source: |- + import { PlexAPI } from "@lukehagar/plexjs"; + import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + + const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + }); + + async function run() { + const result = await plexAPI.authentication.postUsersSignInData({ + requestBody: { + login: "username@email.com", + password: "password123", + verificationCode: "123456", + }, + }); + + console.log(result); + } + run(); - target: $["paths"]["/{transcodeType}/:/transcode/universal/decision"]["get"] update: @@ -7438,6 +7863,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7446,13 +7872,13 @@ actions: advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: MakeDecisionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -7497,6 +7923,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7530,6 +7957,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7539,13 +7967,13 @@ actions: advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -7591,6 +8019,7 @@ actions: deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7599,13 +8028,13 @@ actions: advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: TranscodeSubtitlesLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/docs/sdk/models/errors/getserverresourcesunauthorizederror.md b/docs/sdk/models/errors/getserverresourcesunauthorizederror.md new file mode 100644 index 00000000..300e56ae --- /dev/null +++ b/docs/sdk/models/errors/getserverresourcesunauthorizederror.md @@ -0,0 +1,18 @@ +# GetServerResourcesUnauthorizedError + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { GetServerResourcesUnauthorizedError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `errors` | [operations.GetServerResourcesError](../../../sdk/models/operations/getserverresourceserror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/gettokendetailsbadrequesterror.md b/docs/sdk/models/errors/gettokendetailsbadrequesterror.md new file mode 100644 index 00000000..8fc31a43 --- /dev/null +++ b/docs/sdk/models/errors/gettokendetailsbadrequesterror.md @@ -0,0 +1,18 @@ +# GetTokenDetailsBadRequestError + +Bad Request - A parameter was not specified, or was specified incorrectly. + +## Example Usage + +```typescript +import { GetTokenDetailsBadRequestError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `errors` | [operations.GetTokenDetailsBadRequestError](../../../sdk/models/operations/gettokendetailsbadrequesterror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/gettokendetailsunauthorizederror.md b/docs/sdk/models/errors/gettokendetailsunauthorizederror.md new file mode 100644 index 00000000..10b198d6 --- /dev/null +++ b/docs/sdk/models/errors/gettokendetailsunauthorizederror.md @@ -0,0 +1,18 @@ +# GetTokenDetailsUnauthorizedError + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { GetTokenDetailsUnauthorizedError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `errors` | [operations.GetTokenDetailsUnauthorizedError](../../../sdk/models/operations/gettokendetailsunauthorizederror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getusersbadrequesterror.md b/docs/sdk/models/errors/getusersbadrequesterror.md new file mode 100644 index 00000000..701c0a03 --- /dev/null +++ b/docs/sdk/models/errors/getusersbadrequesterror.md @@ -0,0 +1,18 @@ +# GetUsersBadRequestError + +Bad Request - A parameter was not specified, or was specified incorrectly. + +## Example Usage + +```typescript +import { GetUsersBadRequestError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `errors` | [operations.GetUsersBadRequestError](../../../sdk/models/operations/getusersbadrequesterror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getusersunauthorizederror.md b/docs/sdk/models/errors/getusersunauthorizederror.md new file mode 100644 index 00000000..9601145c --- /dev/null +++ b/docs/sdk/models/errors/getusersunauthorizederror.md @@ -0,0 +1,18 @@ +# GetUsersUnauthorizedError + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { GetUsersUnauthorizedError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `errors` | [operations.GetUsersUnauthorizedError](../../../sdk/models/operations/getusersunauthorizederror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/postuserssignindatabadrequesterror.md b/docs/sdk/models/errors/postuserssignindatabadrequesterror.md new file mode 100644 index 00000000..9a18a02b --- /dev/null +++ b/docs/sdk/models/errors/postuserssignindatabadrequesterror.md @@ -0,0 +1,18 @@ +# PostUsersSignInDataBadRequestError + +Bad Request - A parameter was not specified, or was specified incorrectly. + +## Example Usage + +```typescript +import { PostUsersSignInDataBadRequestError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `errors` | [operations.PostUsersSignInDataBadRequestError](../../../sdk/models/operations/postuserssignindatabadrequesterror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/postuserssignindataunauthorizederror.md b/docs/sdk/models/errors/postuserssignindataunauthorizederror.md new file mode 100644 index 00000000..b470c945 --- /dev/null +++ b/docs/sdk/models/errors/postuserssignindataunauthorizederror.md @@ -0,0 +1,18 @@ +# PostUsersSignInDataUnauthorizedError + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { PostUsersSignInDataUnauthorizedError } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `errors` | [operations.PostUsersSignInDataUnauthorizedError](../../../sdk/models/operations/postuserssignindataunauthorizederror.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/operations/adddownloadqueueitemsrequest.md b/docs/sdk/models/operations/adddownloadqueueitemsrequest.md index 67d38d0f..45c04514 100644 --- a/docs/sdk/models/operations/adddownloadqueueitemsrequest.md +++ b/docs/sdk/models/operations/adddownloadqueueitemsrequest.md @@ -4,7 +4,7 @@ ```typescript import { AddDownloadQueueItemsRequest } from "@lukehagar/plexjs/sdk/models/operations"; -import { AdvancedSubtitles, BoolInt, LocationParameter, Protocol, Subtitles } from "@lukehagar/plexjs/sdk/models/shared"; +import { AdvancedSubtitles, BoolInt, LocationParameter, ProtocolParameter, Subtitles } from "@lukehagar/plexjs/sdk/models/shared"; let value: AddDownloadQueueItemsRequest = { queueId: 44894, @@ -15,13 +15,13 @@ let value: AddDownloadQueueItemsRequest = { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: LocationParameter.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -31,7 +31,7 @@ let value: AddDownloadQueueItemsRequest = { path: "/library/metadata/151671", peakBitrate: 12000, photoResolution: "1080x1080", - protocol: Protocol.Dash, + protocol: ProtocolParameter.Dash, secondsPerSegment: 5, subtitleSize: 50, subtitles: Subtitles.Sidecar, @@ -77,7 +77,7 @@ let value: AddDownloadQueueItemsRequest = { | `path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | | `peakBitrate` | *number* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | | `photoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | -| `protocol` | [shared.Protocol](../../../sdk/models/shared/protocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `protocol` | [shared.ProtocolParameter](../../../sdk/models/shared/protocolparameter.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | | `secondsPerSegment` | *number* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | | `subtitleSize` | *number* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | | `subtitles` | [shared.Subtitles](../../../sdk/models/shared/subtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | diff --git a/docs/sdk/models/operations/addsectionrequest.md b/docs/sdk/models/operations/addsectionrequest.md index b969effc..284e9f32 100644 --- a/docs/sdk/models/operations/addsectionrequest.md +++ b/docs/sdk/models/operations/addsectionrequest.md @@ -16,8 +16,8 @@ let value: AddSectionRequest = { "O:\fatboy\\Media\\My Music", ], prefs: {}, - relative: BoolInt.One, - importFromiTunes: BoolInt.One, + relative: BoolInt.True, + importFromiTunes: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/addsubtitlesrequest.md b/docs/sdk/models/operations/addsubtitlesrequest.md index ea7abdd8..ada57788 100644 --- a/docs/sdk/models/operations/addsubtitlesrequest.md +++ b/docs/sdk/models/operations/addsubtitlesrequest.md @@ -8,8 +8,8 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: AddSubtitlesRequest = { ids: "", - forced: BoolInt.One, - hearingImpaired: BoolInt.One, + forced: BoolInt.True, + hearingImpaired: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/addtoplayqueuerequest.md b/docs/sdk/models/operations/addtoplayqueuerequest.md index 42b0986d..b01f1961 100644 --- a/docs/sdk/models/operations/addtoplayqueuerequest.md +++ b/docs/sdk/models/operations/addtoplayqueuerequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: AddToPlayQueueRequest = { playQueueId: 354193, - next: BoolInt.One, + next: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/alllibraries.md b/docs/sdk/models/operations/alllibraries.md new file mode 100644 index 00000000..1c585d09 --- /dev/null +++ b/docs/sdk/models/operations/alllibraries.md @@ -0,0 +1,18 @@ +# AllLibraries + +Indicates if the user has access to all libraries. + +## Example Usage + +```typescript +import { AllLibraries } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllLibraries = AllLibraries.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/allowcameraupload.md b/docs/sdk/models/operations/allowcameraupload.md new file mode 100644 index 00000000..83910ffd --- /dev/null +++ b/docs/sdk/models/operations/allowcameraupload.md @@ -0,0 +1,18 @@ +# AllowCameraUpload + +Indicates if the user is allowed to upload from a camera. + +## Example Usage + +```typescript +import { AllowCameraUpload } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllowCameraUpload = AllowCameraUpload.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/allowchannels.md b/docs/sdk/models/operations/allowchannels.md new file mode 100644 index 00000000..9a0560d9 --- /dev/null +++ b/docs/sdk/models/operations/allowchannels.md @@ -0,0 +1,18 @@ +# AllowChannels + +Indicates if the user has access to channels. + +## Example Usage + +```typescript +import { AllowChannels } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllowChannels = AllowChannels.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/allowsubtitleadmin.md b/docs/sdk/models/operations/allowsubtitleadmin.md new file mode 100644 index 00000000..e6342bb4 --- /dev/null +++ b/docs/sdk/models/operations/allowsubtitleadmin.md @@ -0,0 +1,18 @@ +# AllowSubtitleAdmin + +Indicates if the user can manage subtitles. + +## Example Usage + +```typescript +import { AllowSubtitleAdmin } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllowSubtitleAdmin = AllowSubtitleAdmin.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/allowsync.md b/docs/sdk/models/operations/allowsync.md new file mode 100644 index 00000000..93e4f80b --- /dev/null +++ b/docs/sdk/models/operations/allowsync.md @@ -0,0 +1,18 @@ +# AllowSync + +Indicates if the user is allowed to sync media. + +## Example Usage + +```typescript +import { AllowSync } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllowSync = AllowSync.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/allowtuners.md b/docs/sdk/models/operations/allowtuners.md new file mode 100644 index 00000000..8875b6c4 --- /dev/null +++ b/docs/sdk/models/operations/allowtuners.md @@ -0,0 +1,18 @@ +# AllowTuners + +Indicates if the user is allowed to use tuners. + +## Example Usage + +```typescript +import { AllowTuners } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: AllowTuners = AllowTuners.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/applyupdatesrequest.md b/docs/sdk/models/operations/applyupdatesrequest.md index 43f77c39..bf9ed6fb 100644 --- a/docs/sdk/models/operations/applyupdatesrequest.md +++ b/docs/sdk/models/operations/applyupdatesrequest.md @@ -7,8 +7,8 @@ import { ApplyUpdatesRequest } from "@lukehagar/plexjs/sdk/models/operations"; import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ApplyUpdatesRequest = { - tonight: BoolInt.One, - skip: BoolInt.One, + tonight: BoolInt.True, + skip: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/autocompleterequest.md b/docs/sdk/models/operations/autocompleterequest.md index 20cadf34..aef832f4 100644 --- a/docs/sdk/models/operations/autocompleterequest.md +++ b/docs/sdk/models/operations/autocompleterequest.md @@ -4,28 +4,34 @@ ```typescript import { AutocompleteRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: AutocompleteRequest = { sectionId: 594987, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | -| `type` | *number* | :heavy_minus_sign: | Item type | | -| `fieldQuery` | *string* | :heavy_minus_sign: | The "field" stands in for any field, the value is a partial string for matching | | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | +| `type` | *number* | :heavy_minus_sign: | Item type | | +| `fieldQuery` | *string* | :heavy_minus_sign: | The "field" stands in for any field, the value is a partial string for matching | | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/billing.md b/docs/sdk/models/operations/billing.md new file mode 100644 index 00000000..2eab8d46 --- /dev/null +++ b/docs/sdk/models/operations/billing.md @@ -0,0 +1,19 @@ +# Billing + +## Example Usage + +```typescript +import { Billing } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Billing = { + internalPaymentMethod: {}, + paymentMethodId: 575569, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `internalPaymentMethod` | [operations.InternalPaymentMethod](../../../sdk/models/operations/internalpaymentmethod.md) | :heavy_check_mark: | N/A | +| `paymentMethodId` | *number* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/butlertasks.md b/docs/sdk/models/operations/butlertasks.md index 77d7b457..c40cc871 100644 --- a/docs/sdk/models/operations/butlertasks.md +++ b/docs/sdk/models/operations/butlertasks.md @@ -10,6 +10,6 @@ let value: ButlerTasks = {}; ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `butlerTask` | [operations.ButlerTask](../../../sdk/models/operations/butlertask.md)[] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `butlerTask` | [operations.GetTasksButlerTask](../../../sdk/models/operations/gettasksbutlertask.md)[] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/checkupdatesrequest.md b/docs/sdk/models/operations/checkupdatesrequest.md index 621eb77e..87f1aacb 100644 --- a/docs/sdk/models/operations/checkupdatesrequest.md +++ b/docs/sdk/models/operations/checkupdatesrequest.md @@ -7,7 +7,7 @@ import { CheckUpdatesRequest } from "@lukehagar/plexjs/sdk/models/operations"; import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: CheckUpdatesRequest = { - download: BoolInt.One, + download: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/createcollectionrequest.md b/docs/sdk/models/operations/createcollectionrequest.md index 089157c0..64ef8bf7 100644 --- a/docs/sdk/models/operations/createcollectionrequest.md +++ b/docs/sdk/models/operations/createcollectionrequest.md @@ -4,29 +4,31 @@ ```typescript import { CreateCollectionRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: CreateCollectionRequest = { sectionId: "", + type: MediaType.TvShow, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *string* | :heavy_check_mark: | The section where this collection will be created | | -| `title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | -| `smart` | *boolean* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | -| `uri` | *string* | :heavy_minus_sign: | The URI for processing the smart collection. Required for a smart collection | | -| `type` | *number* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *string* | :heavy_check_mark: | The section where this collection will be created | | +| `title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | +| `smart` | *boolean* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | +| `uri` | *string* | :heavy_minus_sign: | The URI for processing the smart collection. Required for a smart collection | | +| `type` | [shared.MediaType](../../../sdk/models/shared/mediatype.md) | :heavy_minus_sign: | The type of media to retrieve or filter by.

1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo

E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/sdk/models/operations/createcustomhubrequest.md b/docs/sdk/models/operations/createcustomhubrequest.md index d3e81dd9..8405e27f 100644 --- a/docs/sdk/models/operations/createcustomhubrequest.md +++ b/docs/sdk/models/operations/createcustomhubrequest.md @@ -9,9 +9,9 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: CreateCustomHubRequest = { sectionId: 94028, metadataItemId: 822624, - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/createplayqueuerequest.md b/docs/sdk/models/operations/createplayqueuerequest.md index 62c3204c..9ce64831 100644 --- a/docs/sdk/models/operations/createplayqueuerequest.md +++ b/docs/sdk/models/operations/createplayqueuerequest.md @@ -8,11 +8,11 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: CreatePlayQueueRequest = { type: CreatePlayQueueType.Audio, - shuffle: BoolInt.One, - repeat: BoolInt.One, - continuous: BoolInt.One, - recursive: BoolInt.One, - onDeck: BoolInt.One, + shuffle: BoolInt.True, + repeat: BoolInt.True, + continuous: BoolInt.True, + recursive: BoolInt.True, + onDeck: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/createsubscriptionmediacontainer.md b/docs/sdk/models/operations/createsubscriptionmediacontainer.md index 39555e30..79069e7e 100644 --- a/docs/sdk/models/operations/createsubscriptionmediacontainer.md +++ b/docs/sdk/models/operations/createsubscriptionmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { CreateSubscriptionMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: CreateSubscriptionMediaContainer = { mediaSubscription: [ @@ -16,9 +17,14 @@ let value: CreateSubscriptionMediaContainer = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -26,9 +32,12 @@ let value: CreateSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -39,6 +48,7 @@ let value: CreateSubscriptionMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -49,6 +59,7 @@ let value: CreateSubscriptionMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -56,16 +67,16 @@ let value: CreateSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -82,46 +93,72 @@ let value: CreateSubscriptionMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -134,9 +171,12 @@ let value: CreateSubscriptionMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -147,6 +187,7 @@ let value: CreateSubscriptionMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -154,9 +195,12 @@ let value: CreateSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/createsubscriptionresponsebody.md b/docs/sdk/models/operations/createsubscriptionresponsebody.md index 23335011..9d391cbe 100644 --- a/docs/sdk/models/operations/createsubscriptionresponsebody.md +++ b/docs/sdk/models/operations/createsubscriptionresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { CreateSubscriptionResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: CreateSubscriptionResponseBody = { mediaContainer: { @@ -14,9 +15,14 @@ let value: CreateSubscriptionResponseBody = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -24,9 +30,12 @@ let value: CreateSubscriptionResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -37,6 +46,7 @@ let value: CreateSubscriptionResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -47,6 +57,7 @@ let value: CreateSubscriptionResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -54,16 +65,16 @@ let value: CreateSubscriptionResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -80,46 +91,72 @@ let value: CreateSubscriptionResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -132,9 +169,12 @@ let value: CreateSubscriptionResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -145,6 +185,7 @@ let value: CreateSubscriptionResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -152,9 +193,12 @@ let value: CreateSubscriptionResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/deletelibrarysectionrequest.md b/docs/sdk/models/operations/deletelibrarysectionrequest.md index 24f4af35..afd8d61c 100644 --- a/docs/sdk/models/operations/deletelibrarysectionrequest.md +++ b/docs/sdk/models/operations/deletelibrarysectionrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DeleteLibrarySectionRequest = { sectionId: "", - async: BoolInt.One, + async: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/deletemediaitemrequest.md b/docs/sdk/models/operations/deletemediaitemrequest.md index b8d1c935..130c1513 100644 --- a/docs/sdk/models/operations/deletemediaitemrequest.md +++ b/docs/sdk/models/operations/deletemediaitemrequest.md @@ -9,7 +9,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DeleteMediaItemRequest = { ids: "", mediaItem: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/deletemetadataitemrequest.md b/docs/sdk/models/operations/deletemetadataitemrequest.md index 7840b298..593582cf 100644 --- a/docs/sdk/models/operations/deletemetadataitemrequest.md +++ b/docs/sdk/models/operations/deletemetadataitemrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DeleteMetadataItemRequest = { ids: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/detectcreditsrequest.md b/docs/sdk/models/operations/detectcreditsrequest.md index 0aeb6868..e58bd528 100644 --- a/docs/sdk/models/operations/detectcreditsrequest.md +++ b/docs/sdk/models/operations/detectcreditsrequest.md @@ -8,8 +8,8 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DetectCreditsRequest = { ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/detectintrosrequest.md b/docs/sdk/models/operations/detectintrosrequest.md index b2e9138d..098114b2 100644 --- a/docs/sdk/models/operations/detectintrosrequest.md +++ b/docs/sdk/models/operations/detectintrosrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DetectIntrosRequest = { ids: "", - force: BoolInt.One, + force: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/detectvoiceactivityrequest.md b/docs/sdk/models/operations/detectvoiceactivityrequest.md index 9327637f..c0aad4a6 100644 --- a/docs/sdk/models/operations/detectvoiceactivityrequest.md +++ b/docs/sdk/models/operations/detectvoiceactivityrequest.md @@ -8,8 +8,8 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: DetectVoiceActivityRequest = { ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/generatethumbsrequest.md b/docs/sdk/models/operations/generatethumbsrequest.md index 65033942..b19aef73 100644 --- a/docs/sdk/models/operations/generatethumbsrequest.md +++ b/docs/sdk/models/operations/generatethumbsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GenerateThumbsRequest = { ids: "", - force: BoolInt.One, + force: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getallhubsmediacontainer.md b/docs/sdk/models/operations/getallhubsmediacontainer.md index 0872ab60..f160ee81 100644 --- a/docs/sdk/models/operations/getallhubsmediacontainer.md +++ b/docs/sdk/models/operations/getallhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetAllHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetAllHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: GetAllHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetAllHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetAllHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetAllHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetAllHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: GetAllHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: GetAllHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: GetAllHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: GetAllHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getallhubsrequest.md b/docs/sdk/models/operations/getallhubsrequest.md index ba04b8ac..6a8d1092 100644 --- a/docs/sdk/models/operations/getallhubsrequest.md +++ b/docs/sdk/models/operations/getallhubsrequest.md @@ -7,7 +7,7 @@ import { GetAllHubsRequest } from "@lukehagar/plexjs/sdk/models/operations"; import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetAllHubsRequest = { - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getallhubsresponsebody.md b/docs/sdk/models/operations/getallhubsresponsebody.md index 298e3604..435bd553 100644 --- a/docs/sdk/models/operations/getallhubsresponsebody.md +++ b/docs/sdk/models/operations/getallhubsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetAllHubsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetAllHubsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetAllHubsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetAllHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetAllHubsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetAllHubsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetAllHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: GetAllHubsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: GetAllHubsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: GetAllHubsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: GetAllHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getallsubscriptionsrequest.md b/docs/sdk/models/operations/getallsubscriptionsrequest.md index 3270b53f..546b8164 100644 --- a/docs/sdk/models/operations/getallsubscriptionsrequest.md +++ b/docs/sdk/models/operations/getallsubscriptionsrequest.md @@ -7,8 +7,8 @@ import { GetAllSubscriptionsRequest } from "@lukehagar/plexjs/sdk/models/operati import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetAllSubscriptionsRequest = { - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getaugmentationstatusrequest.md b/docs/sdk/models/operations/getaugmentationstatusrequest.md index db10a065..765178ec 100644 --- a/docs/sdk/models/operations/getaugmentationstatusrequest.md +++ b/docs/sdk/models/operations/getaugmentationstatusrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetAugmentationStatusRequest = { augmentationId: "", - wait: BoolInt.One, + wait: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getcollectionsrequest.md b/docs/sdk/models/operations/getcollectionsrequest.md index 33585b2c..4153fa83 100644 --- a/docs/sdk/models/operations/getcollectionsrequest.md +++ b/docs/sdk/models/operations/getcollectionsrequest.md @@ -4,26 +4,32 @@ ```typescript import { GetCollectionsRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetCollectionsRequest = { sectionId: 298004, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getcommonrequest.md b/docs/sdk/models/operations/getcommonrequest.md index 8c5379a5..1c18f7d1 100644 --- a/docs/sdk/models/operations/getcommonrequest.md +++ b/docs/sdk/models/operations/getcommonrequest.md @@ -4,27 +4,33 @@ ```typescript import { GetCommonRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetCommonRequest = { sectionId: 840014, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | -| `type` | *number* | :heavy_minus_sign: | Item type | | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | +| `type` | *number* | :heavy_minus_sign: | Item type | | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getcontinuewatchingmediacontainer.md b/docs/sdk/models/operations/getcontinuewatchingmediacontainer.md index 411a49fa..1f0eedf3 100644 --- a/docs/sdk/models/operations/getcontinuewatchingmediacontainer.md +++ b/docs/sdk/models/operations/getcontinuewatchingmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetContinueWatchingMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetContinueWatchingMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: GetContinueWatchingMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetContinueWatchingMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetContinueWatchingMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetContinueWatchingMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetContinueWatchingMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: GetContinueWatchingMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: GetContinueWatchingMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: GetContinueWatchingMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: GetContinueWatchingMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getcontinuewatchingresponsebody.md b/docs/sdk/models/operations/getcontinuewatchingresponsebody.md index cd83220a..83bcbda7 100644 --- a/docs/sdk/models/operations/getcontinuewatchingresponsebody.md +++ b/docs/sdk/models/operations/getcontinuewatchingresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetContinueWatchingResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetContinueWatchingResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetContinueWatchingResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetContinueWatchingResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetContinueWatchingResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetContinueWatchingResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetContinueWatchingResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: GetContinueWatchingResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: GetContinueWatchingResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: GetContinueWatchingResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: GetContinueWatchingResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getfirstcharactersrequest.md b/docs/sdk/models/operations/getfirstcharactersrequest.md index a0f4161f..e80dd818 100644 --- a/docs/sdk/models/operations/getfirstcharactersrequest.md +++ b/docs/sdk/models/operations/getfirstcharactersrequest.md @@ -4,28 +4,34 @@ ```typescript import { GetFirstCharactersRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetFirstCharactersRequest = { sectionId: 231024, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | -| `type` | *number* | :heavy_minus_sign: | The metadata type to filter on | | -| `sort` | *number* | :heavy_minus_sign: | The metadata type to filter on | | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | +| `type` | *number* | :heavy_minus_sign: | The metadata type to filter on | | +| `sort` | *number* | :heavy_minus_sign: | The metadata type to filter on | | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getimagerequest.md b/docs/sdk/models/operations/getimagerequest.md index b67948a5..4e4953ba 100644 --- a/docs/sdk/models/operations/getimagerequest.md +++ b/docs/sdk/models/operations/getimagerequest.md @@ -13,7 +13,7 @@ let value: GetImageRequest = { bottomLeft: "1c425d", width: 1920, height: 1080, - noise: BoolInt.One, + noise: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getlibrarydetailsmediacontainer.md b/docs/sdk/models/operations/getlibrarydetailsmediacontainer.md index 8ec7b62e..69da3e15 100644 --- a/docs/sdk/models/operations/getlibrarydetailsmediacontainer.md +++ b/docs/sdk/models/operations/getlibrarydetailsmediacontainer.md @@ -4,13 +4,19 @@ ```typescript import { GetLibraryDetailsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetLibraryDetailsMediaContainer = { directory: [ { + title: "", + type: "", + addedAt: 871584, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -18,9 +24,12 @@ let value: GetLibraryDetailsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -31,6 +40,7 @@ let value: GetLibraryDetailsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -41,6 +51,7 @@ let value: GetLibraryDetailsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -48,16 +59,16 @@ let value: GetLibraryDetailsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -74,45 +85,71 @@ let value: GetLibraryDetailsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -125,9 +162,12 @@ let value: GetLibraryDetailsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -138,6 +178,7 @@ let value: GetLibraryDetailsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -145,9 +186,12 @@ let value: GetLibraryDetailsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getlibrarydetailsrequest.md b/docs/sdk/models/operations/getlibrarydetailsrequest.md index caaac511..20f57521 100644 --- a/docs/sdk/models/operations/getlibrarydetailsrequest.md +++ b/docs/sdk/models/operations/getlibrarydetailsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetLibraryDetailsRequest = { sectionId: "", - includeDetails: BoolInt.One, + includeDetails: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getlibrarydetailsresponsebody.md b/docs/sdk/models/operations/getlibrarydetailsresponsebody.md index a0dd441d..20d429cd 100644 --- a/docs/sdk/models/operations/getlibrarydetailsresponsebody.md +++ b/docs/sdk/models/operations/getlibrarydetailsresponsebody.md @@ -6,14 +6,20 @@ OK ```typescript import { GetLibraryDetailsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetLibraryDetailsResponseBody = { mediaContainer: { directory: [ { + title: "", + type: "", + addedAt: 871584, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -21,9 +27,12 @@ let value: GetLibraryDetailsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -34,6 +43,7 @@ let value: GetLibraryDetailsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -44,6 +54,7 @@ let value: GetLibraryDetailsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -51,16 +62,16 @@ let value: GetLibraryDetailsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -77,45 +88,71 @@ let value: GetLibraryDetailsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -128,9 +165,12 @@ let value: GetLibraryDetailsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -141,6 +181,7 @@ let value: GetLibraryDetailsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,9 +189,12 @@ let value: GetLibraryDetailsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getlibraryitemsrequest.md b/docs/sdk/models/operations/getlibraryitemsrequest.md index 6211fa61..75e55340 100644 --- a/docs/sdk/models/operations/getlibraryitemsrequest.md +++ b/docs/sdk/models/operations/getlibraryitemsrequest.md @@ -4,23 +4,30 @@ ```typescript import { GetLibraryItemsRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; -let value: GetLibraryItemsRequest = {}; +let value: GetLibraryItemsRequest = { + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, +}; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarymatchesrequest.md b/docs/sdk/models/operations/getlibrarymatchesrequest.md index 06fc253b..f4bde7ad 100644 --- a/docs/sdk/models/operations/getlibrarymatchesrequest.md +++ b/docs/sdk/models/operations/getlibrarymatchesrequest.md @@ -4,41 +4,42 @@ ```typescript import { GetLibraryMatchesRequest } from "@lukehagar/plexjs/sdk/models/operations"; -import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; +import { BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetLibraryMatchesRequest = { - includeFullMetadata: BoolInt.One, - includeAncestorMetadata: BoolInt.One, - includeAlternateMetadataSources: BoolInt.One, + type: MediaType.TvShow, + includeFullMetadata: BoolInt.True, + includeAncestorMetadata: BoolInt.True, + includeAlternateMetadataSources: BoolInt.True, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `type` | *number* | :heavy_minus_sign: | The metadata type to filter by | | -| `includeFullMetadata` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | -| `includeAncestorMetadata` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | -| `includeAlternateMetadataSources` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | -| `guid` | *string* | :heavy_minus_sign: | Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. | | -| `title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | -| `year` | *number* | :heavy_minus_sign: | Used for movies shows, and albums. Optional. | | -| `path` | *string* | :heavy_minus_sign: | Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. | | -| `grandparentTitle` | *string* | :heavy_minus_sign: | Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. | | -| `grandparentYear` | *number* | :heavy_minus_sign: | Used for episodes. The year of the show. | | -| `parentIndex` | *number* | :heavy_minus_sign: | Used for episodes and tracks. The season/album number. | | -| `index` | *number* | :heavy_minus_sign: | Used for episodes and tracks. The episode/tracks number in the season/album. | | -| `originallyAvailableAt` | *string* | :heavy_minus_sign: | Used for episodes. In the format `YYYY-MM-DD`. | | -| `parentTitle` | *string* | :heavy_minus_sign: | Used for albums and tracks. The artist name for albums or the album name for tracks. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | [shared.MediaType](../../../sdk/models/shared/mediatype.md) | :heavy_minus_sign: | The type of media to retrieve or filter by.

1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo

E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `includeFullMetadata` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `includeAncestorMetadata` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `includeAlternateMetadataSources` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `guid` | *string* | :heavy_minus_sign: | Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. | | +| `title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | +| `year` | *number* | :heavy_minus_sign: | Used for movies shows, and albums. Optional. | | +| `path` | *string* | :heavy_minus_sign: | Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. | | +| `grandparentYear` | *number* | :heavy_minus_sign: | Used for episodes. The year of the show. | | +| `parentIndex` | *number* | :heavy_minus_sign: | Used for episodes and tracks. The season/album number. | | +| `index` | *number* | :heavy_minus_sign: | Used for episodes and tracks. The episode/tracks number in the season/album. | | +| `originallyAvailableAt` | *string* | :heavy_minus_sign: | Used for episodes. In the format `YYYY-MM-DD`. | | +| `parentTitle` | *string* | :heavy_minus_sign: | Used for albums and tracks. The artist name for albums or the album name for tracks. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediapartrequest.md b/docs/sdk/models/operations/getmediapartrequest.md index 9d13ef92..bedf4ec9 100644 --- a/docs/sdk/models/operations/getmediapartrequest.md +++ b/docs/sdk/models/operations/getmediapartrequest.md @@ -10,7 +10,7 @@ let value: GetMediaPartRequest = { partId: 488589, changestamp: 145976, filename: "example.file", - download: BoolInt.One, + download: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getmetadatahubsrequest.md b/docs/sdk/models/operations/getmetadatahubsrequest.md index 2a10a843..506d436b 100644 --- a/docs/sdk/models/operations/getmetadatahubsrequest.md +++ b/docs/sdk/models/operations/getmetadatahubsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetMetadataHubsRequest = { metadataId: 795565, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getmetadataitemrequest.md b/docs/sdk/models/operations/getmetadataitemrequest.md index f099aa24..e1ed451b 100644 --- a/docs/sdk/models/operations/getmetadataitemrequest.md +++ b/docs/sdk/models/operations/getmetadataitemrequest.md @@ -8,14 +8,14 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetMetadataItemRequest = { ids: [], - asyncCheckFiles: BoolInt.One, - asyncRefreshLocalMediaAgent: BoolInt.One, - asyncRefreshAnalysis: BoolInt.One, - checkFiles: BoolInt.One, - skipRefresh: BoolInt.One, - checkFileAvailability: BoolInt.One, - asyncAugmentMetadata: BoolInt.One, - augmentCount: BoolInt.One, + asyncCheckFiles: BoolInt.True, + asyncRefreshLocalMediaAgent: BoolInt.True, + asyncRefreshAnalysis: BoolInt.True, + checkFiles: BoolInt.True, + skipRefresh: BoolInt.True, + checkFileAvailability: BoolInt.True, + asyncAugmentMetadata: BoolInt.True, + augmentCount: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getpersonmediacontainer.md b/docs/sdk/models/operations/getpersonmediacontainer.md index e16e93c7..97faa71a 100644 --- a/docs/sdk/models/operations/getpersonmediacontainer.md +++ b/docs/sdk/models/operations/getpersonmediacontainer.md @@ -14,6 +14,7 @@ let value: GetPersonMediaContainer = { directory: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getpersonresponsebody.md b/docs/sdk/models/operations/getpersonresponsebody.md index 9bf15637..51bb7783 100644 --- a/docs/sdk/models/operations/getpersonresponsebody.md +++ b/docs/sdk/models/operations/getpersonresponsebody.md @@ -12,6 +12,7 @@ let value: GetPersonResponseBody = { directory: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getplaylistgeneratoritemsguid.md b/docs/sdk/models/operations/getplaylistgeneratoritemsguid.md new file mode 100644 index 00000000..a616fc2d --- /dev/null +++ b/docs/sdk/models/operations/getplaylistgeneratoritemsguid.md @@ -0,0 +1,18 @@ +# GetPlaylistGeneratorItemsGuid + +## Example Usage + +```typescript +import { GetPlaylistGeneratorItemsGuid } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetPlaylistGeneratorItemsGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getplaylistgeneratoritemsmediacontainer.md b/docs/sdk/models/operations/getplaylistgeneratoritemsmediacontainer.md index c005dda6..d7f48983 100644 --- a/docs/sdk/models/operations/getplaylistgeneratoritemsmediacontainer.md +++ b/docs/sdk/models/operations/getplaylistgeneratoritemsmediacontainer.md @@ -9,12 +9,18 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetPlaylistGeneratorItemsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetPlaylistGeneratorItemsMediaContainer = { metadata: { + title: "", + type: "", + addedAt: 847588, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,45 +89,71 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -129,9 +166,12 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -142,6 +182,7 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,9 +190,12 @@ let value: GetPlaylistGeneratorItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getplaylistgeneratoritemsresponsebody.md b/docs/sdk/models/operations/getplaylistgeneratoritemsresponsebody.md index 5433d2bc..6c07418b 100644 --- a/docs/sdk/models/operations/getplaylistgeneratoritemsresponsebody.md +++ b/docs/sdk/models/operations/getplaylistgeneratoritemsresponsebody.md @@ -6,13 +6,19 @@ OK ```typescript import { GetPlaylistGeneratorItemsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetPlaylistGeneratorItemsResponseBody = { mediaContainer: { metadata: { + title: "", + type: "", + addedAt: 847588, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -20,9 +26,12 @@ let value: GetPlaylistGeneratorItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -33,6 +42,7 @@ let value: GetPlaylistGeneratorItemsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -43,6 +53,7 @@ let value: GetPlaylistGeneratorItemsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,16 +61,16 @@ let value: GetPlaylistGeneratorItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -76,45 +87,71 @@ let value: GetPlaylistGeneratorItemsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -127,9 +164,12 @@ let value: GetPlaylistGeneratorItemsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -140,6 +180,7 @@ let value: GetPlaylistGeneratorItemsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -147,9 +188,12 @@ let value: GetPlaylistGeneratorItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getplayqueuerequest.md b/docs/sdk/models/operations/getplayqueuerequest.md index 88ab6bbf..361afe83 100644 --- a/docs/sdk/models/operations/getplayqueuerequest.md +++ b/docs/sdk/models/operations/getplayqueuerequest.md @@ -8,9 +8,9 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetPlayQueueRequest = { playQueueId: 868034, - own: BoolInt.One, - includeBefore: BoolInt.One, - includeAfter: BoolInt.One, + own: BoolInt.True, + includeBefore: BoolInt.True, + includeAfter: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getpostplayhubsrequest.md b/docs/sdk/models/operations/getpostplayhubsrequest.md index 9602d51f..75cd16f7 100644 --- a/docs/sdk/models/operations/getpostplayhubsrequest.md +++ b/docs/sdk/models/operations/getpostplayhubsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetPostplayHubsRequest = { metadataId: 202749, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getpromotedhubsmediacontainer.md b/docs/sdk/models/operations/getpromotedhubsmediacontainer.md index d272b89b..de4f7494 100644 --- a/docs/sdk/models/operations/getpromotedhubsmediacontainer.md +++ b/docs/sdk/models/operations/getpromotedhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetPromotedHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetPromotedHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: GetPromotedHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetPromotedHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetPromotedHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetPromotedHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetPromotedHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: GetPromotedHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: GetPromotedHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: GetPromotedHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: GetPromotedHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getpromotedhubsresponsebody.md b/docs/sdk/models/operations/getpromotedhubsresponsebody.md index 6f87dddc..50c07d6f 100644 --- a/docs/sdk/models/operations/getpromotedhubsresponsebody.md +++ b/docs/sdk/models/operations/getpromotedhubsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetPromotedHubsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetPromotedHubsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetPromotedHubsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetPromotedHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetPromotedHubsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetPromotedHubsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetPromotedHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: GetPromotedHubsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: GetPromotedHubsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: GetPromotedHubsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: GetPromotedHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getrelatedhubsrequest.md b/docs/sdk/models/operations/getrelatedhubsrequest.md index a59f0574..f6e795ba 100644 --- a/docs/sdk/models/operations/getrelatedhubsrequest.md +++ b/docs/sdk/models/operations/getrelatedhubsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetRelatedHubsRequest = { metadataId: 344420, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getrelateditemsmediacontainer.md b/docs/sdk/models/operations/getrelateditemsmediacontainer.md index c9a4b75e..f59bed4a 100644 --- a/docs/sdk/models/operations/getrelateditemsmediacontainer.md +++ b/docs/sdk/models/operations/getrelateditemsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetRelatedItemsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetRelatedItemsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: GetRelatedItemsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetRelatedItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetRelatedItemsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetRelatedItemsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetRelatedItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: GetRelatedItemsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: GetRelatedItemsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: GetRelatedItemsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: GetRelatedItemsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getrelateditemsresponsebody.md b/docs/sdk/models/operations/getrelateditemsresponsebody.md index 97f29dc8..7e888f71 100644 --- a/docs/sdk/models/operations/getrelateditemsresponsebody.md +++ b/docs/sdk/models/operations/getrelateditemsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetRelatedItemsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetRelatedItemsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetRelatedItemsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetRelatedItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetRelatedItemsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetRelatedItemsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetRelatedItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: GetRelatedItemsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: GetRelatedItemsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: GetRelatedItemsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: GetRelatedItemsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getscheduledrecordingsmediacontainer.md b/docs/sdk/models/operations/getscheduledrecordingsmediacontainer.md index 50f8d42a..876f7d9d 100644 --- a/docs/sdk/models/operations/getscheduledrecordingsmediacontainer.md +++ b/docs/sdk/models/operations/getscheduledrecordingsmediacontainer.md @@ -9,14 +9,20 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetScheduledRecordingsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetScheduledRecordingsMediaContainer = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -24,9 +30,12 @@ let value: GetScheduledRecordingsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -37,6 +46,7 @@ let value: GetScheduledRecordingsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -47,6 +57,7 @@ let value: GetScheduledRecordingsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -54,16 +65,16 @@ let value: GetScheduledRecordingsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -80,45 +91,71 @@ let value: GetScheduledRecordingsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -131,9 +168,12 @@ let value: GetScheduledRecordingsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -144,6 +184,7 @@ let value: GetScheduledRecordingsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -151,9 +192,12 @@ let value: GetScheduledRecordingsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getscheduledrecordingsresponsebody.md b/docs/sdk/models/operations/getscheduledrecordingsresponsebody.md index 69eff619..163e3437 100644 --- a/docs/sdk/models/operations/getscheduledrecordingsresponsebody.md +++ b/docs/sdk/models/operations/getscheduledrecordingsresponsebody.md @@ -6,15 +6,21 @@ OK ```typescript import { GetScheduledRecordingsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetScheduledRecordingsResponseBody = { mediaContainer: { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: GetScheduledRecordingsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: GetScheduledRecordingsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: GetScheduledRecordingsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: GetScheduledRecordingsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,45 +89,71 @@ let value: GetScheduledRecordingsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -129,9 +166,12 @@ let value: GetScheduledRecordingsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -142,6 +182,7 @@ let value: GetScheduledRecordingsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,9 +190,12 @@ let value: GetScheduledRecordingsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getsectionhubsmediacontainer.md b/docs/sdk/models/operations/getsectionhubsmediacontainer.md index b6c694ad..0f6e3e41 100644 --- a/docs/sdk/models/operations/getsectionhubsmediacontainer.md +++ b/docs/sdk/models/operations/getsectionhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetSectionHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSectionHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: GetSectionHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetSectionHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetSectionHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetSectionHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetSectionHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: GetSectionHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: GetSectionHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: GetSectionHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: GetSectionHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getsectionhubsrequest.md b/docs/sdk/models/operations/getsectionhubsrequest.md index 71dc6212..02a20ef1 100644 --- a/docs/sdk/models/operations/getsectionhubsrequest.md +++ b/docs/sdk/models/operations/getsectionhubsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetSectionHubsRequest = { sectionId: 905423, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getsectionhubsresponsebody.md b/docs/sdk/models/operations/getsectionhubsresponsebody.md index 531e0235..d14f7664 100644 --- a/docs/sdk/models/operations/getsectionhubsresponsebody.md +++ b/docs/sdk/models/operations/getsectionhubsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetSectionHubsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSectionHubsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetSectionHubsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetSectionHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetSectionHubsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetSectionHubsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetSectionHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: GetSectionHubsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: GetSectionHubsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: GetSectionHubsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: GetSectionHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/getsectionimagerequest.md b/docs/sdk/models/operations/getsectionimagerequest.md index 3c0f867e..fbfb8be0 100644 --- a/docs/sdk/models/operations/getsectionimagerequest.md +++ b/docs/sdk/models/operations/getsectionimagerequest.md @@ -4,29 +4,35 @@ ```typescript import { GetSectionImageRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetSectionImageRequest = { sectionId: 16951, updatedAt: 311971, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | -| `updatedAt` | *number* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | -| `composite` | [shared.Composite](../../../sdk/models/shared/composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sectionId` | *number* | :heavy_check_mark: | Section identifier | | +| `updatedAt` | *number* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | +| `composite` | [shared.Composite](../../../sdk/models/shared/composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsectionsmediacontainer.md b/docs/sdk/models/operations/getsectionsmediacontainer.md index 42aeed00..9af5c020 100644 --- a/docs/sdk/models/operations/getsectionsmediacontainer.md +++ b/docs/sdk/models/operations/getsectionsmediacontainer.md @@ -9,8 +9,22 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetSectionsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaTypeString } from "@lukehagar/plexjs/sdk/models/shared"; -let value: GetSectionsMediaContainer = {}; +let value: GetSectionsMediaContainer = { + directory: [ + { + title: "Movies", + type: MediaTypeString.Movie, + contentChangedAt: 1556281940, + createdAt: 1556281940, + language: "", + uuid: "e69655a2-ef48-4aba-bb19-d3cc3401e7d6", + scannedAt: 1556281940, + updatedAt: 1556281940, + }, + ], +}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsectionsresponsebody.md b/docs/sdk/models/operations/getsectionsresponsebody.md index 3fa58f46..ca527be4 100644 --- a/docs/sdk/models/operations/getsectionsresponsebody.md +++ b/docs/sdk/models/operations/getsectionsresponsebody.md @@ -6,8 +6,24 @@ OK ```typescript import { GetSectionsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaTypeString } from "@lukehagar/plexjs/sdk/models/shared"; -let value: GetSectionsResponseBody = {}; +let value: GetSectionsResponseBody = { + mediaContainer: { + directory: [ + { + title: "Movies", + type: MediaTypeString.Movie, + contentChangedAt: 1556281940, + createdAt: 1556281940, + language: "", + uuid: "e69655a2-ef48-4aba-bb19-d3cc3401e7d6", + scannedAt: 1556281940, + updatedAt: 1556281940, + }, + ], + }, +}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserverresourceserror.md b/docs/sdk/models/operations/getserverresourceserror.md new file mode 100644 index 00000000..eb9b5c0e --- /dev/null +++ b/docs/sdk/models/operations/getserverresourceserror.md @@ -0,0 +1,21 @@ +# GetServerResourcesError + +## Example Usage + +```typescript +import { GetServerResourcesError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetServerResourcesError = { + code: 1001, + message: "User could not be authenticated", + status: 401, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *number* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getserverresourcesglobals.md b/docs/sdk/models/operations/getserverresourcesglobals.md new file mode 100644 index 00000000..c734a3a0 --- /dev/null +++ b/docs/sdk/models/operations/getserverresourcesglobals.md @@ -0,0 +1,18 @@ +# GetServerResourcesGlobals + +## Example Usage + +```typescript +import { GetServerResourcesGlobals } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetServerResourcesGlobals = { + clientIdentifier: "abc123", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getserverresourcesrequest.md b/docs/sdk/models/operations/getserverresourcesrequest.md new file mode 100644 index 00000000..59655449 --- /dev/null +++ b/docs/sdk/models/operations/getserverresourcesrequest.md @@ -0,0 +1,23 @@ +# GetServerResourcesRequest + +## Example Usage + +```typescript +import { GetServerResourcesRequest, IncludeHttps, IncludeIPv6, IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetServerResourcesRequest = { + includeHttps: IncludeHttps.True, + includeRelay: IncludeRelay.True, + includeIPv6: IncludeIPv6.True, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `includeHttps` | [operations.IncludeHttps](../../../sdk/models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 | +| `includeRelay` | [operations.IncludeRelay](../../../sdk/models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
| 1 | +| `includeIPv6` | [operations.IncludeIPv6](../../../sdk/models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getserverresourcesresponse.md b/docs/sdk/models/operations/getserverresourcesresponse.md new file mode 100644 index 00000000..e3e4fae0 --- /dev/null +++ b/docs/sdk/models/operations/getserverresourcesresponse.md @@ -0,0 +1,21 @@ +# GetServerResourcesResponse + +## Example Usage + +```typescript +import { GetServerResourcesResponse } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetServerResourcesResponse = { + contentType: "", + statusCode: 384468, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `plexDevices` | [shared.PlexDevice](../../../sdk/models/shared/plexdevice.md)[] | :heavy_minus_sign: | List of Plex Devices. This includes Plex hosted servers and clients | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsourceconnectioninformationrequest.md b/docs/sdk/models/operations/getsourceconnectioninformationrequest.md index 2ddae850..235b5683 100644 --- a/docs/sdk/models/operations/getsourceconnectioninformationrequest.md +++ b/docs/sdk/models/operations/getsourceconnectioninformationrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetSourceConnectionInformationRequest = { source: "", - refresh: BoolInt.One, + refresh: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getstreamrequest.md b/docs/sdk/models/operations/getstreamrequest.md index fd5bc4f2..d264d87f 100644 --- a/docs/sdk/models/operations/getstreamrequest.md +++ b/docs/sdk/models/operations/getstreamrequest.md @@ -9,7 +9,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetStreamRequest = { streamId: 471434, ext: "", - autoAdjustSubtitle: BoolInt.One, + autoAdjustSubtitle: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/getsubscriptionrequest.md b/docs/sdk/models/operations/getsubscriptionrequest.md index 016a67ec..02dfb739 100644 --- a/docs/sdk/models/operations/getsubscriptionrequest.md +++ b/docs/sdk/models/operations/getsubscriptionrequest.md @@ -8,8 +8,8 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: GetSubscriptionRequest = { subscriptionId: 533467, - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/gettagsrequest.md b/docs/sdk/models/operations/gettagsrequest.md index 08e8388e..2553a5fb 100644 --- a/docs/sdk/models/operations/gettagsrequest.md +++ b/docs/sdk/models/operations/gettagsrequest.md @@ -4,23 +4,26 @@ ```typescript import { GetTagsRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; -let value: GetTagsRequest = {}; +let value: GetTagsRequest = { + type: MediaType.TvShow, +}; ``` ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `type` | *number* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | [shared.MediaType](../../../sdk/models/shared/mediatype.md) | :heavy_minus_sign: | The type of media to retrieve or filter by.

1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo

E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/sdk/models/operations/butlertask.md b/docs/sdk/models/operations/gettasksbutlertask.md similarity index 96% rename from docs/sdk/models/operations/butlertask.md rename to docs/sdk/models/operations/gettasksbutlertask.md index 52784262..43b978bb 100644 --- a/docs/sdk/models/operations/butlertask.md +++ b/docs/sdk/models/operations/gettasksbutlertask.md @@ -1,11 +1,11 @@ -# ButlerTask +# GetTasksButlerTask ## Example Usage ```typescript -import { ButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetTasksButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; -let value: ButlerTask = {}; +let value: GetTasksButlerTask = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettemplatemediacontainer.md b/docs/sdk/models/operations/gettemplatemediacontainer.md index 62d221a9..c98fc135 100644 --- a/docs/sdk/models/operations/gettemplatemediacontainer.md +++ b/docs/sdk/models/operations/gettemplatemediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { GetTemplateMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetTemplateMediaContainer = { subscriptionTemplate: [ @@ -19,9 +20,14 @@ let value: GetTemplateMediaContainer = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: GetTemplateMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: GetTemplateMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: GetTemplateMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: GetTemplateMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,46 +96,73 @@ let value: GetTemplateMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: + "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -137,9 +175,12 @@ let value: GetTemplateMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,6 +191,7 @@ let value: GetTemplateMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -157,9 +199,12 @@ let value: GetTemplateMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/gettemplateresponsebody.md b/docs/sdk/models/operations/gettemplateresponsebody.md index 19d2b130..7c096160 100644 --- a/docs/sdk/models/operations/gettemplateresponsebody.md +++ b/docs/sdk/models/operations/gettemplateresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { GetTemplateResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetTemplateResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: GetTemplateResponseBody = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: GetTemplateResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: GetTemplateResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: GetTemplateResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: GetTemplateResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,73 @@ let value: GetTemplateResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: + "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +173,12 @@ let value: GetTemplateResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +189,7 @@ let value: GetTemplateResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +197,12 @@ let value: GetTemplateResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/gettokendetailsbadrequesterror.md b/docs/sdk/models/operations/gettokendetailsbadrequesterror.md new file mode 100644 index 00000000..e6eceafb --- /dev/null +++ b/docs/sdk/models/operations/gettokendetailsbadrequesterror.md @@ -0,0 +1,21 @@ +# GetTokenDetailsBadRequestError + +## Example Usage + +```typescript +import { GetTokenDetailsBadRequestError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTokenDetailsBadRequestError = { + code: 1000, + message: "X-Plex-Client-Identifier is missing", + status: 400, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1000 | +| `message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `status` | *number* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettokendetailsglobals.md b/docs/sdk/models/operations/gettokendetailsglobals.md new file mode 100644 index 00000000..dad9fda7 --- /dev/null +++ b/docs/sdk/models/operations/gettokendetailsglobals.md @@ -0,0 +1,36 @@ +# GetTokenDetailsGlobals + +## Example Usage + +```typescript +import { GetTokenDetailsGlobals } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTokenDetailsGlobals = { + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettokendetailsrequest.md b/docs/sdk/models/operations/gettokendetailsrequest.md new file mode 100644 index 00000000..97b20462 --- /dev/null +++ b/docs/sdk/models/operations/gettokendetailsrequest.md @@ -0,0 +1,25 @@ +# GetTokenDetailsRequest + +## Example Usage + +```typescript +import { GetTokenDetailsRequest } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTokenDetailsRequest = {}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettokendetailsresponse.md b/docs/sdk/models/operations/gettokendetailsresponse.md new file mode 100644 index 00000000..2eb2f582 --- /dev/null +++ b/docs/sdk/models/operations/gettokendetailsresponse.md @@ -0,0 +1,21 @@ +# GetTokenDetailsResponse + +## Example Usage + +```typescript +import { GetTokenDetailsResponse } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTokenDetailsResponse = { + contentType: "", + statusCode: 77667, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `userPlexAccount` | [shared.UserPlexAccount](../../../sdk/models/shared/userplexaccount.md) | :heavy_minus_sign: | Logged in user details | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettokendetailsunauthorizederror.md b/docs/sdk/models/operations/gettokendetailsunauthorizederror.md new file mode 100644 index 00000000..7edfd987 --- /dev/null +++ b/docs/sdk/models/operations/gettokendetailsunauthorizederror.md @@ -0,0 +1,21 @@ +# GetTokenDetailsUnauthorizedError + +## Example Usage + +```typescript +import { GetTokenDetailsUnauthorizedError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTokenDetailsUnauthorizedError = { + code: 1001, + message: "User could not be authenticated", + status: 401, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *number* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersbadrequesterror.md b/docs/sdk/models/operations/getusersbadrequesterror.md new file mode 100644 index 00000000..e690e5cc --- /dev/null +++ b/docs/sdk/models/operations/getusersbadrequesterror.md @@ -0,0 +1,21 @@ +# GetUsersBadRequestError + +## Example Usage + +```typescript +import { GetUsersBadRequestError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersBadRequestError = { + code: 1000, + message: "X-Plex-Client-Identifier is missing", + status: 400, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1000 | +| `message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `status` | *number* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersglobals.md b/docs/sdk/models/operations/getusersglobals.md new file mode 100644 index 00000000..cc6c15d6 --- /dev/null +++ b/docs/sdk/models/operations/getusersglobals.md @@ -0,0 +1,36 @@ +# GetUsersGlobals + +## Example Usage + +```typescript +import { GetUsersGlobals } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersGlobals = { + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersmediacontainer.md b/docs/sdk/models/operations/getusersmediacontainer.md new file mode 100644 index 00000000..15653bb1 --- /dev/null +++ b/docs/sdk/models/operations/getusersmediacontainer.md @@ -0,0 +1,29 @@ +# GetUsersMediaContainer + +Container holding user and server details. + +## Example Usage + +```typescript +import { GetUsersMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersMediaContainer = { + friendlyName: "myPlex", + identifier: "com.plexapp.plugins.myplex", + machineIdentifier: "3dff4c4da3b1229a649aa574a9e2b419a684a20e", + totalSize: 30, + size: 30, + user: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `friendlyName` | *string* | :heavy_check_mark: | The friendly name of the Plex instance. | myPlex | +| `identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.myplex | +| `machineIdentifier` | *string* | :heavy_check_mark: | Unique Machine identifier of the Plex server. | 3dff4c4da3b1229a649aa574a9e2b419a684a20e | +| `totalSize` | *number* | :heavy_check_mark: | Total number of users. | 30 | +| `size` | *number* | :heavy_check_mark: | Number of users in the current response. | 30 | +| `user` | [operations.User](../../../sdk/models/operations/user.md)[] | :heavy_check_mark: | List of users with access to the Plex server. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersrequest.md b/docs/sdk/models/operations/getusersrequest.md new file mode 100644 index 00000000..2280937c --- /dev/null +++ b/docs/sdk/models/operations/getusersrequest.md @@ -0,0 +1,25 @@ +# GetUsersRequest + +## Example Usage + +```typescript +import { GetUsersRequest } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersRequest = {}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersresponse.md b/docs/sdk/models/operations/getusersresponse.md new file mode 100644 index 00000000..26800117 --- /dev/null +++ b/docs/sdk/models/operations/getusersresponse.md @@ -0,0 +1,21 @@ +# GetUsersResponse + +## Example Usage + +```typescript +import { GetUsersResponse } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersResponse = { + contentType: "", + statusCode: 793403, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [operations.GetUsersResponseBody](../../../sdk/models/operations/getusersresponsebody.md) | :heavy_minus_sign: | Successful response with media container data in JSON | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersresponsebody.md b/docs/sdk/models/operations/getusersresponsebody.md new file mode 100644 index 00000000..9204b784 --- /dev/null +++ b/docs/sdk/models/operations/getusersresponsebody.md @@ -0,0 +1,74 @@ +# GetUsersResponseBody + +Successful response with media container data in JSON + +## Example Usage + +```typescript +import { + AllLibraries, + AllowCameraUpload, + AllowChannels, + AllowSubtitleAdmin, + AllowSync, + AllowTuners, + GetUsersResponseBody, + Home, + Owned, + Pending, + Protected, + Restricted, +} from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersResponseBody = { + mediaContainer: { + friendlyName: "myPlex", + identifier: "com.plexapp.plugins.myplex", + machineIdentifier: "3dff4c4da3b1229a649aa574a9e2b419a684a20e", + totalSize: 30, + size: 30, + user: [ + { + id: 22526914, + title: "Plex User", + username: "zgfuc7krcqfimrmb9lsl5j", + email: "zgfuc7krcqfimrmb9lsl5j@protonmail.com", + recommendationsPlaylistId: "", + thumb: "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", + protected: Protected.Enable, + home: Home.Enable, + allowTuners: AllowTuners.Enable, + allowSync: AllowSync.Enable, + allowCameraUpload: AllowCameraUpload.Enable, + allowChannels: AllowChannels.Enable, + allowSubtitleAdmin: AllowSubtitleAdmin.Enable, + filterAll: "", + filterMovies: "", + filterMusic: "", + filterPhotos: "", + filterTelevision: "", + restricted: Restricted.Enable, + server: [ + { + id: 907759180, + serverId: 9999999, + machineIdentifier: "fbb8aa6be6e0c997c6268bc2b4431c8807f70a3", + name: "ConnectedUserFlix", + lastSeenAt: 1556281940, + numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, + }, + ], + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `mediaContainer` | [operations.GetUsersMediaContainer](../../../sdk/models/operations/getusersmediacontainer.md) | :heavy_minus_sign: | Container holding user and server details. | \ No newline at end of file diff --git a/docs/sdk/models/operations/getusersunauthorizederror.md b/docs/sdk/models/operations/getusersunauthorizederror.md new file mode 100644 index 00000000..00457075 --- /dev/null +++ b/docs/sdk/models/operations/getusersunauthorizederror.md @@ -0,0 +1,21 @@ +# GetUsersUnauthorizedError + +## Example Usage + +```typescript +import { GetUsersUnauthorizedError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetUsersUnauthorizedError = { + code: 1001, + message: "User could not be authenticated", + status: 401, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *number* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/sdk/models/operations/home.md b/docs/sdk/models/operations/home.md new file mode 100644 index 00000000..2e1944dd --- /dev/null +++ b/docs/sdk/models/operations/home.md @@ -0,0 +1,18 @@ +# Home + +Indicates if the user is part of a home group. + +## Example Usage + +```typescript +import { Home } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Home = Home.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/includehttps.md b/docs/sdk/models/operations/includehttps.md new file mode 100644 index 00000000..daee3a0b --- /dev/null +++ b/docs/sdk/models/operations/includehttps.md @@ -0,0 +1,18 @@ +# IncludeHttps + +Include Https entries in the results + +## Example Usage + +```typescript +import { IncludeHttps } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: IncludeHttps = IncludeHttps.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/includeipv6.md b/docs/sdk/models/operations/includeipv6.md new file mode 100644 index 00000000..d6ebeab2 --- /dev/null +++ b/docs/sdk/models/operations/includeipv6.md @@ -0,0 +1,18 @@ +# IncludeIPv6 + +Include IPv6 entries in the results + +## Example Usage + +```typescript +import { IncludeIPv6 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: IncludeIPv6 = IncludeIPv6.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/includerelay.md b/docs/sdk/models/operations/includerelay.md new file mode 100644 index 00000000..7970c646 --- /dev/null +++ b/docs/sdk/models/operations/includerelay.md @@ -0,0 +1,20 @@ +# IncludeRelay + +Include Relay addresses in the results +E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 + + +## Example Usage + +```typescript +import { IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: IncludeRelay = IncludeRelay.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/ingesttransientitemrequest.md b/docs/sdk/models/operations/ingesttransientitemrequest.md index 190c29e3..e15b07a3 100644 --- a/docs/sdk/models/operations/ingesttransientitemrequest.md +++ b/docs/sdk/models/operations/ingesttransientitemrequest.md @@ -9,8 +9,8 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: IngestTransientItemRequest = { url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", virtualFilePath: "/Avatar.mkv", - computeHashes: BoolInt.One, - ingestNonMatches: BoolInt.One, + computeHashes: BoolInt.True, + ingestNonMatches: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/internalpaymentmethod.md b/docs/sdk/models/operations/internalpaymentmethod.md new file mode 100644 index 00000000..d01a125c --- /dev/null +++ b/docs/sdk/models/operations/internalpaymentmethod.md @@ -0,0 +1,14 @@ +# InternalPaymentMethod + +## Example Usage + +```typescript +import { InternalPaymentMethod } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: InternalPaymentMethod = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/sdk/models/operations/listcontentrequest.md b/docs/sdk/models/operations/listcontentrequest.md index b5b9a777..0989496e 100644 --- a/docs/sdk/models/operations/listcontentrequest.md +++ b/docs/sdk/models/operations/listcontentrequest.md @@ -4,26 +4,38 @@ ```typescript import { ListContentRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: ListContentRequest = { + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + includeMeta: BoolInt.True, + includeGuids: BoolInt.True, sectionId: "", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | -| `sectionId` | *string* | :heavy_check_mark: | The id of the section | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `xPlexContainerStart` | *number* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | +| `xPlexContainerSize` | *number* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | +| `mediaQuery` | [shared.MediaQuery](../../../sdk/models/shared/mediaquery.md) | :heavy_minus_sign: | A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.

The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter

Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10

See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
| {
"type": 4,
"sourceType": 2,
"sort": "duration:desc,index"
} | +| `includeMeta` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `includeGuids` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | +| `sectionId` | *string* | :heavy_check_mark: | The id of the section | | \ No newline at end of file diff --git a/docs/sdk/models/operations/listmatchesrequest.md b/docs/sdk/models/operations/listmatchesrequest.md index e92fe4e6..331ec3b1 100644 --- a/docs/sdk/models/operations/listmatchesrequest.md +++ b/docs/sdk/models/operations/listmatchesrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ListMatchesRequest = { ids: "", - manual: BoolInt.One, + manual: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/listsessionsguid.md b/docs/sdk/models/operations/listsessionsguid.md new file mode 100644 index 00000000..bab1eb7c --- /dev/null +++ b/docs/sdk/models/operations/listsessionsguid.md @@ -0,0 +1,18 @@ +# ListSessionsGuid + +## Example Usage + +```typescript +import { ListSessionsGuid } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: ListSessionsGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/listsessionsmediacontainer.md b/docs/sdk/models/operations/listsessionsmediacontainer.md index bcde3ad8..caf29081 100644 --- a/docs/sdk/models/operations/listsessionsmediacontainer.md +++ b/docs/sdk/models/operations/listsessionsmediacontainer.md @@ -9,13 +9,19 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { ListSessionsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: ListSessionsMediaContainer = { metadata: [ { + title: "", + type: "", + addedAt: 135107, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: ListSessionsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: ListSessionsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: ListSessionsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: ListSessionsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: ListSessionsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: ListSessionsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: ListSessionsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: ListSessionsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/listsessionsmetadatum.md b/docs/sdk/models/operations/listsessionsmetadatum.md index c5323e58..ac90af91 100644 --- a/docs/sdk/models/operations/listsessionsmetadatum.md +++ b/docs/sdk/models/operations/listsessionsmetadatum.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { ListSessionsMetadatum } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: ListSessionsMetadatum = { + title: "", + type: "", + addedAt: 167829, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: ListSessionsMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: ListSessionsMetadatum = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: ListSessionsMetadatum = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: ListSessionsMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: ListSessionsMetadatum = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: ListSessionsMetadatum = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: ListSessionsMetadatum = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: ListSessionsMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -165,76 +209,80 @@ let value: ListSessionsMetadatum = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `player` | [shared.Player](../../../sdk/models/shared/player.md) | :heavy_minus_sign: | Information about the player being used for playback | -| `session` | [shared.Session](../../../sdk/models/shared/session.md) | :heavy_minus_sign: | Information about the playback session | -| `user` | [shared.User](../../../sdk/models/shared/user.md) | :heavy_minus_sign: | The user playing the content | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `player` | [shared.Player](../../../sdk/models/shared/player.md) | :heavy_minus_sign: | Information about the player being used for playback | | +| `session` | [shared.Session](../../../sdk/models/shared/session.md) | :heavy_minus_sign: | Information about the playback session | | +| `user` | [shared.User](../../../sdk/models/shared/user.md) | :heavy_minus_sign: | The user playing the content | | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [operations.ListSessionsGuid](../../../sdk/models/operations/listsessionsguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/listsessionsresponsebody.md b/docs/sdk/models/operations/listsessionsresponsebody.md index 315d09a8..a77c8623 100644 --- a/docs/sdk/models/operations/listsessionsresponsebody.md +++ b/docs/sdk/models/operations/listsessionsresponsebody.md @@ -6,14 +6,20 @@ OK ```typescript import { ListSessionsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: ListSessionsResponseBody = { mediaContainer: { metadata: [ { + title: "", + type: "", + addedAt: 135107, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -21,9 +27,12 @@ let value: ListSessionsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -34,6 +43,7 @@ let value: ListSessionsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -44,6 +54,7 @@ let value: ListSessionsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -51,16 +62,16 @@ let value: ListSessionsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -77,45 +88,71 @@ let value: ListSessionsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -128,9 +165,12 @@ let value: ListSessionsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -141,6 +181,7 @@ let value: ListSessionsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,9 +189,12 @@ let value: ListSessionsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/mailingliststatus.md b/docs/sdk/models/operations/mailingliststatus.md new file mode 100644 index 00000000..18334550 --- /dev/null +++ b/docs/sdk/models/operations/mailingliststatus.md @@ -0,0 +1,19 @@ +# MailingListStatus + +Your current mailing list status + +## Example Usage + +```typescript +import { MailingListStatus } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: MailingListStatus = MailingListStatus.Active; +``` + +## Values + +| Name | Value | +| -------------- | -------------- | +| `Active` | active | +| `Unsubscribed` | unsubscribed | +| `Removed` | removed | \ No newline at end of file diff --git a/docs/sdk/models/operations/makedecisionrequest.md b/docs/sdk/models/operations/makedecisionrequest.md index bc29fc06..cf7480b1 100644 --- a/docs/sdk/models/operations/makedecisionrequest.md +++ b/docs/sdk/models/operations/makedecisionrequest.md @@ -16,13 +16,13 @@ let value: MakeDecisionRequest = { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: MakeDecisionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/docs/sdk/models/operations/mediasubscription.md b/docs/sdk/models/operations/mediasubscription.md index 8f1a36a7..265cd1d9 100644 --- a/docs/sdk/models/operations/mediasubscription.md +++ b/docs/sdk/models/operations/mediasubscription.md @@ -7,15 +7,21 @@ A media subscription contains a representation of metadata desired to be recorde ```typescript import { MediaSubscription } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaSubscription = { title: "This Episode", mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MediaSubscription = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MediaSubscription = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaSubscription = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaSubscription = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaSubscription = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/metadata.md b/docs/sdk/models/operations/metadata.md index 60fffd31..e2374b56 100644 --- a/docs/sdk/models/operations/metadata.md +++ b/docs/sdk/models/operations/metadata.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { Metadata } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: Metadata = { + title: "", + type: "", + addedAt: 577331, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: Metadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: Metadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: Metadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: Metadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: Metadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -165,75 +209,79 @@ let value: Metadata = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `processingState` | [operations.ProcessingState](../../../sdk/models/operations/processingstate.md) | :heavy_minus_sign: | The state of processing if this generator is part of an optimizer playlist | -| `processingStateContext` | [operations.ProcessingStateContext](../../../sdk/models/operations/processingstatecontext.md) | :heavy_minus_sign: | The error which could have occurred (or `good`) | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [operations.GetPlaylistGeneratorItemsGuid](../../../sdk/models/operations/getplaylistgeneratoritemsguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `processingState` | [operations.ProcessingState](../../../sdk/models/operations/processingstate.md) | :heavy_minus_sign: | The state of processing if this generator is part of an optimizer playlist | | +| `processingStateContext` | [operations.ProcessingStateContext](../../../sdk/models/operations/processingstatecontext.md) | :heavy_minus_sign: | The error which could have occurred (or `good`) | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/modifydevicerequest.md b/docs/sdk/models/operations/modifydevicerequest.md index cf117804..fa732f9b 100644 --- a/docs/sdk/models/operations/modifydevicerequest.md +++ b/docs/sdk/models/operations/modifydevicerequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ModifyDeviceRequest = { deviceId: 809966, - enabled: BoolInt.One, + enabled: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/modifyplaylistgeneratoritem.md b/docs/sdk/models/operations/modifyplaylistgeneratoritem.md index 4c95baf9..9e342ee2 100644 --- a/docs/sdk/models/operations/modifyplaylistgeneratoritem.md +++ b/docs/sdk/models/operations/modifyplaylistgeneratoritem.md @@ -9,7 +9,6 @@ Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Ite ```typescript import { ModifyPlaylistGeneratorItem, ModifyPlaylistGeneratorScope } from "@lukehagar/plexjs/sdk/models/operations"; -import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ModifyPlaylistGeneratorItem = { location: { @@ -20,7 +19,6 @@ let value: ModifyPlaylistGeneratorItem = { policy: { value: NaN, scope: ModifyPlaylistGeneratorScope.All, - unwatched: BoolInt.Zero, }, target: "", targetTagID: 1, diff --git a/docs/sdk/models/operations/modifyplaylistgeneratorpolicy.md b/docs/sdk/models/operations/modifyplaylistgeneratorpolicy.md index 8ea8a507..37945fe5 100644 --- a/docs/sdk/models/operations/modifyplaylistgeneratorpolicy.md +++ b/docs/sdk/models/operations/modifyplaylistgeneratorpolicy.md @@ -7,7 +7,7 @@ import { ModifyPlaylistGeneratorPolicy } from "@lukehagar/plexjs/sdk/models/oper import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ModifyPlaylistGeneratorPolicy = { - unwatched: BoolInt.One, + unwatched: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/modifyplaylistgeneratorrequest.md b/docs/sdk/models/operations/modifyplaylistgeneratorrequest.md index 82e52a56..3ebebeda 100644 --- a/docs/sdk/models/operations/modifyplaylistgeneratorrequest.md +++ b/docs/sdk/models/operations/modifyplaylistgeneratorrequest.md @@ -4,7 +4,6 @@ ```typescript import { ModifyPlaylistGeneratorRequest, ModifyPlaylistGeneratorScope } from "@lukehagar/plexjs/sdk/models/operations"; -import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: ModifyPlaylistGeneratorRequest = { playlistId: 314072, @@ -18,7 +17,6 @@ let value: ModifyPlaylistGeneratorRequest = { policy: { value: NaN, scope: ModifyPlaylistGeneratorScope.All, - unwatched: BoolInt.Zero, }, target: "", targetTagID: 1, diff --git a/docs/sdk/models/operations/optimizedatabaserequest.md b/docs/sdk/models/operations/optimizedatabaserequest.md index 59d391c3..89568254 100644 --- a/docs/sdk/models/operations/optimizedatabaserequest.md +++ b/docs/sdk/models/operations/optimizedatabaserequest.md @@ -7,7 +7,7 @@ import { OptimizeDatabaseRequest } from "@lukehagar/plexjs/sdk/models/operations import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: OptimizeDatabaseRequest = { - async: BoolInt.One, + async: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/owned.md b/docs/sdk/models/operations/owned.md new file mode 100644 index 00000000..752c1432 --- /dev/null +++ b/docs/sdk/models/operations/owned.md @@ -0,0 +1,18 @@ +# Owned + +Indicates if the user owns the server. + +## Example Usage + +```typescript +import { Owned } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Owned = Owned.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/pastsubscription.md b/docs/sdk/models/operations/pastsubscription.md new file mode 100644 index 00000000..a6648cb1 --- /dev/null +++ b/docs/sdk/models/operations/pastsubscription.md @@ -0,0 +1,41 @@ +# PastSubscription + +## Example Usage + +```typescript +import { PastSubscription, PostUsersSignInDataState } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PastSubscription = { + id: "", + mode: "", + renewsAt: 1556281940, + endsAt: 1556281940, + type: "plexpass", + transfer: "", + state: PostUsersSignInDataState.Ended, + billing: { + internalPaymentMethod: {}, + paymentMethodId: 793427, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | N/A | | +| `mode` | *string* | :heavy_check_mark: | N/A | | +| `renewsAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `endsAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `canceled` | *boolean* | :heavy_minus_sign: | N/A | false | +| `gracePeriod` | *boolean* | :heavy_minus_sign: | N/A | false | +| `onHold` | *boolean* | :heavy_minus_sign: | N/A | false | +| `canReactivate` | *boolean* | :heavy_minus_sign: | N/A | false | +| `canUpgrade` | *boolean* | :heavy_minus_sign: | N/A | false | +| `canDowngrade` | *boolean* | :heavy_minus_sign: | N/A | false | +| `canConvert` | *boolean* | :heavy_minus_sign: | N/A | false | +| `type` | *string* | :heavy_check_mark: | N/A | plexpass | +| `transfer` | *string* | :heavy_check_mark: | N/A | | +| `state` | [operations.PostUsersSignInDataState](../../../sdk/models/operations/postuserssignindatastate.md) | :heavy_check_mark: | N/A | ended | +| `billing` | [operations.Billing](../../../sdk/models/operations/billing.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/pending.md b/docs/sdk/models/operations/pending.md new file mode 100644 index 00000000..df06536b --- /dev/null +++ b/docs/sdk/models/operations/pending.md @@ -0,0 +1,18 @@ +# Pending + +Indicates if the server is pending approval. + +## Example Usage + +```typescript +import { Pending } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Pending = Pending.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindatabadrequesterror.md b/docs/sdk/models/operations/postuserssignindatabadrequesterror.md new file mode 100644 index 00000000..c4bf735b --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindatabadrequesterror.md @@ -0,0 +1,21 @@ +# PostUsersSignInDataBadRequestError + +## Example Usage + +```typescript +import { PostUsersSignInDataBadRequestError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataBadRequestError = { + code: 1000, + message: "X-Plex-Client-Identifier is missing", + status: 400, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1000 | +| `message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `status` | *number* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindataglobals.md b/docs/sdk/models/operations/postuserssignindataglobals.md new file mode 100644 index 00000000..9b033650 --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindataglobals.md @@ -0,0 +1,36 @@ +# PostUsersSignInDataGlobals + +## Example Usage + +```typescript +import { PostUsersSignInDataGlobals } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataGlobals = { + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindatarequest.md b/docs/sdk/models/operations/postuserssignindatarequest.md new file mode 100644 index 00000000..60f22b97 --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindatarequest.md @@ -0,0 +1,26 @@ +# PostUsersSignInDataRequest + +## Example Usage + +```typescript +import { PostUsersSignInDataRequest } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataRequest = {}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `requestBody` | [operations.PostUsersSignInDataRequestBody](../../../sdk/models/operations/postuserssignindatarequestbody.md) | :heavy_minus_sign: | Login credentials | | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindatarequestbody.md b/docs/sdk/models/operations/postuserssignindatarequestbody.md new file mode 100644 index 00000000..2cdb434b --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindatarequestbody.md @@ -0,0 +1,24 @@ +# PostUsersSignInDataRequestBody + +Login credentials + +## Example Usage + +```typescript +import { PostUsersSignInDataRequestBody } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataRequestBody = { + login: "username@email.com", + password: "password123", + verificationCode: "123456", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `login` | *string* | :heavy_check_mark: | N/A | username@email.com | +| `password` | *string* | :heavy_check_mark: | N/A | password123 | +| `rememberMe` | *boolean* | :heavy_minus_sign: | N/A | | +| `verificationCode` | *string* | :heavy_minus_sign: | N/A | 123456 | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindataresponse.md b/docs/sdk/models/operations/postuserssignindataresponse.md new file mode 100644 index 00000000..b3b310fb --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindataresponse.md @@ -0,0 +1,21 @@ +# PostUsersSignInDataResponse + +## Example Usage + +```typescript +import { PostUsersSignInDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataResponse = { + contentType: "", + statusCode: 377161, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `userPlexAccount` | [operations.UserPlexAccount](../../../sdk/models/operations/userplexaccount.md) | :heavy_minus_sign: | Returns the user account data with a valid auth token | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindatastate.md b/docs/sdk/models/operations/postuserssignindatastate.md new file mode 100644 index 00000000..33aed12a --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindatastate.md @@ -0,0 +1,18 @@ +# PostUsersSignInDataState + +## Example Usage + +```typescript +import { PostUsersSignInDataState } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataState = PostUsersSignInDataState.Ended; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Ended` | ended | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/postuserssignindataunauthorizederror.md b/docs/sdk/models/operations/postuserssignindataunauthorizederror.md new file mode 100644 index 00000000..6dc5eab0 --- /dev/null +++ b/docs/sdk/models/operations/postuserssignindataunauthorizederror.md @@ -0,0 +1,21 @@ +# PostUsersSignInDataUnauthorizedError + +## Example Usage + +```typescript +import { PostUsersSignInDataUnauthorizedError } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: PostUsersSignInDataUnauthorizedError = { + code: 1001, + message: "User could not be authenticated", + status: 401, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *number* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/sdk/models/operations/protected.md b/docs/sdk/models/operations/protected.md new file mode 100644 index 00000000..db456484 --- /dev/null +++ b/docs/sdk/models/operations/protected.md @@ -0,0 +1,18 @@ +# Protected + +Indicates whether the account is protected. + +## Example Usage + +```typescript +import { Protected } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Protected = Protected.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/refreshitemsmetadatarequest.md b/docs/sdk/models/operations/refreshitemsmetadatarequest.md index 4c7711f4..28abc3a7 100644 --- a/docs/sdk/models/operations/refreshitemsmetadatarequest.md +++ b/docs/sdk/models/operations/refreshitemsmetadatarequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: RefreshItemsMetadataRequest = { ids: "", - markUpdated: BoolInt.One, + markUpdated: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/refreshsectionrequest.md b/docs/sdk/models/operations/refreshsectionrequest.md index 4f2b3f25..0377560e 100644 --- a/docs/sdk/models/operations/refreshsectionrequest.md +++ b/docs/sdk/models/operations/refreshsectionrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: RefreshSectionRequest = { sectionId: 201663, - force: BoolInt.One, + force: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/reportrequest.md b/docs/sdk/models/operations/reportrequest.md index b289fa2f..b67777a3 100644 --- a/docs/sdk/models/operations/reportrequest.md +++ b/docs/sdk/models/operations/reportrequest.md @@ -13,9 +13,9 @@ let value: ReportRequest = { playQueueItemID: "123", time: 0, duration: 10000, - continuing: BoolInt.One, + continuing: BoolInt.True, updated: 14200000, - offline: BoolInt.One, + offline: BoolInt.True, timeToFirstFrame: 1000, timeStalled: 1000, bandwidth: 100, diff --git a/docs/sdk/models/operations/restricted.md b/docs/sdk/models/operations/restricted.md new file mode 100644 index 00000000..f149001b --- /dev/null +++ b/docs/sdk/models/operations/restricted.md @@ -0,0 +1,18 @@ +# Restricted + +Indicates if the user has restricted access. + +## Example Usage + +```typescript +import { Restricted } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Restricted = Restricted.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/searchhubsmediacontainer.md b/docs/sdk/models/operations/searchhubsmediacontainer.md index 4ce58698..94c778bf 100644 --- a/docs/sdk/models/operations/searchhubsmediacontainer.md +++ b/docs/sdk/models/operations/searchhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { SearchHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SearchHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: SearchHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: SearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: SearchHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: SearchHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: SearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: SearchHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: SearchHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: SearchHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: SearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/searchhubsresponsebody.md b/docs/sdk/models/operations/searchhubsresponsebody.md index 6d06dd32..880467ca 100644 --- a/docs/sdk/models/operations/searchhubsresponsebody.md +++ b/docs/sdk/models/operations/searchhubsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { SearchHubsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SearchHubsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: SearchHubsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: SearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: SearchHubsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: SearchHubsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: SearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: SearchHubsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: SearchHubsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: SearchHubsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: SearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/server.md b/docs/sdk/models/operations/server.md new file mode 100644 index 00000000..b463b101 --- /dev/null +++ b/docs/sdk/models/operations/server.md @@ -0,0 +1,33 @@ +# Server + +## Example Usage + +```typescript +import { AllLibraries, Owned, Pending, Server } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Server = { + id: 907759180, + serverId: 9999999, + machineIdentifier: "fbb8aa6be6e0c997c6268bc2b4431c8807f70a3", + name: "ConnectedUserFlix", + lastSeenAt: 1556281940, + numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique ID of the server of the connected user | 907759180 | +| `serverId` | *number* | :heavy_check_mark: | ID of the actual Plex server. | 9999999 | +| `machineIdentifier` | *string* | :heavy_check_mark: | Machine identifier of the Plex server. | fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 | +| `name` | *string* | :heavy_check_mark: | Name of the Plex server of the connected user. | ConnectedUserFlix | +| `lastSeenAt` | *number* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | +| `numLibraries` | *number* | :heavy_check_mark: | Number of libraries in the server this user has access to. | 16 | +| `allLibraries` | [operations.AllLibraries](../../../sdk/models/operations/alllibraries.md) | :heavy_minus_sign: | N/A | 1 | +| `owned` | [operations.Owned](../../../sdk/models/operations/owned.md) | :heavy_minus_sign: | N/A | 1 | +| `pending` | [operations.Pending](../../../sdk/models/operations/pending.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/service.md b/docs/sdk/models/operations/service.md new file mode 100644 index 00000000..38a06c65 --- /dev/null +++ b/docs/sdk/models/operations/service.md @@ -0,0 +1,25 @@ +# Service + +## Example Usage + +```typescript +import { Service, ServiceStatus } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Service = { + identifier: "metadata-dev", + endpoint: "https://epg.provider.plex.tv", + token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", + secret: "", + status: ServiceStatus.Online, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `identifier` | *string* | :heavy_check_mark: | N/A | metadata-dev | +| `endpoint` | *string* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | +| `token` | *string* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | +| `secret` | *string* | :heavy_check_mark: | N/A | | +| `status` | [operations.ServiceStatus](../../../sdk/models/operations/servicestatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/sdk/models/operations/servicestatus.md b/docs/sdk/models/operations/servicestatus.md new file mode 100644 index 00000000..85ca1e87 --- /dev/null +++ b/docs/sdk/models/operations/servicestatus.md @@ -0,0 +1,19 @@ +# ServiceStatus + +## Example Usage + +```typescript +import { ServiceStatus } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: ServiceStatus = ServiceStatus.Online; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Online` | online | +| `Offline` | offline | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/setstreamselectionrequest.md b/docs/sdk/models/operations/setstreamselectionrequest.md index aed24b18..090142c9 100644 --- a/docs/sdk/models/operations/setstreamselectionrequest.md +++ b/docs/sdk/models/operations/setstreamselectionrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: SetStreamSelectionRequest = { partId: 960612, - allParts: BoolInt.One, + allParts: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/startbifgenerationrequest.md b/docs/sdk/models/operations/startbifgenerationrequest.md index f656d9c8..35cc981f 100644 --- a/docs/sdk/models/operations/startbifgenerationrequest.md +++ b/docs/sdk/models/operations/startbifgenerationrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: StartBifGenerationRequest = { ids: "", - force: BoolInt.One, + force: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/stoptasktask.md b/docs/sdk/models/operations/starttaskbutlertask.md similarity index 90% rename from docs/sdk/models/operations/stoptasktask.md rename to docs/sdk/models/operations/starttaskbutlertask.md index 4617193b..7ad59c7e 100644 --- a/docs/sdk/models/operations/stoptasktask.md +++ b/docs/sdk/models/operations/starttaskbutlertask.md @@ -1,13 +1,14 @@ -# StopTaskTask +# StartTaskButlerTask The task name ## Example Usage ```typescript -import { StopTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StartTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StopTaskTask = StopTaskTask.RefreshLibraries; +let value: StartTaskButlerTask = + StartTaskButlerTask.ButlerTaskGenerateVoiceActivity; ``` ## Values diff --git a/docs/sdk/models/operations/starttaskrequest.md b/docs/sdk/models/operations/starttaskrequest.md index 49d9b1f6..b54492a7 100644 --- a/docs/sdk/models/operations/starttaskrequest.md +++ b/docs/sdk/models/operations/starttaskrequest.md @@ -3,26 +3,26 @@ ## Example Usage ```typescript -import { StartTaskRequest, StartTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StartTaskButlerTask, StartTaskRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: StartTaskRequest = { - task: StartTaskTask.ButlerTaskGenerateIntroMarkers, + butlerTask: StartTaskButlerTask.ButlerTaskGenerateIntroMarkers, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `task` | [operations.StartTaskTask](../../../sdk/models/operations/starttasktask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `butlerTask` | [operations.StartTaskButlerTask](../../../sdk/models/operations/starttaskbutlertask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/sdk/models/operations/starttranscodesessionrequest.md b/docs/sdk/models/operations/starttranscodesessionrequest.md index b6151fe4..20ec30dd 100644 --- a/docs/sdk/models/operations/starttranscodesessionrequest.md +++ b/docs/sdk/models/operations/starttranscodesessionrequest.md @@ -18,13 +18,13 @@ let value: StartTranscodeSessionRequest = { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/docs/sdk/models/operations/starttasktask.md b/docs/sdk/models/operations/stoptaskbutlertask.md similarity index 91% rename from docs/sdk/models/operations/starttasktask.md rename to docs/sdk/models/operations/stoptaskbutlertask.md index 62b5cea7..3001d06c 100644 --- a/docs/sdk/models/operations/starttasktask.md +++ b/docs/sdk/models/operations/stoptaskbutlertask.md @@ -1,13 +1,14 @@ -# StartTaskTask +# StopTaskButlerTask The task name ## Example Usage ```typescript -import { StartTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StopTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StartTaskTask = StartTaskTask.GenerateBlurHashes; +let value: StopTaskButlerTask = + StopTaskButlerTask.ButlerTaskGenerateCreditsMarkers; ``` ## Values diff --git a/docs/sdk/models/operations/stoptaskrequest.md b/docs/sdk/models/operations/stoptaskrequest.md index 7b86fd71..a5f1693f 100644 --- a/docs/sdk/models/operations/stoptaskrequest.md +++ b/docs/sdk/models/operations/stoptaskrequest.md @@ -3,26 +3,26 @@ ## Example Usage ```typescript -import { StopTaskRequest, StopTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StopTaskButlerTask, StopTaskRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: StopTaskRequest = { - task: StopTaskTask.RefreshPeriodicMetadata, + butlerTask: StopTaskButlerTask.RefreshPeriodicMetadata, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `task` | [operations.StopTaskTask](../../../sdk/models/operations/stoptasktask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `butlerTask` | [operations.StopTaskButlerTask](../../../sdk/models/operations/stoptaskbutlertask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/sdk/models/operations/subscription1.md b/docs/sdk/models/operations/subscription1.md new file mode 100644 index 00000000..cb340e61 --- /dev/null +++ b/docs/sdk/models/operations/subscription1.md @@ -0,0 +1,26 @@ +# Subscription1 + +If the account's Plex Pass subscription is active + +## Example Usage + +```typescript +import { Subscription1, SubscriptionStatus1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Subscription1 = { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus1.Inactive, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `features` | *string*[] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | +| `active` | *boolean* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | +| `subscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | +| `status` | [operations.SubscriptionStatus1](../../../sdk/models/operations/subscriptionstatus1.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | +| `paymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | +| `plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/sdk/models/operations/subscription2.md b/docs/sdk/models/operations/subscription2.md new file mode 100644 index 00000000..4b74614b --- /dev/null +++ b/docs/sdk/models/operations/subscription2.md @@ -0,0 +1,24 @@ +# Subscription2 + +## Example Usage + +```typescript +import { Subscription2, SubscriptionStatus2 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Subscription2 = { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus2.Inactive, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `features` | *string*[] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | +| `active` | *boolean* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | +| `subscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | +| `status` | [operations.SubscriptionStatus2](../../../sdk/models/operations/subscriptionstatus2.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | +| `paymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | +| `plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/sdk/models/operations/subscriptionstatus1.md b/docs/sdk/models/operations/subscriptionstatus1.md new file mode 100644 index 00000000..acc1a0eb --- /dev/null +++ b/docs/sdk/models/operations/subscriptionstatus1.md @@ -0,0 +1,21 @@ +# SubscriptionStatus1 + +String representation of subscriptionActive + +## Example Usage + +```typescript +import { SubscriptionStatus1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: SubscriptionStatus1 = SubscriptionStatus1.Inactive; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Inactive` | Inactive | +| `Active` | Active | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/subscriptionstatus2.md b/docs/sdk/models/operations/subscriptionstatus2.md new file mode 100644 index 00000000..b551c337 --- /dev/null +++ b/docs/sdk/models/operations/subscriptionstatus2.md @@ -0,0 +1,21 @@ +# SubscriptionStatus2 + +String representation of subscriptionActive + +## Example Usage + +```typescript +import { SubscriptionStatus2 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: SubscriptionStatus2 = SubscriptionStatus2.Inactive; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Inactive` | Inactive | +| `Active` | Active | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/subscriptiontemplate.md b/docs/sdk/models/operations/subscriptiontemplate.md index 26d2f966..f52badc5 100644 --- a/docs/sdk/models/operations/subscriptiontemplate.md +++ b/docs/sdk/models/operations/subscriptiontemplate.md @@ -4,6 +4,7 @@ ```typescript import { SubscriptionTemplate } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SubscriptionTemplate = { mediaSubscription: [ @@ -12,9 +13,14 @@ let value: SubscriptionTemplate = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: SubscriptionTemplate = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: SubscriptionTemplate = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: SubscriptionTemplate = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: SubscriptionTemplate = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,46 +89,72 @@ let value: SubscriptionTemplate = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: SubscriptionTemplate = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: SubscriptionTemplate = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: SubscriptionTemplate = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/transcodeimagerequest.md b/docs/sdk/models/operations/transcodeimagerequest.md index bf5ddc95..b0e0bbff 100644 --- a/docs/sdk/models/operations/transcodeimagerequest.md +++ b/docs/sdk/models/operations/transcodeimagerequest.md @@ -9,9 +9,9 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: TranscodeImageRequest = { url: "/library/metadata/265/thumb/1715112705", background: "#ff5522", - upscale: BoolInt.One, - minSize: BoolInt.One, - rotate: BoolInt.One, + upscale: BoolInt.True, + minSize: BoolInt.True, + rotate: BoolInt.True, blendColor: "#ff5522", }; ``` diff --git a/docs/sdk/models/operations/transcodesubtitlesrequest.md b/docs/sdk/models/operations/transcodesubtitlesrequest.md index 97204bd0..f3cdfbec 100644 --- a/docs/sdk/models/operations/transcodesubtitlesrequest.md +++ b/docs/sdk/models/operations/transcodesubtitlesrequest.md @@ -16,13 +16,13 @@ let value: TranscodeSubtitlesRequest = { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: TranscodeSubtitlesLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/docs/sdk/models/operations/trial.md b/docs/sdk/models/operations/trial.md new file mode 100644 index 00000000..0564aae0 --- /dev/null +++ b/docs/sdk/models/operations/trial.md @@ -0,0 +1,14 @@ +# Trial + +## Example Usage + +```typescript +import { Trial } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Trial = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/sdk/models/operations/updatehubvisibilityrequest.md b/docs/sdk/models/operations/updatehubvisibilityrequest.md index 31189fec..a8dcbc29 100644 --- a/docs/sdk/models/operations/updatehubvisibilityrequest.md +++ b/docs/sdk/models/operations/updatehubvisibilityrequest.md @@ -9,9 +9,9 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: UpdateHubVisibilityRequest = { sectionId: 174620, identifier: "", - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/updateitemsrequest.md b/docs/sdk/models/operations/updateitemsrequest.md index 38d76595..c2e7c6b6 100644 --- a/docs/sdk/models/operations/updateitemsrequest.md +++ b/docs/sdk/models/operations/updateitemsrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: UpdateItemsRequest = { sectionId: "", - fieldLocked: BoolInt.One, + fieldLocked: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/uploadplaylistrequest.md b/docs/sdk/models/operations/uploadplaylistrequest.md index b6bbac19..29884428 100644 --- a/docs/sdk/models/operations/uploadplaylistrequest.md +++ b/docs/sdk/models/operations/uploadplaylistrequest.md @@ -8,7 +8,7 @@ import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; let value: UploadPlaylistRequest = { path: "/home/barkley/playlist.m3u", - force: BoolInt.One, + force: BoolInt.True, }; ``` diff --git a/docs/sdk/models/operations/user.md b/docs/sdk/models/operations/user.md new file mode 100644 index 00000000..c39cc83d --- /dev/null +++ b/docs/sdk/models/operations/user.md @@ -0,0 +1,80 @@ +# User + +## Example Usage + +```typescript +import { + AllLibraries, + AllowCameraUpload, + AllowChannels, + AllowSubtitleAdmin, + AllowSync, + AllowTuners, + Home, + Owned, + Pending, + Protected, + Restricted, + User, +} from "@lukehagar/plexjs/sdk/models/operations"; + +let value: User = { + id: 22526914, + title: "Plex User", + username: "zgfuc7krcqfimrmb9lsl5j", + email: "zgfuc7krcqfimrmb9lsl5j@protonmail.com", + recommendationsPlaylistId: "", + thumb: "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", + protected: Protected.Enable, + home: Home.Enable, + allowTuners: AllowTuners.Enable, + allowSync: AllowSync.Enable, + allowCameraUpload: AllowCameraUpload.Enable, + allowChannels: AllowChannels.Enable, + allowSubtitleAdmin: AllowSubtitleAdmin.Enable, + filterAll: "", + filterMovies: "", + filterMusic: "", + filterPhotos: "", + filterTelevision: "", + restricted: Restricted.Enable, + server: [ + { + id: 907759180, + serverId: 9999999, + machineIdentifier: "fbb8aa6be6e0c997c6268bc2b4431c8807f70a3", + name: "ConnectedUserFlix", + lastSeenAt: 1556281940, + numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | User's unique ID. | 22526914 | +| `title` | *string* | :heavy_check_mark: | User's display name. | Plex User | +| `username` | *string* | :heavy_check_mark: | User's username. | zgfuc7krcqfimrmb9lsl5j | +| `email` | *string* | :heavy_check_mark: | User's email address. | zgfuc7krcqfimrmb9lsl5j@protonmail.com | +| `recommendationsPlaylistId` | *string* | :heavy_minus_sign: | ID of the user's recommendation playlist. | | +| `thumb` | *string* | :heavy_check_mark: | URL to the user's avatar image. | https://plex.tv/users/3346028014e93acd/avatar?c=1731605021 | +| `protected` | [operations.Protected](../../../sdk/models/operations/protected.md) | :heavy_minus_sign: | N/A | 1 | +| `home` | [operations.Home](../../../sdk/models/operations/home.md) | :heavy_minus_sign: | N/A | 1 | +| `allowTuners` | [operations.AllowTuners](../../../sdk/models/operations/allowtuners.md) | :heavy_minus_sign: | N/A | 1 | +| `allowSync` | [operations.AllowSync](../../../sdk/models/operations/allowsync.md) | :heavy_minus_sign: | N/A | 1 | +| `allowCameraUpload` | [operations.AllowCameraUpload](../../../sdk/models/operations/allowcameraupload.md) | :heavy_minus_sign: | N/A | 1 | +| `allowChannels` | [operations.AllowChannels](../../../sdk/models/operations/allowchannels.md) | :heavy_minus_sign: | N/A | 1 | +| `allowSubtitleAdmin` | [operations.AllowSubtitleAdmin](../../../sdk/models/operations/allowsubtitleadmin.md) | :heavy_minus_sign: | N/A | 1 | +| `filterAll` | *string* | :heavy_minus_sign: | Filters applied for all content. | | +| `filterMovies` | *string* | :heavy_minus_sign: | Filters applied for movies. | | +| `filterMusic` | *string* | :heavy_minus_sign: | Filters applied for music. | | +| `filterPhotos` | *string* | :heavy_minus_sign: | Filters applied for photos. | | +| `filterTelevision` | *string* | :heavy_minus_sign: | Filters applied for television. | | +| `restricted` | [operations.Restricted](../../../sdk/models/operations/restricted.md) | :heavy_minus_sign: | N/A | 1 | +| `server` | [operations.Server](../../../sdk/models/operations/server.md)[] | :heavy_check_mark: | List of servers owned by the user. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/userplexaccount.md b/docs/sdk/models/operations/userplexaccount.md new file mode 100644 index 00000000..1fbe28a7 --- /dev/null +++ b/docs/sdk/models/operations/userplexaccount.md @@ -0,0 +1,126 @@ +# UserPlexAccount + +Returns the user account data with a valid auth token + +## Example Usage + +```typescript +import { + MailingListStatus, + ServiceStatus, + SubscriptionStatus1, + SubscriptionStatus2, + UserPlexAccount, +} from "@lukehagar/plexjs/sdk/models/operations"; +import { + AutoSelectSubtitle, + DefaultSubtitleAccessibility, + DefaultSubtitleForced, + MediaReviewsVisibility, + WatchedIndicator, +} from "@lukehagar/plexjs/sdk/models/shared"; + +let value: UserPlexAccount = { + adsConsentReminderAt: 1556281940, + adsConsentSetAt: 1556281940, + authToken: "CxoUzBTSV5hsxjTpFKaf", + country: "US", + email: "username@email.com", + friendlyName: "friendlyUsername", + entitlements: [], + homeSize: 1, + id: 13692262, + joinedAt: 1556281940, + mailingListStatus: MailingListStatus.Active, + maxHomeSize: 15, + profile: { + defaultAudioLanguage: "ja", + defaultAudioLanguages: null, + defaultSubtitleLanguage: "en", + defaultSubtitleLanguages: null, + autoSelectSubtitle: AutoSelectSubtitle.ShownWithForeignAudio, + defaultSubtitleAccessibility: DefaultSubtitleAccessibility.PreferSdh, + defaultSubtitleForced: DefaultSubtitleForced.PreferForced, + watchedIndicator: WatchedIndicator.MoviesAndTvShows, + mediaReviewsVisibility: MediaReviewsVisibility.CriticsOnly, + mediaReviewsLanguages: null, + }, + rememberExpiresAt: 1556281940, + services: [ + { + identifier: "metadata-dev", + endpoint: "https://epg.provider.plex.tv", + token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", + secret: "", + status: ServiceStatus.Online, + }, + ], + subscription: { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus1.Inactive, + }, + subscriptions: [ + { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus2.Inactive, + }, + ], + thumb: "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", + title: "UsernameTitle", + username: "Username", + uuid: "dae343c1f45beb4f", + attributionPartner: null, + pastSubscriptions: [], + trials: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `adsConsent` | *boolean* | :heavy_minus_sign: | Unknown | | +| `adsConsentReminderAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `adsConsentSetAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `anonymous` | *boolean* | :heavy_minus_sign: | Unknown | | +| `authToken` | *string* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | +| `backupCodesCreated` | *boolean* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | +| `confirmed` | *boolean* | :heavy_minus_sign: | If the account has been confirmed | | +| `country` | *string* | :heavy_minus_sign: | The account country | US | +| `email` | *string* | :heavy_check_mark: | The account email address | username@email.com | +| `emailOnlyAuth` | *boolean* | :heavy_minus_sign: | If login with email only is enabled | | +| `experimentalFeatures` | *boolean* | :heavy_minus_sign: | If experimental features are enabled | | +| `friendlyName` | *string* | :heavy_check_mark: | Your account full name | friendlyUsername | +| `entitlements` | *string*[] | :heavy_minus_sign: | List of devices your allowed to use with this account | [] | +| `guest` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home guest user | | +| `hasPassword` | *boolean* | :heavy_minus_sign: | If the account has a password | | +| `home` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home user | | +| `homeAdmin` | *boolean* | :heavy_minus_sign: | If the account is the Plex Home admin | | +| `homeSize` | *number* | :heavy_minus_sign: | The number of accounts in the Plex Home | 1 | +| `id` | *number* | :heavy_check_mark: | The Plex account ID | 13692262 | +| `joinedAt` | *number* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | +| `locale` | *string* | :heavy_minus_sign: | The account locale | | +| `mailingListActive` | *boolean* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | +| `mailingListStatus` | [operations.MailingListStatus](../../../sdk/models/operations/mailingliststatus.md) | :heavy_minus_sign: | Your current mailing list status | active | +| `maxHomeSize` | *number* | :heavy_minus_sign: | The maximum number of accounts allowed in the Plex Home | 15 | +| ~~`pin`~~ | *string* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | +| `profile` | [shared.UserProfile](../../../sdk/models/shared/userprofile.md) | :heavy_minus_sign: | N/A | | +| `protected` | *boolean* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | +| `rememberExpiresAt` | *number* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `restricted` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home managed user | | +| `roles` | *string*[] | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | +| `scrobbleTypes` | *string* | :heavy_minus_sign: | Unknown | | +| `services` | [operations.Service](../../../sdk/models/operations/service.md)[] | :heavy_minus_sign: | N/A | | +| `subscription` | [operations.Subscription1](../../../sdk/models/operations/subscription1.md) | :heavy_minus_sign: | If the account's Plex Pass subscription is active | | +| `subscriptionDescription` | *string* | :heavy_minus_sign: | Description of the Plex Pass subscription | | +| `subscriptions` | [operations.Subscription2](../../../sdk/models/operations/subscription2.md)[] | :heavy_minus_sign: | N/A | | +| `thumb` | *string* | :heavy_minus_sign: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | +| `title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | +| `twoFactorEnabled` | *boolean* | :heavy_minus_sign: | If two-factor authentication is enabled | | +| `username` | *string* | :heavy_check_mark: | The account username | Username | +| `uuid` | *string* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | +| `attributionPartner` | *string* | :heavy_minus_sign: | N/A | | +| `pastSubscriptions` | [operations.PastSubscription](../../../sdk/models/operations/pastsubscription.md)[] | :heavy_check_mark: | N/A | | +| `trials` | [operations.Trial](../../../sdk/models/operations/trial.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/voicesearchhubsmediacontainer.md b/docs/sdk/models/operations/voicesearchhubsmediacontainer.md index 557006d0..5865aacb 100644 --- a/docs/sdk/models/operations/voicesearchhubsmediacontainer.md +++ b/docs/sdk/models/operations/voicesearchhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { VoiceSearchHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: VoiceSearchHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: VoiceSearchHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: VoiceSearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: VoiceSearchHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: VoiceSearchHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: VoiceSearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: VoiceSearchHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: VoiceSearchHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: VoiceSearchHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: VoiceSearchHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/operations/voicesearchhubsrequest.md b/docs/sdk/models/operations/voicesearchhubsrequest.md index 54b788ed..63944725 100644 --- a/docs/sdk/models/operations/voicesearchhubsrequest.md +++ b/docs/sdk/models/operations/voicesearchhubsrequest.md @@ -4,27 +4,29 @@ ```typescript import { VoiceSearchHubsRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; let value: VoiceSearchHubsRequest = { query: "", + type: MediaType.TvShow, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | -| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | -| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | -| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | -| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | -| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | -| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | -| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | -| `query` | *string* | :heavy_check_mark: | The query term | | -| `type` | *number* | :heavy_minus_sign: | The metadata type to filter by | | -| `limit` | *number* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `query` | *string* | :heavy_check_mark: | The query term | | +| `type` | [shared.MediaType](../../../sdk/models/shared/mediatype.md) | :heavy_minus_sign: | The type of media to retrieve or filter by.

1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo

E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `limit` | *number* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file diff --git a/docs/sdk/models/operations/voicesearchhubsresponsebody.md b/docs/sdk/models/operations/voicesearchhubsresponsebody.md index 9a017cb9..8357cabe 100644 --- a/docs/sdk/models/operations/voicesearchhubsresponsebody.md +++ b/docs/sdk/models/operations/voicesearchhubsresponsebody.md @@ -6,6 +6,7 @@ OK ```typescript import { VoiceSearchHubsResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: VoiceSearchHubsResponseBody = { mediaContainer: { @@ -17,9 +18,14 @@ let value: VoiceSearchHubsResponseBody = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: VoiceSearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: VoiceSearchHubsResponseBody = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: VoiceSearchHubsResponseBody = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: VoiceSearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: VoiceSearchHubsResponseBody = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: VoiceSearchHubsResponseBody = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: VoiceSearchHubsResponseBody = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: VoiceSearchHubsResponseBody = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/autoselectsubtitle.md b/docs/sdk/models/shared/autoselectsubtitle.md new file mode 100644 index 00000000..34272fb0 --- /dev/null +++ b/docs/sdk/models/shared/autoselectsubtitle.md @@ -0,0 +1,19 @@ +# AutoSelectSubtitle + +The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) + +## Example Usage + +```typescript +import { AutoSelectSubtitle } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: AutoSelectSubtitle = AutoSelectSubtitle.ShownWithForeignAudio; +``` + +## Values + +| Name | Value | +| ----------------------- | ----------------------- | +| `ManuallySelected` | 0 | +| `ShownWithForeignAudio` | 1 | +| `AlwaysEnabled` | 2 | \ No newline at end of file diff --git a/docs/sdk/models/shared/boolint.md b/docs/sdk/models/shared/boolint.md index 4ba8a0b2..74b7becc 100644 --- a/docs/sdk/models/shared/boolint.md +++ b/docs/sdk/models/shared/boolint.md @@ -5,12 +5,12 @@ ```typescript import { BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; -let value: BoolInt = BoolInt.One; +let value: BoolInt = BoolInt.True; ``` ## Values -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/shared/connection.md b/docs/sdk/models/shared/connection.md new file mode 100644 index 00000000..9159a089 --- /dev/null +++ b/docs/sdk/models/shared/connection.md @@ -0,0 +1,29 @@ +# Connection + +## Example Usage + +```typescript +import { Connection, PlexDeviceProtocol } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: Connection = { + protocol: PlexDeviceProtocol.Http, + address: "4285 E Central Avenue", + port: 663268, + uri: "https://decent-hippodrome.org/", + local: false, + relay: true, + iPv6: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `protocol` | [shared.PlexDeviceProtocol](../../../sdk/models/shared/plexdeviceprotocol.md) | :heavy_check_mark: | The protocol used for the connection (http, https, etc) | http | +| `address` | *string* | :heavy_check_mark: | The (ip) address or domain name used for the connection | | +| `port` | *number* | :heavy_check_mark: | The port used for the connection | | +| `uri` | *string* | :heavy_check_mark: | The full URI of the connection | | +| `local` | *boolean* | :heavy_check_mark: | If the connection is local address | | +| `relay` | *boolean* | :heavy_check_mark: | If the connection is relayed through plex.direct | | +| `iPv6` | *boolean* | :heavy_check_mark: | If the connection is using IPv6 | | \ No newline at end of file diff --git a/docs/sdk/models/shared/defaultaudioaccessibility.md b/docs/sdk/models/shared/defaultaudioaccessibility.md new file mode 100644 index 00000000..7be977fd --- /dev/null +++ b/docs/sdk/models/shared/defaultaudioaccessibility.md @@ -0,0 +1,21 @@ +# DefaultAudioAccessibility + +The audio accessibility mode (0 = Prefer non-accessibility audio, 1 = Prefer accessibility audio, 2 = Only show accessibility audio, 3 = Only show non-accessibility audio) + +## Example Usage + +```typescript +import { DefaultAudioAccessibility } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: DefaultAudioAccessibility = + DefaultAudioAccessibility.PreferNonAccessibility; +``` + +## Values + +| Name | Value | +| ------------------------ | ------------------------ | +| `PreferNonAccessibility` | 0 | +| `PreferAccessibility` | 1 | +| `OnlyAccessibility` | 2 | +| `OnlyNonAccessibility` | 3 | \ No newline at end of file diff --git a/docs/sdk/models/shared/defaultsubtitleaccessibility.md b/docs/sdk/models/shared/defaultsubtitleaccessibility.md new file mode 100644 index 00000000..08f5c63b --- /dev/null +++ b/docs/sdk/models/shared/defaultsubtitleaccessibility.md @@ -0,0 +1,21 @@ +# DefaultSubtitleAccessibility + +The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) + +## Example Usage + +```typescript +import { DefaultSubtitleAccessibility } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: DefaultSubtitleAccessibility = + DefaultSubtitleAccessibility.PreferSdh; +``` + +## Values + +| Name | Value | +| -------------- | -------------- | +| `PreferNonSdh` | 0 | +| `PreferSdh` | 1 | +| `OnlySdh` | 2 | +| `OnlyNonSdh` | 3 | \ No newline at end of file diff --git a/docs/sdk/models/shared/defaultsubtitleforced.md b/docs/sdk/models/shared/defaultsubtitleforced.md new file mode 100644 index 00000000..c7f9d83f --- /dev/null +++ b/docs/sdk/models/shared/defaultsubtitleforced.md @@ -0,0 +1,20 @@ +# DefaultSubtitleForced + +The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) + +## Example Usage + +```typescript +import { DefaultSubtitleForced } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: DefaultSubtitleForced = DefaultSubtitleForced.PreferForced; +``` + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `PreferNonForced` | 0 | +| `PreferForced` | 1 | +| `OnlyForced` | 2 | +| `OnlyNonForced` | 3 | \ No newline at end of file diff --git a/docs/sdk/models/shared/hub.md b/docs/sdk/models/shared/hub.md index 3f9fd7c5..e89fc0a2 100644 --- a/docs/sdk/models/shared/hub.md +++ b/docs/sdk/models/shared/hub.md @@ -4,6 +4,7 @@ ```typescript import { Hub } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: Hub = { type: "track", @@ -12,9 +13,14 @@ let value: Hub = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: Hub = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: Hub = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: Hub = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: Hub = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,45 +89,71 @@ let value: Hub = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -129,9 +166,12 @@ let value: Hub = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -142,6 +182,7 @@ let value: Hub = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,9 +190,12 @@ let value: Hub = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/items.md b/docs/sdk/models/shared/items.md index e5e8f901..0478af69 100644 --- a/docs/sdk/models/shared/items.md +++ b/docs/sdk/models/shared/items.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { Items } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: Items = { + title: "", + type: "", + addedAt: 663892, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: Items = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: Items = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: Items = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: Items = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: Items = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -162,9 +206,14 @@ let value: Items = { ], metadataItem: [ { + title: "", + type: "", + addedAt: 799579, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -172,9 +221,12 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -185,6 +237,7 @@ let value: Items = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -195,6 +248,7 @@ let value: Items = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -202,16 +256,16 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -228,45 +282,71 @@ let value: Items = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -279,9 +359,12 @@ let value: Items = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -292,6 +375,7 @@ let value: Items = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -299,9 +383,12 @@ let value: Items = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -316,74 +403,78 @@ let value: Items = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `metadataItem` | [shared.Items](../../../sdk/models/shared/items.md)[] | :heavy_minus_sign: | N/A | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [shared.ItemsGuid](../../../sdk/models/shared/itemsguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `metadataItem` | [shared.Items](../../../sdk/models/shared/items.md)[] | :heavy_minus_sign: | N/A | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/itemsguid.md b/docs/sdk/models/shared/itemsguid.md new file mode 100644 index 00000000..aa696ab7 --- /dev/null +++ b/docs/sdk/models/shared/itemsguid.md @@ -0,0 +1,18 @@ +# ItemsGuid + +## Example Usage + +```typescript +import { ItemsGuid } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: ItemsGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/shared/librarysection.md b/docs/sdk/models/shared/librarysection.md index a26f5f07..bcc90fcb 100644 --- a/docs/sdk/models/shared/librarysection.md +++ b/docs/sdk/models/shared/librarysection.md @@ -3,32 +3,42 @@ ## Example Usage ```typescript -import { LibrarySection } from "@lukehagar/plexjs/sdk/models/shared"; +import { LibrarySection, MediaTypeString } from "@lukehagar/plexjs/sdk/models/shared"; -let value: LibrarySection = {}; +let value: LibrarySection = { + title: "Movies", + type: MediaTypeString.Movie, + contentChangedAt: 1556281940, + createdAt: 1556281940, + language: "", + uuid: "e69655a2-ef48-4aba-bb19-d3cc3401e7d6", + scannedAt: 1556281940, + updatedAt: 1556281940, +}; ``` ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `title` | *string* | :heavy_minus_sign: | N/A | -| `type` | *string* | :heavy_minus_sign: | N/A | -| `agent` | *string* | :heavy_minus_sign: | N/A | -| `allowSync` | *boolean* | :heavy_minus_sign: | N/A | -| `art` | *string* | :heavy_minus_sign: | N/A | -| `composite` | *string* | :heavy_minus_sign: | N/A | -| `content` | *boolean* | :heavy_minus_sign: | N/A | -| `contentChangedAt` | *number* | :heavy_minus_sign: | N/A | -| `createdAt` | *number* | :heavy_minus_sign: | N/A | -| `directory` | *boolean* | :heavy_minus_sign: | N/A | -| `filters` | *boolean* | :heavy_minus_sign: | Indicates whether this section has filtering capabilities | -| `hidden` | *boolean* | :heavy_minus_sign: | N/A | -| `key` | *string* | :heavy_minus_sign: | N/A | -| `language` | *string* | :heavy_minus_sign: | N/A | -| `location` | [shared.LibrarySectionLocation](../../../sdk/models/shared/librarysectionlocation.md)[] | :heavy_minus_sign: | N/A | -| `refreshing` | *boolean* | :heavy_minus_sign: | Indicates whether this library section is currently scanning | -| `scannedAt` | *number* | :heavy_minus_sign: | N/A | -| `scanner` | *string* | :heavy_minus_sign: | N/A | -| `thumb` | *string* | :heavy_minus_sign: | N/A | -| `updatedAt` | *number* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_minus_sign: | The title of the library | Movies | +| `type` | [shared.MediaTypeString](../../../sdk/models/shared/mediatypestring.md) | :heavy_check_mark: | The type of media content in the Plex library. This can represent videos, music, or photos.
| movie | +| `agent` | *string* | :heavy_minus_sign: | N/A | | +| `allowSync` | *boolean* | :heavy_minus_sign: | N/A | | +| `art` | *string* | :heavy_minus_sign: | N/A | | +| `composite` | *string* | :heavy_minus_sign: | N/A | | +| `content` | *boolean* | :heavy_minus_sign: | N/A | | +| `contentChangedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `createdAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `directory` | *boolean* | :heavy_minus_sign: | N/A | | +| `filters` | *boolean* | :heavy_minus_sign: | Indicates whether this section has filtering capabilities | | +| `hidden` | *boolean* | :heavy_minus_sign: | N/A | | +| `key` | *string* | :heavy_minus_sign: | N/A | | +| `language` | *string* | :heavy_check_mark: | N/A | | +| `uuid` | *string* | :heavy_check_mark: | The universally unique identifier for the library. | e69655a2-ef48-4aba-bb19-d3cc3401e7d6 | +| `location` | [shared.LibrarySectionLocation](../../../sdk/models/shared/librarysectionlocation.md)[] | :heavy_minus_sign: | N/A | | +| `refreshing` | *boolean* | :heavy_minus_sign: | Indicates whether this library section is currently scanning | | +| `scannedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `scanner` | *string* | :heavy_minus_sign: | N/A | | +| `thumb` | *string* | :heavy_minus_sign: | N/A | | +| `updatedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | \ No newline at end of file diff --git a/docs/sdk/models/shared/mailingliststatus.md b/docs/sdk/models/shared/mailingliststatus.md new file mode 100644 index 00000000..8af335d7 --- /dev/null +++ b/docs/sdk/models/shared/mailingliststatus.md @@ -0,0 +1,19 @@ +# MailingListStatus + +Your current mailing list status + +## Example Usage + +```typescript +import { MailingListStatus } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MailingListStatus = MailingListStatus.Active; +``` + +## Values + +| Name | Value | +| -------------- | -------------- | +| `Active` | active | +| `Unsubscribed` | unsubscribed | +| `Removed` | removed | \ No newline at end of file diff --git a/docs/sdk/models/shared/media.md b/docs/sdk/models/shared/media.md index bcf3b5eb..855e4e91 100644 --- a/docs/sdk/models/shared/media.md +++ b/docs/sdk/models/shared/media.md @@ -23,45 +23,71 @@ let value: Media = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -81,20 +107,20 @@ let value: Media = { | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | | `aspectRatio` | *number* | :heavy_minus_sign: | N/A | 2.35 | | `audioChannels` | *number* | :heavy_minus_sign: | N/A | 2 | -| `audioCodec` | *any* | :heavy_minus_sign: | N/A | aac | -| `audioProfile` | *any* | :heavy_minus_sign: | N/A | lc | +| `audioCodec` | *string* | :heavy_minus_sign: | N/A | aac | +| `audioProfile` | *string* | :heavy_minus_sign: | N/A | lc | | `bitrate` | *number* | :heavy_minus_sign: | N/A | 5612 | -| `container` | *any* | :heavy_minus_sign: | N/A | mov | +| `container` | *string* | :heavy_minus_sign: | N/A | mov | | `duration` | *number* | :heavy_minus_sign: | N/A | 150192 | | `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | | `hasVoiceActivity` | *boolean* | :heavy_minus_sign: | N/A | true | | `height` | *number* | :heavy_minus_sign: | N/A | 544 | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | +| `id` | *number* | :heavy_check_mark: | N/A | 1 | | `optimizedForStreaming` | *boolean* | :heavy_minus_sign: | N/A | false | | `part` | [shared.Part](../../../sdk/models/shared/part.md)[] | :heavy_minus_sign: | N/A | | -| `videoCodec` | *any* | :heavy_minus_sign: | N/A | h264 | -| `videoFrameRate` | *any* | :heavy_minus_sign: | N/A | 24p | -| `videoProfile` | *any* | :heavy_minus_sign: | N/A | main | -| `videoResolution` | *any* | :heavy_minus_sign: | N/A | 720 | +| `videoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | +| `videoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | +| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main | +| `videoResolution` | *string* | :heavy_minus_sign: | N/A | 720 | | `width` | *number* | :heavy_minus_sign: | N/A | 1280 | | `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithdecision.md b/docs/sdk/models/shared/mediacontainerwithdecision.md index 82e292f9..f1d8a8fd 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecision.md +++ b/docs/sdk/models/shared/mediacontainerwithdecision.md @@ -9,14 +9,20 @@ It is also common for a `MediaContainer` to contain attributes "hoisted" from it ```typescript import { MediaContainerWithDecision } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithDecision = { mediaContainer: { metadata: [ { + title: "", + type: "", + addedAt: 260702, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -24,9 +30,12 @@ let value: MediaContainerWithDecision = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -37,6 +46,7 @@ let value: MediaContainerWithDecision = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -47,6 +57,7 @@ let value: MediaContainerWithDecision = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -54,16 +65,16 @@ let value: MediaContainerWithDecision = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -80,45 +91,71 @@ let value: MediaContainerWithDecision = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -131,9 +168,12 @@ let value: MediaContainerWithDecision = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -144,6 +184,7 @@ let value: MediaContainerWithDecision = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -151,9 +192,12 @@ let value: MediaContainerWithDecision = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionguid.md b/docs/sdk/models/shared/mediacontainerwithdecisionguid.md new file mode 100644 index 00000000..9718fc55 --- /dev/null +++ b/docs/sdk/models/shared/mediacontainerwithdecisionguid.md @@ -0,0 +1,18 @@ +# MediaContainerWithDecisionGuid + +## Example Usage + +```typescript +import { MediaContainerWithDecisionGuid } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaContainerWithDecisionGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionmedia.md b/docs/sdk/models/shared/mediacontainerwithdecisionmedia.md index 37fa8dff..b62a205d 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecisionmedia.md +++ b/docs/sdk/models/shared/mediacontainerwithdecisionmedia.md @@ -23,45 +23,71 @@ let value: MediaContainerWithDecisionMedia = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -81,21 +107,21 @@ let value: MediaContainerWithDecisionMedia = { | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | `aspectRatio` | *number* | :heavy_minus_sign: | N/A | 2.35 | | `audioChannels` | *number* | :heavy_minus_sign: | N/A | 2 | -| `audioCodec` | *any* | :heavy_minus_sign: | N/A | aac | -| `audioProfile` | *any* | :heavy_minus_sign: | N/A | lc | +| `audioCodec` | *string* | :heavy_minus_sign: | N/A | aac | +| `audioProfile` | *string* | :heavy_minus_sign: | N/A | lc | | `bitrate` | *number* | :heavy_minus_sign: | N/A | 5612 | -| `container` | *any* | :heavy_minus_sign: | N/A | mov | +| `container` | *string* | :heavy_minus_sign: | N/A | mov | | `duration` | *number* | :heavy_minus_sign: | N/A | 150192 | | `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | | `hasVoiceActivity` | *boolean* | :heavy_minus_sign: | N/A | true | | `height` | *number* | :heavy_minus_sign: | N/A | 544 | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | +| `id` | *number* | :heavy_check_mark: | N/A | 1 | | `optimizedForStreaming` | *boolean* | :heavy_minus_sign: | N/A | false | | `part` | [shared.MediaContainerWithDecisionPart](../../../sdk/models/shared/mediacontainerwithdecisionpart.md)[] | :heavy_minus_sign: | N/A | | -| `videoCodec` | *any* | :heavy_minus_sign: | N/A | h264 | -| `videoFrameRate` | *any* | :heavy_minus_sign: | N/A | 24p | -| `videoProfile` | *any* | :heavy_minus_sign: | N/A | main | -| `videoResolution` | *any* | :heavy_minus_sign: | N/A | 720 | +| `videoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | +| `videoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | +| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main | +| `videoResolution` | *string* | :heavy_minus_sign: | N/A | 720 | | `width` | *number* | :heavy_minus_sign: | N/A | 1280 | | `abr` | *boolean* | :heavy_minus_sign: | N/A | | | `resourceSession` | *string* | :heavy_minus_sign: | N/A | | diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionmediacontainer.md b/docs/sdk/models/shared/mediacontainerwithdecisionmediacontainer.md index 6fe20f83..a00c05a7 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecisionmediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithdecisionmediacontainer.md @@ -9,13 +9,19 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithDecisionMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithDecisionMediaContainer = { metadata: [ { + title: "", + type: "", + addedAt: 260702, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MediaContainerWithDecisionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MediaContainerWithDecisionMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MediaContainerWithDecisionMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MediaContainerWithDecisionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithDecisionMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithDecisionMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithDecisionMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithDecisionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionmetadatum.md b/docs/sdk/models/shared/mediacontainerwithdecisionmetadatum.md index 59d1f67e..e7c0305b 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecisionmetadatum.md +++ b/docs/sdk/models/shared/mediacontainerwithdecisionmetadatum.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { MediaContainerWithDecisionMetadatum } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithDecisionMetadatum = { + title: "", + type: "", + addedAt: 934544, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MediaContainerWithDecisionMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MediaContainerWithDecisionMetadatum = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MediaContainerWithDecisionMetadatum = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MediaContainerWithDecisionMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithDecisionMetadatum = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithDecisionMetadatum = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithDecisionMetadatum = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithDecisionMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -165,73 +209,77 @@ let value: MediaContainerWithDecisionMetadatum = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.MediaContainerWithDecisionMedia](../../../sdk/models/shared/mediacontainerwithdecisionmedia.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [shared.MediaContainerWithDecisionGuid](../../../sdk/models/shared/mediacontainerwithdecisionguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.MediaContainerWithDecisionMedia](../../../sdk/models/shared/mediacontainerwithdecisionmedia.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionpart.md b/docs/sdk/models/shared/mediacontainerwithdecisionpart.md index 6881b34c..b479a773 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecisionpart.md +++ b/docs/sdk/models/shared/mediacontainerwithdecisionpart.md @@ -9,45 +9,71 @@ import { MediaContainerWithDecisionPart } from "@lukehagar/plexjs/sdk/models/shared"; let value: MediaContainerWithDecisionPart = { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -58,17 +84,20 @@ let value: MediaContainerWithDecisionPart = { | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `audioProfile` | *any* | :heavy_minus_sign: | N/A | lc | -| `container` | *any* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `audioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `container` | *string* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | | `duration` | *number* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | -| `file` | *any* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `file` | *string* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | | `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | -| `key` | *any* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `id` | *number* | :heavy_check_mark: | N/A | 1 | +| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `key` | *string* | :heavy_check_mark: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | | `optimizedForStreaming` | *boolean* | :heavy_minus_sign: | N/A | false | | `size` | *number* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | | `stream` | [shared.MediaContainerWithDecisionStream](../../../sdk/models/shared/mediacontainerwithdecisionstream.md)[] | :heavy_minus_sign: | N/A | | -| `videoProfile` | *any* | :heavy_minus_sign: | N/A | main | +| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main | | `decision` | [shared.Decision](../../../sdk/models/shared/decision.md) | :heavy_minus_sign: | N/A | | | `selected` | *boolean* | :heavy_minus_sign: | N/A | | | `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithdecisionstream.md b/docs/sdk/models/shared/mediacontainerwithdecisionstream.md index 97c0e9eb..2cfba073 100644 --- a/docs/sdk/models/shared/mediacontainerwithdecisionstream.md +++ b/docs/sdk/models/shared/mediacontainerwithdecisionstream.md @@ -10,69 +10,115 @@ import { MediaContainerWithDecisionStream } from "@lukehagar/plexjs/sdk/models/s let value: MediaContainerWithDecisionStream = { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `default` | *boolean* | :heavy_minus_sign: | N/A | true | -| `audioChannelLayout` | *any* | :heavy_minus_sign: | N/A | stereo | -| `bitDepth` | *number* | :heavy_minus_sign: | N/A | 8 | -| `bitrate` | *number* | :heavy_minus_sign: | N/A | 5466 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | -| `chromaLocation` | *any* | :heavy_minus_sign: | N/A | topleft | -| `chromaSubsampling` | *any* | :heavy_minus_sign: | N/A | 4:2:0 | -| `codec` | *any* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | -| `colorPrimaries` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `colorRange` | *any* | :heavy_minus_sign: | N/A | tv | -| `colorSpace` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `colorTrc` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `displayTitle` | *any* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | -| `frameRate` | *number* | :heavy_minus_sign: | N/A | 23.976 | -| `hasScalingMatrix` | *any* | :heavy_minus_sign: | N/A | false | -| `height` | *number* | :heavy_minus_sign: | N/A | 544 | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | -| `index` | *number* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | -| `key` | *any* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | -| `language` | *any* | :heavy_minus_sign: | N/A | English | -| `languageCode` | *any* | :heavy_minus_sign: | The three character language code for the stream contents | eng | -| `level` | *number* | :heavy_minus_sign: | N/A | 31 | -| `profile` | *any* | :heavy_minus_sign: | N/A | main | -| `refFrames` | *number* | :heavy_minus_sign: | N/A | 2 | -| `samplingRate` | *number* | :heavy_minus_sign: | N/A | 48000 | -| `selected` | *boolean* | :heavy_minus_sign: | N/A | | -| `streamIdentifier` | *number* | :heavy_minus_sign: | N/A | 1 | -| `streamType` | *number* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | -| `width` | *number* | :heavy_minus_sign: | N/A | 1280 | -| `decision` | [shared.StreamDecision](../../../sdk/models/shared/streamdecision.md) | :heavy_minus_sign: | N/A | | -| `location` | [shared.MediaContainerWithDecisionLocation](../../../sdk/models/shared/mediacontainerwithdecisionlocation.md) | :heavy_minus_sign: | N/A | | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_minus_sign: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `key` | *string* | :heavy_check_mark: | Key to access this stream part. | /library/streams/216389 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | +| `streamIdentifier` | *number* | :heavy_minus_sign: | N/A | 1 | +| `streamType` | *number* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `decision` | [shared.StreamDecision](../../../sdk/models/shared/streamdecision.md) | :heavy_minus_sign: | N/A | | +| `location` | [shared.MediaContainerWithDecisionLocation](../../../sdk/models/shared/mediacontainerwithdecisionlocation.md) | :heavy_minus_sign: | N/A | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithhubs.md b/docs/sdk/models/shared/mediacontainerwithhubs.md index 754fc5d4..7f6609cc 100644 --- a/docs/sdk/models/shared/mediacontainerwithhubs.md +++ b/docs/sdk/models/shared/mediacontainerwithhubs.md @@ -6,6 +6,7 @@ OK ```typescript import { MediaContainerWithHubs } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithHubs = { mediaContainer: { @@ -17,9 +18,14 @@ let value: MediaContainerWithHubs = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -27,9 +33,12 @@ let value: MediaContainerWithHubs = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -40,6 +49,7 @@ let value: MediaContainerWithHubs = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,6 +60,7 @@ let value: MediaContainerWithHubs = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -57,16 +68,16 @@ let value: MediaContainerWithHubs = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -83,46 +94,72 @@ let value: MediaContainerWithHubs = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -135,9 +172,12 @@ let value: MediaContainerWithHubs = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,6 +188,7 @@ let value: MediaContainerWithHubs = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -155,9 +196,12 @@ let value: MediaContainerWithHubs = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithhubsmediacontainer.md b/docs/sdk/models/shared/mediacontainerwithhubsmediacontainer.md index f76c9633..a96e24e8 100644 --- a/docs/sdk/models/shared/mediacontainerwithhubsmediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithhubsmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithHubsMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithHubsMediaContainer = { hub: [ @@ -19,9 +20,14 @@ let value: MediaContainerWithHubsMediaContainer = { key: "/hubs/sections/home/onDeck", metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -29,9 +35,12 @@ let value: MediaContainerWithHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +51,7 @@ let value: MediaContainerWithHubsMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,6 +62,7 @@ let value: MediaContainerWithHubsMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -59,16 +70,16 @@ let value: MediaContainerWithHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -85,45 +96,71 @@ let value: MediaContainerWithHubsMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -136,9 +173,12 @@ let value: MediaContainerWithHubsMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,6 +189,7 @@ let value: MediaContainerWithHubsMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -156,9 +197,12 @@ let value: MediaContainerWithHubsMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithmetadata.md b/docs/sdk/models/shared/mediacontainerwithmetadata.md index 609373c0..1f6d423f 100644 --- a/docs/sdk/models/shared/mediacontainerwithmetadata.md +++ b/docs/sdk/models/shared/mediacontainerwithmetadata.md @@ -4,14 +4,20 @@ ```typescript import { MediaContainerWithMetadata } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithMetadata = { mediaContainer: { metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -19,9 +25,12 @@ let value: MediaContainerWithMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -32,6 +41,7 @@ let value: MediaContainerWithMetadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +52,7 @@ let value: MediaContainerWithMetadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -49,16 +60,16 @@ let value: MediaContainerWithMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -75,45 +86,71 @@ let value: MediaContainerWithMetadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -126,9 +163,12 @@ let value: MediaContainerWithMetadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -139,6 +179,7 @@ let value: MediaContainerWithMetadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -146,9 +187,12 @@ let value: MediaContainerWithMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithmetadatamediacontainer.md b/docs/sdk/models/shared/mediacontainerwithmetadatamediacontainer.md index bf797dff..906c836f 100644 --- a/docs/sdk/models/shared/mediacontainerwithmetadatamediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithmetadatamediacontainer.md @@ -9,13 +9,19 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithMetadataMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithMetadataMediaContainer = { metadata: [ { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MediaContainerWithMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MediaContainerWithMetadataMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MediaContainerWithMetadataMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MediaContainerWithMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithMetadataMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithMetadataMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithMetadataMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithnestedmetadata.md b/docs/sdk/models/shared/mediacontainerwithnestedmetadata.md index 77799e44..1a92ad6b 100644 --- a/docs/sdk/models/shared/mediacontainerwithnestedmetadata.md +++ b/docs/sdk/models/shared/mediacontainerwithnestedmetadata.md @@ -4,14 +4,20 @@ ```typescript import { MediaContainerWithNestedMetadata } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithNestedMetadata = { mediaContainer: { metadataItem: [ { + title: "", + type: "", + addedAt: 13601, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -19,9 +25,12 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -32,6 +41,7 @@ let value: MediaContainerWithNestedMetadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +52,7 @@ let value: MediaContainerWithNestedMetadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -49,16 +60,16 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -75,45 +86,71 @@ let value: MediaContainerWithNestedMetadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -126,9 +163,12 @@ let value: MediaContainerWithNestedMetadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -139,6 +179,7 @@ let value: MediaContainerWithNestedMetadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -146,9 +187,12 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -158,9 +202,14 @@ let value: MediaContainerWithNestedMetadata = { ], metadataItem: [ { + title: "", + type: "", + addedAt: 799579, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -168,9 +217,12 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -181,6 +233,7 @@ let value: MediaContainerWithNestedMetadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -191,6 +244,7 @@ let value: MediaContainerWithNestedMetadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -198,16 +252,16 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -224,46 +278,72 @@ let value: MediaContainerWithNestedMetadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -276,9 +356,12 @@ let value: MediaContainerWithNestedMetadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -289,6 +372,7 @@ let value: MediaContainerWithNestedMetadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -296,9 +380,12 @@ let value: MediaContainerWithNestedMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithnestedmetadataguid.md b/docs/sdk/models/shared/mediacontainerwithnestedmetadataguid.md new file mode 100644 index 00000000..c6a9f049 --- /dev/null +++ b/docs/sdk/models/shared/mediacontainerwithnestedmetadataguid.md @@ -0,0 +1,18 @@ +# MediaContainerWithNestedMetadataGuid + +## Example Usage + +```typescript +import { MediaContainerWithNestedMetadataGuid } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaContainerWithNestedMetadataGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithnestedmetadatamediacontainer.md b/docs/sdk/models/shared/mediacontainerwithnestedmetadatamediacontainer.md index 7d40f450..69f4b798 100644 --- a/docs/sdk/models/shared/mediacontainerwithnestedmetadatamediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithnestedmetadatamediacontainer.md @@ -9,13 +9,19 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithNestedMetadataMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithNestedMetadataMediaContainer = { metadataItem: [ { + title: "", + type: "", + addedAt: 13601, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -162,9 +206,14 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { ], metadataItem: [ { + title: "", + type: "", + addedAt: 799579, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -172,9 +221,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -185,6 +237,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -195,6 +248,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -202,16 +256,16 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -228,45 +282,71 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -279,9 +359,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -292,6 +375,7 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -299,9 +383,12 @@ let value: MediaContainerWithNestedMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithplaylistmetadata.md b/docs/sdk/models/shared/mediacontainerwithplaylistmetadata.md index 670a8825..0b971b4c 100644 --- a/docs/sdk/models/shared/mediacontainerwithplaylistmetadata.md +++ b/docs/sdk/models/shared/mediacontainerwithplaylistmetadata.md @@ -4,14 +4,21 @@ ```typescript import { MediaContainerWithPlaylistMetadata } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithPlaylistMetadata = { mediaContainer: { metadata: [ { + key: "", + title: "", + type: "", + addedAt: 465462, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -19,9 +26,12 @@ let value: MediaContainerWithPlaylistMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -32,6 +42,7 @@ let value: MediaContainerWithPlaylistMetadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -42,6 +53,7 @@ let value: MediaContainerWithPlaylistMetadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -49,16 +61,15 @@ let value: MediaContainerWithPlaylistMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -75,45 +86,71 @@ let value: MediaContainerWithPlaylistMetadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -126,9 +163,12 @@ let value: MediaContainerWithPlaylistMetadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -139,6 +179,7 @@ let value: MediaContainerWithPlaylistMetadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -146,9 +187,12 @@ let value: MediaContainerWithPlaylistMetadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithplaylistmetadataguid.md b/docs/sdk/models/shared/mediacontainerwithplaylistmetadataguid.md new file mode 100644 index 00000000..6c19fa72 --- /dev/null +++ b/docs/sdk/models/shared/mediacontainerwithplaylistmetadataguid.md @@ -0,0 +1,18 @@ +# MediaContainerWithPlaylistMetadataGuid + +## Example Usage + +```typescript +import { MediaContainerWithPlaylistMetadataGuid } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaContainerWithPlaylistMetadataGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithplaylistmetadatamediacontainer.md b/docs/sdk/models/shared/mediacontainerwithplaylistmetadatamediacontainer.md index a276ce80..f923909c 100644 --- a/docs/sdk/models/shared/mediacontainerwithplaylistmetadatamediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithplaylistmetadatamediacontainer.md @@ -9,13 +9,20 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithPlaylistMetadataMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithPlaylistMetadataMediaContainer = { metadata: [ { + key: "", + title: "", + type: "", + addedAt: 465462, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +30,12 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +46,7 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +57,7 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +65,15 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithPlaylistMetadataMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithplaylistmetadatametadatum.md b/docs/sdk/models/shared/mediacontainerwithplaylistmetadatametadatum.md index 7ae7ec38..333ace95 100644 --- a/docs/sdk/models/shared/mediacontainerwithplaylistmetadatametadatum.md +++ b/docs/sdk/models/shared/mediacontainerwithplaylistmetadatametadatum.md @@ -11,11 +11,18 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { MediaContainerWithPlaylistMetadataMetadatum } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithPlaylistMetadataMetadatum = { + key: "", + title: "", + type: "", + addedAt: 882034, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +30,12 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +46,7 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +57,7 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +65,15 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -165,77 +209,81 @@ let value: MediaContainerWithPlaylistMetadataMetadatum = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `readOnly` | *boolean* | :heavy_minus_sign: | If we return this as true then this playlist cannot be altered or deleted directly by the client. | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `playlistType` | [shared.PlaylistType](../../../sdk/models/shared/playlisttype.md) | :heavy_minus_sign: | The type of the playlist. | -| `smart` | *boolean* | :heavy_minus_sign: | Whether or not the playlist is smart. | -| `specialPlaylistType` | *string* | :heavy_minus_sign: | If this is a special playlist, this returns its type (e.g. favorites). | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `readOnly` | *boolean* | :heavy_minus_sign: | If we return this as true then this playlist cannot be altered or deleted directly by the client. | | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `playlistType` | [shared.PlaylistType](../../../sdk/models/shared/playlisttype.md) | :heavy_minus_sign: | The type of the playlist. | | +| `smart` | *boolean* | :heavy_minus_sign: | Whether or not the playlist is smart. | | +| `specialPlaylistType` | *string* | :heavy_minus_sign: | If this is a special playlist, this returns its type (e.g. favorites). | | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [shared.MediaContainerWithPlaylistMetadataGuid](../../../sdk/models/shared/mediacontainerwithplaylistmetadataguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediacontainerwithsubscription.md b/docs/sdk/models/shared/mediacontainerwithsubscription.md index 8a7ba494..9335a134 100644 --- a/docs/sdk/models/shared/mediacontainerwithsubscription.md +++ b/docs/sdk/models/shared/mediacontainerwithsubscription.md @@ -4,6 +4,7 @@ ```typescript import { MediaContainerWithSubscription } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithSubscription = { mediaContainer: { @@ -12,9 +13,14 @@ let value: MediaContainerWithSubscription = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: MediaContainerWithSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: MediaContainerWithSubscription = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: MediaContainerWithSubscription = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: MediaContainerWithSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,46 +89,72 @@ let value: MediaContainerWithSubscription = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MediaContainerWithSubscription = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MediaContainerWithSubscription = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MediaContainerWithSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediacontainerwithsubscriptionmediacontainer.md b/docs/sdk/models/shared/mediacontainerwithsubscriptionmediacontainer.md index 53b7b019..8268b63a 100644 --- a/docs/sdk/models/shared/mediacontainerwithsubscriptionmediacontainer.md +++ b/docs/sdk/models/shared/mediacontainerwithsubscriptionmediacontainer.md @@ -9,6 +9,7 @@ The container often "hoists" common attributes from its children. For example, i ```typescript import { MediaContainerWithSubscriptionMediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaContainerWithSubscriptionMediaContainer = { mediaSubscription: [ @@ -16,9 +17,14 @@ let value: MediaContainerWithSubscriptionMediaContainer = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -26,9 +32,12 @@ let value: MediaContainerWithSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -39,6 +48,7 @@ let value: MediaContainerWithSubscriptionMediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -49,6 +59,7 @@ let value: MediaContainerWithSubscriptionMediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -56,16 +67,16 @@ let value: MediaContainerWithSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -82,46 +93,72 @@ let value: MediaContainerWithSubscriptionMediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -134,9 +171,12 @@ let value: MediaContainerWithSubscriptionMediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -147,6 +187,7 @@ let value: MediaContainerWithSubscriptionMediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -154,9 +195,12 @@ let value: MediaContainerWithSubscriptionMediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediagraboperation.md b/docs/sdk/models/shared/mediagraboperation.md index fda5fda5..27194011 100644 --- a/docs/sdk/models/shared/mediagraboperation.md +++ b/docs/sdk/models/shared/mediagraboperation.md @@ -7,12 +7,18 @@ A media grab opration represents a scheduled or active recording of media ```typescript import { MediaGrabOperation } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaGrabOperation = { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -20,9 +26,12 @@ let value: MediaGrabOperation = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -33,6 +42,7 @@ let value: MediaGrabOperation = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -43,6 +53,7 @@ let value: MediaGrabOperation = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -50,16 +61,16 @@ let value: MediaGrabOperation = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -76,45 +87,71 @@ let value: MediaGrabOperation = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -127,9 +164,12 @@ let value: MediaGrabOperation = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -140,6 +180,7 @@ let value: MediaGrabOperation = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -147,9 +188,12 @@ let value: MediaGrabOperation = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -175,4 +219,4 @@ let value: MediaGrabOperation = { | `metadata` | [shared.Metadata](../../../sdk/models/shared/metadata.md) | :heavy_minus_sign: | Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.

Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.

Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
| | `percent` | *number* | :heavy_minus_sign: | N/A | | `provider` | *string* | :heavy_minus_sign: | N/A | -| `status` | [shared.Status](../../../sdk/models/shared/status.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| `status` | [shared.MediaGrabOperationStatus](../../../sdk/models/shared/mediagraboperationstatus.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/shared/status.md b/docs/sdk/models/shared/mediagraboperationstatus.md similarity index 71% rename from docs/sdk/models/shared/status.md rename to docs/sdk/models/shared/mediagraboperationstatus.md index cf1415ef..a21245e1 100644 --- a/docs/sdk/models/shared/status.md +++ b/docs/sdk/models/shared/mediagraboperationstatus.md @@ -1,11 +1,11 @@ -# Status +# MediaGrabOperationStatus ## Example Usage ```typescript -import { Status } from "@lukehagar/plexjs/sdk/models/shared"; +import { MediaGrabOperationStatus } from "@lukehagar/plexjs/sdk/models/shared"; -let value: Status = Status.Error; +let value: MediaGrabOperationStatus = MediaGrabOperationStatus.Error; ``` ## Values diff --git a/docs/sdk/models/shared/mediaquery.md b/docs/sdk/models/shared/mediaquery.md index 0687e2fc..ada25943 100644 --- a/docs/sdk/models/shared/mediaquery.md +++ b/docs/sdk/models/shared/mediaquery.md @@ -1,14 +1,28 @@ # MediaQuery +A querystring-based filtering language used to select subsets of media. When provided as an object, properties are serialized as a querystring using form style with explode. + +Only the defined properties below are allowed. The object serializes to a querystring format like: `type=4&sourceType=2&sort=duration:desc,index` + + ## Example Usage ```typescript -import { MediaQuery } from "@lukehagar/plexjs/sdk/models/shared"; +import { MediaQuery, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; -let value: MediaQuery = {}; +let value: MediaQuery = { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", +}; ``` ## Fields -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [shared.MediaType](../../../sdk/models/shared/mediatype.md) | :heavy_minus_sign: | The type of media to retrieve or filter by.

1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo

E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `sourceType` | *number* | :heavy_minus_sign: | Change the default level to which fields refer (used with type for hierarchical queries) | | +| `sort` | *string* | :heavy_minus_sign: | Field(s) to sort by, with optional modifiers. Use comma to separate multiple fields, and :desc or :nullsLast for modifiers (e.g., "duration:desc,index") | | +| `group` | *string* | :heavy_minus_sign: | Field to group results by (similar to SQL GROUP BY) | | +| `limit` | *number* | :heavy_minus_sign: | Maximum number of results to return | | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediareviewsvisibility.md b/docs/sdk/models/shared/mediareviewsvisibility.md new file mode 100644 index 00000000..0a496d67 --- /dev/null +++ b/docs/sdk/models/shared/mediareviewsvisibility.md @@ -0,0 +1,20 @@ +# MediaReviewsVisibility + +Whether or not the account has media reviews visibility enabled + +## Example Usage + +```typescript +import { MediaReviewsVisibility } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaReviewsVisibility = MediaReviewsVisibility.CriticsOnly; +``` + +## Values + +| Name | Value | +| --------------------- | --------------------- | +| `NoOne` | 0 | +| `CriticsOnly` | 1 | +| `PlexUsersOnly` | 2 | +| `PlexUsersAndCritics` | 3 | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediasubscription.md b/docs/sdk/models/shared/mediasubscription.md index 3683c9c4..19a6ec32 100644 --- a/docs/sdk/models/shared/mediasubscription.md +++ b/docs/sdk/models/shared/mediasubscription.md @@ -7,14 +7,20 @@ A media subscription contains a representation of metadata desired to be recorde ```typescript import { MediaSubscription } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MediaSubscription = { mediaGrabOperation: [ { metadata: { + title: "", + type: "", + addedAt: 3539, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -22,9 +28,12 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -35,6 +44,7 @@ let value: MediaSubscription = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -45,6 +55,7 @@ let value: MediaSubscription = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -52,16 +63,16 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -78,45 +89,71 @@ let value: MediaSubscription = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -129,9 +166,12 @@ let value: MediaSubscription = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -142,6 +182,7 @@ let value: MediaSubscription = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -149,9 +190,12 @@ let value: MediaSubscription = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/mediatype.md b/docs/sdk/models/shared/mediatype.md new file mode 100644 index 00000000..6a7e94a8 --- /dev/null +++ b/docs/sdk/models/shared/mediatype.md @@ -0,0 +1,38 @@ +# MediaType + +The type of media to retrieve or filter by. + +1 = movie +2 = show +3 = season +4 = episode +5 = artist +6 = album +7 = track +8 = photo_album +9 = photo + +E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + +## Example Usage + +```typescript +import { MediaType } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaType = MediaType.TvShow; +``` + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Movie` | 1 | +| `TvShow` | 2 | +| `Season` | 3 | +| `Episode` | 4 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | \ No newline at end of file diff --git a/docs/sdk/models/shared/mediatypestring.md b/docs/sdk/models/shared/mediatypestring.md new file mode 100644 index 00000000..ffc4ce37 --- /dev/null +++ b/docs/sdk/models/shared/mediatypestring.md @@ -0,0 +1,27 @@ +# MediaTypeString + +The type of media content in the Plex library. This can represent videos, music, or photos. + + +## Example Usage + +```typescript +import { MediaTypeString } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MediaTypeString = MediaTypeString.Movie; +``` + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Movie` | movie | +| `TvShow` | show | +| `Season` | season | +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | \ No newline at end of file diff --git a/docs/sdk/models/shared/metadata.md b/docs/sdk/models/shared/metadata.md index eed36cd5..aeb12f72 100644 --- a/docs/sdk/models/shared/metadata.md +++ b/docs/sdk/models/shared/metadata.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { Metadata } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: Metadata = { + title: "", + type: "", + addedAt: 29550, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: Metadata = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: Metadata = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: Metadata = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: Metadata = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: Metadata = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: Metadata = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -165,73 +209,77 @@ let value: Metadata = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [shared.MetadataGuid](../../../sdk/models/shared/metadataguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/metadataguid.md b/docs/sdk/models/shared/metadataguid.md new file mode 100644 index 00000000..d2311792 --- /dev/null +++ b/docs/sdk/models/shared/metadataguid.md @@ -0,0 +1,18 @@ +# MetadataGuid + +## Example Usage + +```typescript +import { MetadataGuid } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: MetadataGuid = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/shared/metadataitem.md b/docs/sdk/models/shared/metadataitem.md index da45eee9..a77615a3 100644 --- a/docs/sdk/models/shared/metadataitem.md +++ b/docs/sdk/models/shared/metadataitem.md @@ -11,11 +11,17 @@ Metadata items can often live in a hierarchy with relationships between them. F ```typescript import { MetadataItem } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: MetadataItem = { + title: "", + type: "", + addedAt: 13601, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -23,9 +29,12 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -36,6 +45,7 @@ let value: MetadataItem = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -46,6 +56,7 @@ let value: MetadataItem = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -53,16 +64,16 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -79,45 +90,71 @@ let value: MetadataItem = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -130,9 +167,12 @@ let value: MetadataItem = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -143,6 +183,7 @@ let value: MetadataItem = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -150,9 +191,12 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -162,9 +206,14 @@ let value: MetadataItem = { ], metadataItem: [ { + title: "", + type: "", + addedAt: 799579, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -172,9 +221,12 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -185,6 +237,7 @@ let value: MetadataItem = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -195,6 +248,7 @@ let value: MetadataItem = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -202,16 +256,16 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -228,45 +282,71 @@ let value: MetadataItem = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -279,9 +359,12 @@ let value: MetadataItem = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -292,6 +375,7 @@ let value: MetadataItem = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -299,9 +383,12 @@ let value: MetadataItem = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -316,74 +403,78 @@ let value: MetadataItem = { ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `title` | *any* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | -| `type` | *any* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | -| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | -| `addedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | -| `art` | *any* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | -| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | -| `audienceRatingImage` | *any* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | -| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `banner` | *any* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | -| `chapterSource` | *any* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | -| `composite` | *any* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | -| `contentRating` | *any* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | -| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | -| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | -| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | -| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | -| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | -| `guid` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `hero` | *any* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | -| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | -| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | -| `key` | *any* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | -| `lastViewedAt` | *number* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | -| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | -| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | -| `originallyAvailableAt` | *any* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | -| `originalTitle` | *any* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | -| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | -| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | -| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | -| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | -| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | -| `primaryExtraKey` | *any* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | -| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | -| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | -| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | -| `ratingImage` | *any* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | -| `ratingKey` | *any* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | -| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | -| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | -| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | -| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | -| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | -| `studio` | *any* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | -| `subtype` | *any* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | -| `summary` | *any* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | -| `tagline` | *any* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | -| `theme` | *any* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | -| `thumb` | *any* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | -| `titleSort` | *any* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | -| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | -| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | -| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | -| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | -| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | -| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | -| `metadataItem` | [shared.Items](../../../sdk/models/shared/items.md)[] | :heavy_minus_sign: | N/A | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *string* | :heavy_check_mark: | The title of the item (e.g. “300” or “The Simpsons”) | | +| `type` | *string* | :heavy_check_mark: | The type of the video item, such as `movie`, `episode`, or `clip`. | | +| `absoluteIndex` | *number* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | | +| `addedAt` | *number* | :heavy_check_mark: | In units of seconds since the epoch, returns the time at which the item was added to the library. | | +| `art` | *string* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | /library/metadata/58683/art/1703239236 | +| `audienceRating` | *number* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | | +| `autotag` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `banner` | *string* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | | +| `chapterSource` | *string* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | media | +| `childCount` | *number* | :heavy_minus_sign: | The number of child items associated with this media item. | 1 | +| `composite` | *string* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | | +| `contentRating` | *string* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | | +| `country` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `duration` | *number* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | | +| `filter` | [shared.Filter](../../../sdk/models/shared/filter.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `genre` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `grandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | | +| `grandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | | +| `guid` | *string* | :heavy_minus_sign: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `guids` | [shared.MediaContainerWithNestedMetadataGuid](../../../sdk/models/shared/mediacontainerwithnestedmetadataguid.md)[] | :heavy_minus_sign: | N/A | | +| `hero` | *string* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | | +| `image` | [shared.Image](../../../sdk/models/shared/image.md)[] | :heavy_minus_sign: | N/A | | +| `index` | *number* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | | +| `key` | *string* | :heavy_check_mark: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | | +| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `leafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | | +| `media` | [shared.Media](../../../sdk/models/shared/media.md)[] | :heavy_minus_sign: | N/A | | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | 2022-12-14 | +| `originalTitle` | *string* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | | +| `parentIndex` | *number* | :heavy_minus_sign: | The `index` of the parent | | +| `parentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | | +| `parentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | | +| `parentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | | +| `prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | | +| `rating` | *number* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | | +| `ratingArray` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `ratingCount` | *number* | :heavy_minus_sign: | Number of ratings under this metadata | | +| `ratingImage` | *string* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | | +| `ratingKey` | *string* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | | +| `role` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `search` | *boolean* | :heavy_minus_sign: | Indicates this is a search directory | | +| `secondary` | *boolean* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | | +| `skipChildren` | *boolean* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | | +| `skipParent` | *boolean* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | | +| `sort` | [shared.Sort](../../../sdk/models/shared/sort.md)[] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | | +| `studio` | *string* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | | +| `subtype` | *string* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | | +| `summary` | *string* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | | +| `tagline` | *string* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | | +| `theme` | *string* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | /library/metadata/1/theme/1705636920 | +| `thumb` | *string* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | /library/metadata/58683/thumb/1703239236 | +| `titleSort` | *string* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | | +| `updatedAt` | *number* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | | +| `userRating` | *number* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | | +| `viewCount` | *number* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | | +| `viewOffset` | *number* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | | +| `writer` | [shared.Tag](../../../sdk/models/shared/tag.md)[] | :heavy_minus_sign: | N/A | | +| `year` | *number* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | | +| `metadataItem` | [shared.Items](../../../sdk/models/shared/items.md)[] | :heavy_minus_sign: | N/A | | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/part.md b/docs/sdk/models/shared/part.md index f9b1529e..29448d0a 100644 --- a/docs/sdk/models/shared/part.md +++ b/docs/sdk/models/shared/part.md @@ -9,45 +9,71 @@ import { Part } from "@lukehagar/plexjs/sdk/models/shared"; let value: Part = { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -58,15 +84,18 @@ let value: Part = { | Field | Type | Required | Description | Example | | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `audioProfile` | *any* | :heavy_minus_sign: | N/A | lc | -| `container` | *any* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `audioProfile` | *string* | :heavy_minus_sign: | N/A | lc | +| `container` | *string* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | | `duration` | *number* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | -| `file` | *any* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `file` | *string* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | | `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | -| `key` | *any* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `id` | *number* | :heavy_check_mark: | N/A | 1 | +| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `key` | *string* | :heavy_check_mark: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | | `optimizedForStreaming` | *boolean* | :heavy_minus_sign: | N/A | false | | `size` | *number* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | | `stream` | [shared.Stream](../../../sdk/models/shared/stream.md)[] | :heavy_minus_sign: | N/A | | -| `videoProfile` | *any* | :heavy_minus_sign: | N/A | main | +| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main | | `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/plexdevice.md b/docs/sdk/models/shared/plexdevice.md new file mode 100644 index 00000000..2d057cf4 --- /dev/null +++ b/docs/sdk/models/shared/plexdevice.md @@ -0,0 +1,73 @@ +# PlexDevice + +## Example Usage + +```typescript +import { PlexDevice, PlexDeviceProtocol } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: PlexDevice = { + name: "", + product: "Incredible Steel Chair", + productVersion: "", + platform: "", + platformVersion: "", + device: "Desktop", + clientIdentifier: "", + createdAt: new Date("2019-06-24T11:38:02Z"), + lastSeenAt: new Date("2019-06-24T11:38:02Z"), + provides: "", + ownerId: null, + sourceTitle: "", + publicAddress: "", + accessToken: "", + owned: false, + home: false, + synced: false, + relay: false, + presence: false, + httpsRequired: false, + publicAddressMatches: false, + dnsRebindingProtection: true, + natLoopbackSupported: true, + connections: [ + { + protocol: PlexDeviceProtocol.Http, + address: "5668 Phyllis Manor", + port: 811641, + uri: "https://frail-merit.biz", + local: false, + relay: false, + iPv6: true, + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | N/A | | +| `product` | *string* | :heavy_check_mark: | N/A | | +| `productVersion` | *string* | :heavy_check_mark: | N/A | | +| `platform` | *string* | :heavy_check_mark: | N/A | | +| `platformVersion` | *string* | :heavy_check_mark: | N/A | | +| `device` | *string* | :heavy_check_mark: | N/A | | +| `clientIdentifier` | *string* | :heavy_check_mark: | N/A | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | +| `lastSeenAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | +| `provides` | *string* | :heavy_check_mark: | N/A | | +| `ownerId` | *number* | :heavy_check_mark: | ownerId is null when the device is owned by the token used to send the request | | +| `sourceTitle` | *string* | :heavy_check_mark: | N/A | | +| `publicAddress` | *string* | :heavy_check_mark: | N/A | | +| `accessToken` | *string* | :heavy_check_mark: | N/A | | +| `owned` | *boolean* | :heavy_check_mark: | N/A | | +| `home` | *boolean* | :heavy_check_mark: | N/A | | +| `synced` | *boolean* | :heavy_check_mark: | N/A | | +| `relay` | *boolean* | :heavy_check_mark: | N/A | | +| `presence` | *boolean* | :heavy_check_mark: | N/A | | +| `httpsRequired` | *boolean* | :heavy_check_mark: | N/A | | +| `publicAddressMatches` | *boolean* | :heavy_check_mark: | N/A | | +| `dnsRebindingProtection` | *boolean* | :heavy_check_mark: | N/A | | +| `natLoopbackSupported` | *boolean* | :heavy_check_mark: | N/A | | +| `connections` | [shared.Connection](../../../sdk/models/shared/connection.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/plexdeviceprotocol.md b/docs/sdk/models/shared/plexdeviceprotocol.md new file mode 100644 index 00000000..3e1366d6 --- /dev/null +++ b/docs/sdk/models/shared/plexdeviceprotocol.md @@ -0,0 +1,18 @@ +# PlexDeviceProtocol + +The protocol used for the connection (http, https, etc) + +## Example Usage + +```typescript +import { PlexDeviceProtocol } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: PlexDeviceProtocol = PlexDeviceProtocol.Http; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `Http` | http | +| `Https` | https | \ No newline at end of file diff --git a/docs/sdk/models/shared/protocol.md b/docs/sdk/models/shared/protocolparameter.md similarity index 50% rename from docs/sdk/models/shared/protocol.md rename to docs/sdk/models/shared/protocolparameter.md index 4571fcf5..60ddea2a 100644 --- a/docs/sdk/models/shared/protocol.md +++ b/docs/sdk/models/shared/protocolparameter.md @@ -1,11 +1,11 @@ -# Protocol +# ProtocolParameter ## Example Usage ```typescript -import { Protocol } from "@lukehagar/plexjs/sdk/models/shared"; +import { ProtocolParameter } from "@lukehagar/plexjs/sdk/models/shared"; -let value: Protocol = Protocol.Dash; +let value: ProtocolParameter = ProtocolParameter.Dash; ``` ## Values diff --git a/docs/sdk/models/shared/service.md b/docs/sdk/models/shared/service.md new file mode 100644 index 00000000..357fc100 --- /dev/null +++ b/docs/sdk/models/shared/service.md @@ -0,0 +1,25 @@ +# Service + +## Example Usage + +```typescript +import { Service, ServiceStatus } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: Service = { + identifier: "metadata-dev", + endpoint: "https://epg.provider.plex.tv", + token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", + secret: "", + status: ServiceStatus.Online, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `identifier` | *string* | :heavy_check_mark: | N/A | metadata-dev | +| `endpoint` | *string* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | +| `token` | *string* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | +| `secret` | *string* | :heavy_check_mark: | N/A | | +| `status` | [shared.ServiceStatus](../../../sdk/models/shared/servicestatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/sdk/models/shared/servicestatus.md b/docs/sdk/models/shared/servicestatus.md new file mode 100644 index 00000000..5b46b2e6 --- /dev/null +++ b/docs/sdk/models/shared/servicestatus.md @@ -0,0 +1,19 @@ +# ServiceStatus + +## Example Usage + +```typescript +import { ServiceStatus } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: ServiceStatus = ServiceStatus.Online; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Online` | online | +| `Offline` | offline | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/shared/slashgetresponses200.md b/docs/sdk/models/shared/slashgetresponses200.md index 981b9ba7..5d8873c4 100644 --- a/docs/sdk/models/shared/slashgetresponses200.md +++ b/docs/sdk/models/shared/slashgetresponses200.md @@ -6,14 +6,20 @@ OK ```typescript import { SlashGetResponses200 } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SlashGetResponses200 = { mediaContainer: { directory: [ { + title: "", + type: "", + addedAt: 871584, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -21,9 +27,12 @@ let value: SlashGetResponses200 = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -34,6 +43,7 @@ let value: SlashGetResponses200 = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -44,6 +54,7 @@ let value: SlashGetResponses200 = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -51,16 +62,16 @@ let value: SlashGetResponses200 = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -77,45 +88,71 @@ let value: SlashGetResponses200 = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -128,9 +165,12 @@ let value: SlashGetResponses200 = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -141,6 +181,7 @@ let value: SlashGetResponses200 = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -148,9 +189,12 @@ let value: SlashGetResponses200 = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/slashgetresponses200mediacontainer.md b/docs/sdk/models/shared/slashgetresponses200mediacontainer.md index 7fdde669..1af9b6b8 100644 --- a/docs/sdk/models/shared/slashgetresponses200mediacontainer.md +++ b/docs/sdk/models/shared/slashgetresponses200mediacontainer.md @@ -4,13 +4,19 @@ ```typescript import { SlashGetResponses200MediaContainer } from "@lukehagar/plexjs/sdk/models/shared"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SlashGetResponses200MediaContainer = { directory: [ { + title: "", + type: "", + addedAt: 871584, + art: "/library/metadata/58683/art/1703239236", autotag: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -18,9 +24,12 @@ let value: SlashGetResponses200MediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + chapterSource: "media", + childCount: 1, country: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -31,6 +40,7 @@ let value: SlashGetResponses200MediaContainer = { director: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -41,6 +51,7 @@ let value: SlashGetResponses200MediaContainer = { genre: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -48,16 +59,16 @@ let value: SlashGetResponses200MediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], - guid: [ + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + guid: "plex://movie/5d7768ba96b655001fdc0408", + guids: [ { - filter: "actor=49", - role: "Secretary", - tag: "Shaun Lawton", - tagKey: "5d3ee12c4cde6a001c3e0b27", - thumb: - "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }, ], + key: "", + lastViewedAt: 1556281940, media: [ { aspectRatio: 2.35, @@ -74,45 +85,71 @@ let value: SlashGetResponses200MediaContainer = { optimizedForStreaming: false, part: [ { + accessible: true, audioProfile: "lc", container: "mov", duration: 150192, + exists: true, file: "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", has64bitOffsets: false, id: 1, + indexes: "sd", key: "/library/parts/1/1531779263/file.mov", optimizedForStreaming: false, size: 105355654, stream: [ { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }, ], videoProfile: "main", @@ -125,9 +162,12 @@ let value: SlashGetResponses200MediaContainer = { width: 1280, }, ], + originallyAvailableAt: new RFCDate("2022-12-14"), + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", ratingArray: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -138,6 +178,7 @@ let value: SlashGetResponses200MediaContainer = { role: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -145,9 +186,12 @@ let value: SlashGetResponses200MediaContainer = { "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg", }, ], + theme: "/library/metadata/1/theme/1705636920", + thumb: "/library/metadata/58683/thumb/1703239236", writer: [ { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", diff --git a/docs/sdk/models/shared/stream.md b/docs/sdk/models/shared/stream.md index f22952a8..3344f81e 100644 --- a/docs/sdk/models/shared/stream.md +++ b/docs/sdk/models/shared/stream.md @@ -10,67 +10,113 @@ import { Stream } from "@lukehagar/plexjs/sdk/models/shared"; let value: Stream = { default: true, - audioChannelLayout: "stereo", - bitDepth: 8, - bitrate: 5466, - canAutoSync: true, + audioChannelLayout: "5.1(side)", + channels: 6, + bitDepth: 10, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitrate: 24743, + canAutoSync: false, chromaLocation: "topleft", chromaSubsampling: "4:2:0", - codec: "h264", - colorPrimaries: "bt709", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + codec: "hevc", + colorPrimaries: "bt2020", colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - displayTitle: "English (H.264 Main)", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", frameRate: 23.976, hasScalingMatrix: false, - height: 544, - id: 1, + height: 1602, + id: 1002625, index: 0, - key: "/library/streams/1", + key: "/library/streams/216389", language: "English", languageCode: "eng", - level: 31, - profile: "main", - refFrames: 2, + languageTag: "en", + format: "srt", + headerCompression: true, + level: 150, + original: true, + profile: "main 10", + refFrames: 1, samplingRate: 48000, + scanType: "progressive", + embeddedInVideo: "progressive", + selected: true, + forced: true, + hearingImpaired: true, + dub: true, + title: "SDH", streamIdentifier: 1, - streamType: 1, - width: 1280, + width: 3840, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `default` | *boolean* | :heavy_minus_sign: | N/A | true | -| `audioChannelLayout` | *any* | :heavy_minus_sign: | N/A | stereo | -| `bitDepth` | *number* | :heavy_minus_sign: | N/A | 8 | -| `bitrate` | *number* | :heavy_minus_sign: | N/A | 5466 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | -| `chromaLocation` | *any* | :heavy_minus_sign: | N/A | topleft | -| `chromaSubsampling` | *any* | :heavy_minus_sign: | N/A | 4:2:0 | -| `codec` | *any* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | -| `colorPrimaries` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `colorRange` | *any* | :heavy_minus_sign: | N/A | tv | -| `colorSpace` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `colorTrc` | *any* | :heavy_minus_sign: | N/A | bt709 | -| `displayTitle` | *any* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | -| `frameRate` | *number* | :heavy_minus_sign: | N/A | 23.976 | -| `hasScalingMatrix` | *any* | :heavy_minus_sign: | N/A | false | -| `height` | *number* | :heavy_minus_sign: | N/A | 544 | -| `id` | *number* | :heavy_minus_sign: | N/A | 1 | -| `index` | *number* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | -| `key` | *any* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | -| `language` | *any* | :heavy_minus_sign: | N/A | English | -| `languageCode` | *any* | :heavy_minus_sign: | The three character language code for the stream contents | eng | -| `level` | *number* | :heavy_minus_sign: | N/A | 31 | -| `profile` | *any* | :heavy_minus_sign: | N/A | main | -| `refFrames` | *number* | :heavy_minus_sign: | N/A | 2 | -| `samplingRate` | *number* | :heavy_minus_sign: | N/A | 48000 | -| `selected` | *boolean* | :heavy_minus_sign: | N/A | | -| `streamIdentifier` | *number* | :heavy_minus_sign: | N/A | 1 | -| `streamType` | *number* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | -| `width` | *number* | :heavy_minus_sign: | N/A | 1280 | -| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_minus_sign: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `key` | *string* | :heavy_check_mark: | Key to access this stream part. | /library/streams/216389 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | +| `streamIdentifier` | *number* | :heavy_minus_sign: | N/A | 1 | +| `streamType` | *number* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `additionalProperties` | Record | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/subscription1.md b/docs/sdk/models/shared/subscription1.md new file mode 100644 index 00000000..23f0aff8 --- /dev/null +++ b/docs/sdk/models/shared/subscription1.md @@ -0,0 +1,26 @@ +# Subscription1 + +If the account's Plex Pass subscription is active + +## Example Usage + +```typescript +import { Subscription1, SubscriptionStatus1 } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: Subscription1 = { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus1.Inactive, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `features` | *string*[] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | +| `active` | *boolean* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | +| `subscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | +| `status` | [shared.SubscriptionStatus1](../../../sdk/models/shared/subscriptionstatus1.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | +| `paymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | +| `plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/sdk/models/shared/subscription2.md b/docs/sdk/models/shared/subscription2.md new file mode 100644 index 00000000..0486247b --- /dev/null +++ b/docs/sdk/models/shared/subscription2.md @@ -0,0 +1,24 @@ +# Subscription2 + +## Example Usage + +```typescript +import { Subscription2, SubscriptionStatus2 } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: Subscription2 = { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus2.Inactive, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `features` | *string*[] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | +| `active` | *boolean* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | +| `subscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | +| `status` | [shared.SubscriptionStatus2](../../../sdk/models/shared/subscriptionstatus2.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | +| `paymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | +| `plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/sdk/models/shared/subscriptionstatus1.md b/docs/sdk/models/shared/subscriptionstatus1.md new file mode 100644 index 00000000..30616c41 --- /dev/null +++ b/docs/sdk/models/shared/subscriptionstatus1.md @@ -0,0 +1,21 @@ +# SubscriptionStatus1 + +String representation of subscriptionActive + +## Example Usage + +```typescript +import { SubscriptionStatus1 } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: SubscriptionStatus1 = SubscriptionStatus1.Inactive; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Inactive` | Inactive | +| `Active` | Active | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/shared/subscriptionstatus2.md b/docs/sdk/models/shared/subscriptionstatus2.md new file mode 100644 index 00000000..a7e92c6b --- /dev/null +++ b/docs/sdk/models/shared/subscriptionstatus2.md @@ -0,0 +1,21 @@ +# SubscriptionStatus2 + +String representation of subscriptionActive + +## Example Usage + +```typescript +import { SubscriptionStatus2 } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: SubscriptionStatus2 = SubscriptionStatus2.Inactive; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Inactive` | Inactive | +| `Active` | Active | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/shared/tag.md b/docs/sdk/models/shared/tag.md index 501eaa8f..2ef2301c 100644 --- a/docs/sdk/models/shared/tag.md +++ b/docs/sdk/models/shared/tag.md @@ -10,6 +10,7 @@ import { Tag } from "@lukehagar/plexjs/sdk/models/shared"; let value: Tag = { filter: "actor=49", + ratingKey: "58683", role: "Secretary", tag: "Shaun Lawton", tagKey: "5d3ee12c4cde6a001c3e0b27", @@ -19,15 +20,15 @@ let value: Tag = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `confidence` | *number* | :heavy_minus_sign: | Measure of the confidence of an automatic tag | | -| `context` | *string* | :heavy_minus_sign: | N/A | | -| `filter` | *any* | :heavy_minus_sign: | A filter parameter that can be used to query for more content that matches this tag value. | actor=49 | -| `id` | *number* | :heavy_minus_sign: | N/A | | -| `ratingKey` | *string* | :heavy_minus_sign: | N/A | | -| `role` | *any* | :heavy_minus_sign: | The role this actor played | Secretary | -| `tag` | *any* | :heavy_minus_sign: | The value of the tag (the name) | Shaun Lawton | -| `tagKey` | *any* | :heavy_minus_sign: | Plex identifier for this tag which can be used to fetch additional information from plex.tv | 5d3ee12c4cde6a001c3e0b27 | -| `tagType` | *number* | :heavy_minus_sign: | N/A | | -| `thumb` | *any* | :heavy_minus_sign: | N/A | http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `confidence` | *number* | :heavy_minus_sign: | Measure of the confidence of an automatic tag | | +| `context` | *string* | :heavy_minus_sign: | N/A | | +| `filter` | *string* | :heavy_minus_sign: | A filter parameter that can be used to query for more content that matches this tag value. | actor=49 | +| `id` | *number* | :heavy_minus_sign: | N/A | | +| `ratingKey` | *string* | :heavy_minus_sign: | 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. | 58683 | +| `role` | *string* | :heavy_minus_sign: | The role this actor played | Secretary | +| `tag` | *string* | :heavy_check_mark: | The value of the tag (the name) | Shaun Lawton | +| `tagKey` | *string* | :heavy_minus_sign: | Plex identifier for this tag which can be used to fetch additional information from plex.tv | 5d3ee12c4cde6a001c3e0b27 | +| `tagType` | *number* | :heavy_minus_sign: | N/A | | +| `thumb` | *string* | :heavy_minus_sign: | N/A | http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg | \ No newline at end of file diff --git a/docs/sdk/models/shared/userplexaccount.md b/docs/sdk/models/shared/userplexaccount.md new file mode 100644 index 00000000..6a6a1c17 --- /dev/null +++ b/docs/sdk/models/shared/userplexaccount.md @@ -0,0 +1,118 @@ +# UserPlexAccount + +## Example Usage + +```typescript +import { + AutoSelectSubtitle, + DefaultSubtitleAccessibility, + DefaultSubtitleForced, + MailingListStatus, + MediaReviewsVisibility, + ServiceStatus, + SubscriptionStatus1, + SubscriptionStatus2, + UserPlexAccount, + WatchedIndicator, +} from "@lukehagar/plexjs/sdk/models/shared"; + +let value: UserPlexAccount = { + adsConsentReminderAt: 1556281940, + adsConsentSetAt: 1556281940, + authToken: "CxoUzBTSV5hsxjTpFKaf", + country: "US", + email: "username@email.com", + friendlyName: "friendlyUsername", + entitlements: [], + homeSize: 1, + id: 13692262, + joinedAt: 1556281940, + mailingListStatus: MailingListStatus.Active, + maxHomeSize: 15, + profile: { + defaultAudioLanguage: "ja", + defaultAudioLanguages: null, + defaultSubtitleLanguage: "en", + defaultSubtitleLanguages: null, + autoSelectSubtitle: AutoSelectSubtitle.ShownWithForeignAudio, + defaultSubtitleAccessibility: DefaultSubtitleAccessibility.PreferSdh, + defaultSubtitleForced: DefaultSubtitleForced.PreferForced, + watchedIndicator: WatchedIndicator.MoviesAndTvShows, + mediaReviewsVisibility: MediaReviewsVisibility.CriticsOnly, + mediaReviewsLanguages: null, + }, + rememberExpiresAt: 1556281940, + services: [ + { + identifier: "metadata-dev", + endpoint: "https://epg.provider.plex.tv", + token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", + secret: "", + status: ServiceStatus.Online, + }, + ], + subscription: { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus1.Inactive, + }, + subscriptions: [ + { + active: true, + subscribedAt: "2021-04-12T18:21:12Z", + status: SubscriptionStatus2.Inactive, + }, + ], + thumb: "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", + title: "UsernameTitle", + username: "Username", + uuid: "dae343c1f45beb4f", + attributionPartner: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `adsConsent` | *boolean* | :heavy_minus_sign: | Unknown | | +| `adsConsentReminderAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `adsConsentSetAt` | *number* | :heavy_minus_sign: | N/A | 1556281940 | +| `anonymous` | *boolean* | :heavy_minus_sign: | Unknown | | +| `authToken` | *string* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | +| `backupCodesCreated` | *boolean* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | +| `confirmed` | *boolean* | :heavy_minus_sign: | If the account has been confirmed | | +| `country` | *string* | :heavy_minus_sign: | The account country | US | +| `email` | *string* | :heavy_check_mark: | The account email address | username@email.com | +| `emailOnlyAuth` | *boolean* | :heavy_minus_sign: | If login with email only is enabled | | +| `experimentalFeatures` | *boolean* | :heavy_minus_sign: | If experimental features are enabled | | +| `friendlyName` | *string* | :heavy_check_mark: | Your account full name | friendlyUsername | +| `entitlements` | *string*[] | :heavy_minus_sign: | List of devices your allowed to use with this account | [] | +| `guest` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home guest user | | +| `hasPassword` | *boolean* | :heavy_minus_sign: | If the account has a password | | +| `home` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home user | | +| `homeAdmin` | *boolean* | :heavy_minus_sign: | If the account is the Plex Home admin | | +| `homeSize` | *number* | :heavy_minus_sign: | The number of accounts in the Plex Home | 1 | +| `id` | *number* | :heavy_check_mark: | The Plex account ID | 13692262 | +| `joinedAt` | *number* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | +| `locale` | *string* | :heavy_minus_sign: | The account locale | | +| `mailingListActive` | *boolean* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | +| `mailingListStatus` | [shared.MailingListStatus](../../../sdk/models/shared/mailingliststatus.md) | :heavy_minus_sign: | Your current mailing list status | active | +| `maxHomeSize` | *number* | :heavy_minus_sign: | The maximum number of accounts allowed in the Plex Home | 15 | +| ~~`pin`~~ | *string* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | +| `profile` | [shared.UserProfile](../../../sdk/models/shared/userprofile.md) | :heavy_minus_sign: | N/A | | +| `protected` | *boolean* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | +| `rememberExpiresAt` | *number* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `restricted` | *boolean* | :heavy_minus_sign: | If the account is a Plex Home managed user | | +| `roles` | *string*[] | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | +| `scrobbleTypes` | *string* | :heavy_minus_sign: | Unknown | | +| `services` | [shared.Service](../../../sdk/models/shared/service.md)[] | :heavy_minus_sign: | N/A | | +| `subscription` | [shared.Subscription1](../../../sdk/models/shared/subscription1.md) | :heavy_minus_sign: | If the account's Plex Pass subscription is active | | +| `subscriptionDescription` | *string* | :heavy_minus_sign: | Description of the Plex Pass subscription | | +| `subscriptions` | [shared.Subscription2](../../../sdk/models/shared/subscription2.md)[] | :heavy_minus_sign: | N/A | | +| `thumb` | *string* | :heavy_minus_sign: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | +| `title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | +| `twoFactorEnabled` | *boolean* | :heavy_minus_sign: | If two-factor authentication is enabled | | +| `username` | *string* | :heavy_check_mark: | The account username | Username | +| `uuid` | *string* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | +| `attributionPartner` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/shared/userprofile.md b/docs/sdk/models/shared/userprofile.md new file mode 100644 index 00000000..2f551143 --- /dev/null +++ b/docs/sdk/models/shared/userprofile.md @@ -0,0 +1,44 @@ +# UserProfile + +## Example Usage + +```typescript +import { + AutoSelectSubtitle, + DefaultSubtitleAccessibility, + DefaultSubtitleForced, + MediaReviewsVisibility, + UserProfile, + WatchedIndicator, +} from "@lukehagar/plexjs/sdk/models/shared"; + +let value: UserProfile = { + defaultAudioLanguage: "ja", + defaultAudioLanguages: null, + defaultSubtitleLanguage: "en", + defaultSubtitleLanguages: null, + autoSelectSubtitle: AutoSelectSubtitle.ShownWithForeignAudio, + defaultSubtitleAccessibility: DefaultSubtitleAccessibility.PreferSdh, + defaultSubtitleForced: DefaultSubtitleForced.PreferForced, + watchedIndicator: WatchedIndicator.MoviesAndTvShows, + mediaReviewsVisibility: MediaReviewsVisibility.CriticsOnly, + mediaReviewsLanguages: null, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `autoSelectAudio` | *boolean* | :heavy_minus_sign: | If the account has automatically select audio and subtitle tracks enabled | true | +| `defaultAudioLanguage` | *string* | :heavy_check_mark: | The preferred audio language for the account | ja | +| `defaultAudioAccessibility` | [shared.DefaultAudioAccessibility](../../../sdk/models/shared/defaultaudioaccessibility.md) | :heavy_minus_sign: | N/A | 0 | +| `defaultAudioLanguages` | *string*[] | :heavy_minus_sign: | The preferred audio languages for the account | | +| `defaultSubtitleLanguage` | *string* | :heavy_check_mark: | The preferred subtitle language for the account | en | +| `defaultSubtitleLanguages` | *string*[] | :heavy_minus_sign: | The preferred subtitle languages for the account | | +| `autoSelectSubtitle` | [shared.AutoSelectSubtitle](../../../sdk/models/shared/autoselectsubtitle.md) | :heavy_minus_sign: | N/A | 1 | +| `defaultSubtitleAccessibility` | [shared.DefaultSubtitleAccessibility](../../../sdk/models/shared/defaultsubtitleaccessibility.md) | :heavy_minus_sign: | N/A | 1 | +| `defaultSubtitleForced` | [shared.DefaultSubtitleForced](../../../sdk/models/shared/defaultsubtitleforced.md) | :heavy_minus_sign: | N/A | 1 | +| `watchedIndicator` | [shared.WatchedIndicator](../../../sdk/models/shared/watchedindicator.md) | :heavy_minus_sign: | N/A | 1 | +| `mediaReviewsVisibility` | [shared.MediaReviewsVisibility](../../../sdk/models/shared/mediareviewsvisibility.md) | :heavy_minus_sign: | N/A | 1 | +| `mediaReviewsLanguages` | *string*[] | :heavy_minus_sign: | The languages for media reviews visibility | | \ No newline at end of file diff --git a/docs/sdk/models/shared/watchedindicator.md b/docs/sdk/models/shared/watchedindicator.md new file mode 100644 index 00000000..3412eeaf --- /dev/null +++ b/docs/sdk/models/shared/watchedindicator.md @@ -0,0 +1,20 @@ +# WatchedIndicator + +Whether or not media watched indicators are enabled (little orange dot on media) + +## Example Usage + +```typescript +import { WatchedIndicator } from "@lukehagar/plexjs/sdk/models/shared"; + +let value: WatchedIndicator = WatchedIndicator.MoviesAndTvShows; +``` + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `None` | 0 | +| `MoviesAndTvShows` | 1 | +| `Movies` | 2 | +| `TvShows` | 3 | \ No newline at end of file diff --git a/docs/sdks/activities/README.md b/docs/sdks/activities/README.md index 94cf9679..bd091b83 100644 --- a/docs/sdks/activities/README.md +++ b/docs/sdks/activities/README.md @@ -25,7 +25,9 @@ List all activities on the server. Admins can see all activities but other user ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.activities.listActivities(); @@ -46,7 +48,9 @@ import { activitiesListActivities } from "@lukehagar/plexjs/funcs/activitiesList // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await activitiesListActivities(plexAPI); @@ -102,6 +106,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -138,6 +143,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md new file mode 100644 index 00000000..a83831ae --- /dev/null +++ b/docs/sdks/authentication/README.md @@ -0,0 +1,211 @@ +# Authentication +(*authentication*) + +## Overview + +### Available Operations + +* [getTokenDetails](#gettokendetails) - Get Token Details +* [postUsersSignInData](#postuserssignindata) - Get User Sign In Data + +## getTokenDetails + +Get the User data from the provided X-Plex-Token + +### Example Usage + + +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "", +}); + +async function run() { + const result = await plexAPI.authentication.getTokenDetails({}); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { PlexAPICore } from "@lukehagar/plexjs/core.js"; +import { authenticationGetTokenDetails } from "@lukehagar/plexjs/funcs/authenticationGetTokenDetails.js"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +// Use `PlexAPICore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const plexAPI = new PlexAPICore({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "", +}); + +async function run() { + const res = await authenticationGetTokenDetails(plexAPI, {}); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationGetTokenDetails failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetTokenDetailsRequest](../../sdk/models/operations/gettokendetailsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | +| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**Promise\<[operations.GetTokenDetailsResponse](../../sdk/models/operations/gettokendetailsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | +| errors.GetTokenDetailsBadRequestError | 400 | application/json | +| errors.GetTokenDetailsUnauthorizedError | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## postUsersSignInData + +Sign in user with username and password and return user data with Plex authentication token + +### Example Usage + + +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", +}); + +async function run() { + const result = await plexAPI.authentication.postUsersSignInData({ + requestBody: { + login: "username@email.com", + password: "password123", + verificationCode: "123456", + }, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { PlexAPICore } from "@lukehagar/plexjs/core.js"; +import { authenticationPostUsersSignInData } from "@lukehagar/plexjs/funcs/authenticationPostUsersSignInData.js"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +// Use `PlexAPICore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const plexAPI = new PlexAPICore({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", +}); + +async function run() { + const res = await authenticationPostUsersSignInData(plexAPI, { + requestBody: { + login: "username@email.com", + password: "password123", + verificationCode: "123456", + }, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationPostUsersSignInData failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.PostUsersSignInDataRequest](../../sdk/models/operations/postuserssignindatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | +| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**Promise\<[operations.PostUsersSignInDataResponse](../../sdk/models/operations/postuserssignindataresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| errors.PostUsersSignInDataBadRequestError | 400 | application/json | +| errors.PostUsersSignInDataUnauthorizedError | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/butler/README.md b/docs/sdks/butler/README.md index 795e054b..c6576721 100644 --- a/docs/sdks/butler/README.md +++ b/docs/sdks/butler/README.md @@ -23,7 +23,9 @@ This endpoint will stop all currently running tasks and remove any scheduled tas ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.butler.stopTasks(); @@ -44,7 +46,9 @@ import { butlerStopTasks } from "@lukehagar/plexjs/funcs/butlerStopTasks.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await butlerStopTasks(plexAPI); @@ -88,7 +92,9 @@ Get the list of butler tasks and their scheduling ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.butler.getTasks(); @@ -109,7 +115,9 @@ import { butlerGetTasks } from "@lukehagar/plexjs/funcs/butlerGetTasks.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await butlerGetTasks(plexAPI); @@ -158,7 +166,9 @@ This endpoint will attempt to start all Butler tasks that are enabled in the set ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.butler.startTasks(); @@ -179,7 +189,9 @@ import { butlerStartTasks } from "@lukehagar/plexjs/funcs/butlerStartTasks.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await butlerStartTasks(plexAPI); @@ -219,10 +231,10 @@ This endpoint will stop a currently running task by name, or remove it from the ### Example Usage - + ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { StopTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StopTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ @@ -237,11 +249,12 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.butler.stopTask({ - task: StopTaskTask.CleanOldBundles, + butlerTask: StopTaskButlerTask.CleanOldBundles, }); console.log(result); @@ -257,7 +270,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { butlerStopTask } from "@lukehagar/plexjs/funcs/butlerStopTask.js"; -import { StopTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StopTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. @@ -274,11 +287,12 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await butlerStopTask(plexAPI, { - task: StopTaskTask.CleanOldBundles, + butlerTask: StopTaskButlerTask.CleanOldBundles, }); if (res.ok) { const { value: result } = res; @@ -317,10 +331,10 @@ This endpoint will attempt to start a specific Butler task by name. ### Example Usage - + ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { StartTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StartTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ @@ -335,11 +349,12 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.butler.startTask({ - task: StartTaskTask.RefreshLocalMedia, + butlerTask: StartTaskButlerTask.RefreshLocalMedia, }); console.log(result); @@ -355,7 +370,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { butlerStartTask } from "@lukehagar/plexjs/funcs/butlerStartTask.js"; -import { StartTaskTask } from "@lukehagar/plexjs/sdk/models/operations"; +import { StartTaskButlerTask } from "@lukehagar/plexjs/sdk/models/operations"; import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. @@ -372,11 +387,12 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await butlerStartTask(plexAPI, { - task: StartTaskTask.RefreshLocalMedia, + butlerTask: StartTaskButlerTask.RefreshLocalMedia, }); if (res.ok) { const { value: result } = res; diff --git a/docs/sdks/collections/README.md b/docs/sdks/collections/README.md index 52f651d6..52e27abf 100644 --- a/docs/sdks/collections/README.md +++ b/docs/sdks/collections/README.md @@ -18,7 +18,7 @@ Create a collection in the library ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -32,11 +32,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.collections.createCollection({ sectionId: "", + type: MediaType.TvShow, }); console.log(result); @@ -52,7 +54,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { collectionsCreateCollection } from "@lukehagar/plexjs/funcs/collectionsCreateCollection.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -68,11 +70,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await collectionsCreateCollection(plexAPI, { sectionId: "", + type: MediaType.TvShow, }); if (res.ok) { const { value: result } = res; diff --git a/docs/sdks/content/README.md b/docs/sdks/content/README.md index 58bc7eab..5dbfc78d 100644 --- a/docs/sdks/content/README.md +++ b/docs/sdks/content/README.md @@ -44,6 +44,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -80,6 +81,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -139,19 +141,20 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.content.getMetadataItem({ ids: [], - asyncCheckFiles: BoolInt.One, - asyncRefreshLocalMediaAgent: BoolInt.One, - asyncRefreshAnalysis: BoolInt.One, - checkFiles: BoolInt.One, - skipRefresh: BoolInt.One, - checkFileAvailability: BoolInt.One, - asyncAugmentMetadata: BoolInt.One, - augmentCount: BoolInt.One, + asyncCheckFiles: BoolInt.True, + asyncRefreshLocalMediaAgent: BoolInt.True, + asyncRefreshAnalysis: BoolInt.True, + checkFiles: BoolInt.True, + skipRefresh: BoolInt.True, + checkFileAvailability: BoolInt.True, + asyncAugmentMetadata: BoolInt.True, + augmentCount: BoolInt.True, }); console.log(result); @@ -183,19 +186,20 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await contentGetMetadataItem(plexAPI, { ids: [], - asyncCheckFiles: BoolInt.One, - asyncRefreshLocalMediaAgent: BoolInt.One, - asyncRefreshAnalysis: BoolInt.One, - checkFiles: BoolInt.One, - skipRefresh: BoolInt.One, - checkFileAvailability: BoolInt.One, - asyncAugmentMetadata: BoolInt.One, - augmentCount: BoolInt.One, + asyncCheckFiles: BoolInt.True, + asyncRefreshLocalMediaAgent: BoolInt.True, + asyncRefreshAnalysis: BoolInt.True, + checkFiles: BoolInt.True, + skipRefresh: BoolInt.True, + checkFileAvailability: BoolInt.True, + asyncAugmentMetadata: BoolInt.True, + augmentCount: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -250,6 +254,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -286,6 +291,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -331,7 +337,7 @@ Get the items in a section, potentially filtering them ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -345,10 +351,18 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.content.listContent({ + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + includeMeta: BoolInt.True, + includeGuids: BoolInt.True, sectionId: "", }); @@ -365,7 +379,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { contentListContent } from "@lukehagar/plexjs/funcs/contentListContent.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -381,10 +395,18 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await contentListContent(plexAPI, { + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + includeMeta: BoolInt.True, + includeGuids: BoolInt.True, sectionId: "", }); if (res.ok) { @@ -440,6 +462,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -476,6 +499,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -535,6 +559,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -571,6 +596,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -630,6 +656,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -666,6 +693,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -725,6 +753,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -761,6 +790,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -820,6 +850,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -858,6 +889,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -919,6 +951,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -955,6 +988,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1014,6 +1048,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1050,6 +1085,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1109,6 +1145,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1146,6 +1183,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1206,6 +1244,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1243,6 +1282,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/devices/README.md b/docs/sdks/devices/README.md index 218cf545..444d2d42 100644 --- a/docs/sdks/devices/README.md +++ b/docs/sdks/devices/README.md @@ -78,6 +78,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -114,6 +115,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -160,7 +162,9 @@ Get the list of all devices present ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.devices.listDevices(); @@ -181,7 +185,9 @@ import { devicesListDevices } from "@lukehagar/plexjs/funcs/devicesListDevices.j // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await devicesListDevices(plexAPI); @@ -237,6 +243,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -273,6 +280,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -319,7 +327,9 @@ Tell grabbers to discover devices ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.devices.discoverDevices(); @@ -340,7 +350,9 @@ import { devicesDiscoverDevices } from "@lukehagar/plexjs/funcs/devicesDiscoverD // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await devicesDiscoverDevices(plexAPI); @@ -396,6 +408,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -432,6 +445,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -491,6 +505,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -527,6 +542,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -586,12 +602,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.devices.modifyDevice({ deviceId: 879135, - enabled: BoolInt.One, + enabled: BoolInt.True, }); console.log(result); @@ -623,12 +640,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await devicesModifyDevice(plexAPI, { deviceId: 879135, - enabled: BoolInt.One, + enabled: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -683,6 +701,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -737,6 +756,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -814,6 +834,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -850,6 +871,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -909,6 +931,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -945,6 +968,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1004,6 +1028,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1040,6 +1065,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1099,6 +1125,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1136,6 +1163,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1196,6 +1224,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1233,6 +1262,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/downloadqueue/README.md b/docs/sdks/downloadqueue/README.md index 5c73b546..80557196 100644 --- a/docs/sdks/downloadqueue/README.md +++ b/docs/sdks/downloadqueue/README.md @@ -30,7 +30,9 @@ Creates a download queue for this client if one doesn't exist, or returns the ex ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.downloadQueue.createDownloadQueue(); @@ -51,7 +53,9 @@ import { downloadQueueCreateDownloadQueue } from "@lukehagar/plexjs/funcs/downlo // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await downloadQueueCreateDownloadQueue(plexAPI); @@ -110,6 +114,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -146,6 +151,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -194,7 +200,7 @@ Add items to the download queue ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, Protocol } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, ProtocolParameter } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -208,6 +214,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -220,13 +227,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: LocationParameter.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -236,7 +243,7 @@ async function run() { path: "/library/metadata/151671", peakBitrate: 12000, photoResolution: "1080x1080", - protocol: Protocol.Dash, + protocol: ProtocolParameter.Dash, secondsPerSegment: 5, subtitleSize: 50, videoBitrate: 12000, @@ -257,7 +264,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { downloadQueueAddDownloadQueueItems } from "@lukehagar/plexjs/funcs/downloadQueueAddDownloadQueueItems.js"; -import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, Protocol } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, AdvancedSubtitles, BoolInt, LocationParameter, ProtocolParameter } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -273,6 +280,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -285,13 +293,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: LocationParameter.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -301,7 +309,7 @@ async function run() { path: "/library/metadata/151671", peakBitrate: 12000, photoResolution: "1080x1080", - protocol: Protocol.Dash, + protocol: ProtocolParameter.Dash, secondsPerSegment: 5, subtitleSize: 50, videoBitrate: 12000, @@ -364,6 +372,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -400,6 +409,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -462,6 +472,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -499,6 +510,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -562,6 +574,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -599,6 +612,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -659,6 +673,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -700,6 +715,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -767,6 +783,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -808,6 +825,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -875,6 +893,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -916,6 +935,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/dvrs/README.md b/docs/sdks/dvrs/README.md index 9d101ffb..e6e75228 100644 --- a/docs/sdks/dvrs/README.md +++ b/docs/sdks/dvrs/README.md @@ -31,7 +31,9 @@ Get the list of all available DVRs ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.dvRs.listDVRs(); @@ -52,7 +54,9 @@ import { dvRsListDVRs } from "@lukehagar/plexjs/funcs/dvRsListDVRs.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await dvRsListDVRs(plexAPI); @@ -108,6 +112,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -200,6 +205,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -315,6 +321,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -351,6 +358,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -410,6 +418,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -446,6 +455,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -505,6 +515,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -542,6 +553,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -602,6 +614,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -639,6 +652,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -699,6 +713,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -735,6 +750,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -794,6 +810,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -830,6 +847,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -889,6 +907,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -925,6 +944,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -984,6 +1004,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1021,6 +1042,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1081,6 +1103,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1118,6 +1141,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1178,6 +1202,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1215,6 +1240,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/epg/README.md b/docs/sdks/epg/README.md index 7d11dccc..d4f2b3c4 100644 --- a/docs/sdks/epg/README.md +++ b/docs/sdks/epg/README.md @@ -41,6 +41,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -78,6 +79,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -138,6 +140,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -174,6 +177,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -220,7 +224,9 @@ This endpoint returns a list of countries which EPG data is available for. There ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.epg.getCountries(); @@ -241,7 +247,9 @@ import { epgGetCountries } from "@lukehagar/plexjs/funcs/epgGetCountries.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await epgGetCountries(plexAPI); @@ -284,7 +292,9 @@ Returns a list of all possible languages for EPG data. ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.epg.getAllLanguages(); @@ -305,7 +315,9 @@ import { epgGetAllLanguages } from "@lukehagar/plexjs/funcs/epgGetAllLanguages.j // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await epgGetAllLanguages(plexAPI); @@ -361,6 +373,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -398,6 +411,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -458,6 +472,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -497,6 +512,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -559,6 +575,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -596,6 +613,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -656,6 +674,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -693,6 +712,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -753,6 +773,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -791,6 +812,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md index e576f4f0..dc84f8e6 100644 --- a/docs/sdks/events/README.md +++ b/docs/sdks/events/README.md @@ -36,6 +36,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -70,6 +71,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -127,6 +129,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -161,6 +164,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/general/README.md b/docs/sdks/general/README.md index 88c91644..8c40c36d 100644 --- a/docs/sdks/general/README.md +++ b/docs/sdks/general/README.md @@ -35,6 +35,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -69,6 +70,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -113,7 +115,9 @@ Get details about this PMS's identity ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.general.getIdentity(); @@ -134,7 +138,9 @@ import { generalGetIdentity } from "@lukehagar/plexjs/funcs/generalGetIdentity.j // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await generalGetIdentity(plexAPI); @@ -190,12 +196,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.general.getSourceConnectionInformation({ source: "server://client-identifier", - refresh: BoolInt.One, + refresh: BoolInt.True, }); console.log(result); @@ -227,12 +234,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await generalGetSourceConnectionInformation(plexAPI, { source: "server://client-identifier", - refresh: BoolInt.One, + refresh: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -289,6 +297,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -327,6 +336,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md index aa421973..f7dd6abc 100644 --- a/docs/sdks/hubs/README.md +++ b/docs/sdks/hubs/README.md @@ -45,11 +45,12 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getAllHubs({ - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -81,11 +82,12 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsGetAllHubs(plexAPI, { - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -140,6 +142,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -174,6 +177,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -231,6 +235,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -271,6 +276,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -334,6 +340,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -368,6 +375,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -425,12 +433,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getMetadataHubs({ metadataId: 605482, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -462,12 +471,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsGetMetadataHubs(plexAPI, { metadataId: 605482, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -522,12 +532,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getPostplayHubs({ metadataId: 441419, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -559,12 +570,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsGetPostplayHubs(plexAPI, { metadataId: 441419, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -619,12 +631,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getRelatedHubs({ metadataId: 8858, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -656,12 +669,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsGetRelatedHubs(plexAPI, { metadataId: 8858, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -716,12 +730,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.getSectionHubs({ sectionId: 336924, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); console.log(result); @@ -753,12 +768,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsGetSectionHubs(plexAPI, { sectionId: 336924, - onlyTransient: BoolInt.One, + onlyTransient: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -813,6 +829,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -849,6 +866,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -908,6 +926,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -944,6 +963,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1003,15 +1023,16 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.createCustomHub({ sectionId: 869922, metadataItemId: 703843, - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); console.log(result); @@ -1043,15 +1064,16 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsCreateCustomHub(plexAPI, { sectionId: 869922, metadataItemId: 703843, - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -1106,6 +1128,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1143,6 +1166,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1203,6 +1227,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1240,6 +1265,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1300,15 +1326,16 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.hubs.updateHubVisibility({ sectionId: 341650, identifier: "", - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); console.log(result); @@ -1340,15 +1367,16 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await hubsUpdateHubVisibility(plexAPI, { sectionId: 341650, identifier: "", - promotedToRecommended: BoolInt.One, - promotedToOwnHome: BoolInt.One, - promotedToSharedHome: BoolInt.One, + promotedToRecommended: BoolInt.True, + promotedToOwnHome: BoolInt.True, + promotedToSharedHome: BoolInt.True, }); if (res.ok) { const { value: result } = res; diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index b5474747..0e4fda51 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -96,7 +96,7 @@ Request all metadata items according to a query. ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -110,10 +110,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const result = await plexAPI.library.getLibraryItems({}); + const result = await plexAPI.library.getLibraryItems({ + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + }); console.log(result); } @@ -128,7 +135,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetLibraryItems } from "@lukehagar/plexjs/funcs/libraryGetLibraryItems.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -144,10 +151,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const res = await libraryGetLibraryItems(plexAPI, {}); + const res = await libraryGetLibraryItems(plexAPI, { + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, + }); if (res.ok) { const { value: result } = res; console.log(result); @@ -188,7 +202,9 @@ Delete the hub caches so they are recomputed on next request ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.library.deleteCaches(); @@ -209,7 +225,9 @@ import { libraryDeleteCaches } from "@lukehagar/plexjs/funcs/libraryDeleteCaches // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await libraryDeleteCaches(plexAPI); @@ -252,7 +270,9 @@ Clean out any now unused bundles. Bundles can become unused when media is delete ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.library.cleanBundles(); @@ -273,7 +293,9 @@ import { libraryCleanBundles } from "@lukehagar/plexjs/funcs/libraryCleanBundles // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await libraryCleanBundles(plexAPI); @@ -330,14 +352,15 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.ingestTransientItem({ url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", virtualFilePath: "/Avatar.mkv", - computeHashes: BoolInt.One, - ingestNonMatches: BoolInt.One, + computeHashes: BoolInt.True, + ingestNonMatches: BoolInt.True, }); console.log(result); @@ -369,14 +392,15 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryIngestTransientItem(plexAPI, { url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", virtualFilePath: "/Avatar.mkv", - computeHashes: BoolInt.One, - ingestNonMatches: BoolInt.One, + computeHashes: BoolInt.True, + ingestNonMatches: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -421,7 +445,7 @@ Episodes require either a season/episode pair, or an air date (or both). Either ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -435,13 +459,15 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getLibraryMatches({ - includeFullMetadata: BoolInt.One, - includeAncestorMetadata: BoolInt.One, - includeAlternateMetadataSources: BoolInt.One, + type: MediaType.TvShow, + includeFullMetadata: BoolInt.True, + includeAncestorMetadata: BoolInt.True, + includeAlternateMetadataSources: BoolInt.True, }); console.log(result); @@ -457,7 +483,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetLibraryMatches } from "@lukehagar/plexjs/funcs/libraryGetLibraryMatches.js"; -import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, BoolInt, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -473,13 +499,15 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetLibraryMatches(plexAPI, { - includeFullMetadata: BoolInt.One, - includeAncestorMetadata: BoolInt.One, - includeAlternateMetadataSources: BoolInt.One, + type: MediaType.TvShow, + includeFullMetadata: BoolInt.True, + includeAncestorMetadata: BoolInt.True, + includeAlternateMetadataSources: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -534,11 +562,12 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.optimizeDatabase({ - async: BoolInt.One, + async: BoolInt.True, }); console.log(result); @@ -570,11 +599,12 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryOptimizeDatabase(plexAPI, { - async: BoolInt.One, + async: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -632,6 +662,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -671,6 +702,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -721,7 +753,9 @@ Libraries have features beyond just being a collection of media; for starters, t ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.library.getSections(); @@ -742,7 +776,9 @@ import { libraryGetSections } from "@lukehagar/plexjs/funcs/libraryGetSections.j // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await libraryGetSections(plexAPI); @@ -798,6 +834,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -811,8 +848,8 @@ async function run() { "O:\fatboy\\Media\\My Music", ], prefs: {}, - relative: BoolInt.One, - importFromiTunes: BoolInt.One, + relative: BoolInt.True, + importFromiTunes: BoolInt.True, }); console.log(result); @@ -844,6 +881,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -857,8 +895,8 @@ async function run() { "O:\fatboy\\Media\\My Music", ], prefs: {}, - relative: BoolInt.One, - importFromiTunes: BoolInt.One, + relative: BoolInt.True, + importFromiTunes: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -900,7 +938,9 @@ Stop all refreshes across all sections ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.library.stopAllRefreshes(); @@ -921,7 +961,9 @@ import { libraryStopAllRefreshes } from "@lukehagar/plexjs/funcs/libraryStopAllR // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await libraryStopAllRefreshes(plexAPI); @@ -977,6 +1019,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1013,6 +1056,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1072,6 +1116,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1106,6 +1151,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1149,7 +1195,7 @@ Get all library tags of a type ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -1163,10 +1209,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const result = await plexAPI.library.getTags({}); + const result = await plexAPI.library.getTags({ + type: MediaType.TvShow, + }); console.log(result); } @@ -1181,7 +1230,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetTags } from "@lukehagar/plexjs/funcs/libraryGetTags.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1197,10 +1246,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { - const res = await libraryGetTags(plexAPI, {}); + const res = await libraryGetTags(plexAPI, { + type: MediaType.TvShow, + }); if (res.ok) { const { value: result } = res; console.log(result); @@ -1254,12 +1306,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteMetadataItem({ ids: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); console.log(result); @@ -1291,12 +1344,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDeleteMetadataItem(plexAPI, { ids: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -1351,6 +1405,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1390,6 +1445,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1452,6 +1508,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1488,6 +1545,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1547,6 +1605,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1583,6 +1642,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1642,6 +1702,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1678,6 +1739,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1737,12 +1799,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.generateThumbs({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -1774,12 +1837,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGenerateThumbs(plexAPI, { ids: "", - force: BoolInt.One, + force: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -1834,13 +1898,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectCredits({ ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); console.log(result); @@ -1872,13 +1937,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDetectCredits(plexAPI, { ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -1933,6 +1999,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1969,6 +2036,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2028,6 +2096,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2065,6 +2134,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2125,6 +2195,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2161,6 +2232,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2220,12 +2292,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.startBifGeneration({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -2257,12 +2330,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryStartBifGeneration(plexAPI, { ids: "", - force: BoolInt.One, + force: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -2317,12 +2391,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectIntros({ ids: "", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -2354,12 +2429,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDetectIntros(plexAPI, { ids: "", - force: BoolInt.One, + force: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -2414,6 +2490,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2453,6 +2530,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2515,6 +2593,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2551,6 +2630,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2610,12 +2690,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.listMatches({ ids: "", - manual: BoolInt.One, + manual: BoolInt.True, }); console.log(result); @@ -2647,12 +2728,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryListMatches(plexAPI, { ids: "", - manual: BoolInt.One, + manual: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -2707,6 +2789,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2743,6 +2826,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2802,6 +2886,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2838,6 +2923,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2897,6 +2983,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2933,6 +3020,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -2992,12 +3080,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.refreshItemsMetadata({ ids: "", - markUpdated: BoolInt.One, + markUpdated: BoolInt.True, }); console.log(result); @@ -3029,12 +3118,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryRefreshItemsMetadata(plexAPI, { ids: "", - markUpdated: BoolInt.One, + markUpdated: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -3089,6 +3179,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3125,6 +3216,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3184,6 +3276,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3220,6 +3313,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3279,6 +3373,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3315,6 +3410,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3374,13 +3470,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.addSubtitles({ ids: "", - forced: BoolInt.One, - hearingImpaired: BoolInt.One, + forced: BoolInt.True, + hearingImpaired: BoolInt.True, }); console.log(result); @@ -3412,13 +3509,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryAddSubtitles(plexAPI, { ids: "", - forced: BoolInt.One, - hearingImpaired: BoolInt.One, + forced: BoolInt.True, + hearingImpaired: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -3473,6 +3571,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3509,6 +3608,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3568,6 +3668,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3604,6 +3705,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3663,6 +3765,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3699,6 +3802,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -3758,13 +3862,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.detectVoiceActivity({ ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); console.log(result); @@ -3796,13 +3901,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDetectVoiceActivity(plexAPI, { ids: "", - force: BoolInt.One, - manual: BoolInt.One, + force: BoolInt.True, + manual: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -3857,12 +3963,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getAugmentationStatus({ augmentationId: "", - wait: BoolInt.One, + wait: BoolInt.True, }); console.log(result); @@ -3894,12 +4001,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetAugmentationStatus(plexAPI, { augmentationId: "", - wait: BoolInt.One, + wait: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -3954,12 +4062,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.setStreamSelection({ partId: 360489, - allParts: BoolInt.One, + allParts: BoolInt.True, }); console.log(result); @@ -3991,12 +4100,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await librarySetStreamSelection(plexAPI, { partId: 360489, - allParts: BoolInt.One, + allParts: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -4051,6 +4161,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4087,6 +4198,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4146,6 +4258,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4182,6 +4295,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4241,12 +4355,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteLibrarySection({ sectionId: "", - async: BoolInt.One, + async: BoolInt.True, }); console.log(result); @@ -4278,12 +4393,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDeleteLibrarySection(plexAPI, { sectionId: "", - async: BoolInt.One, + async: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -4338,12 +4454,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getLibraryDetails({ sectionId: "", - includeDetails: BoolInt.One, + includeDetails: BoolInt.True, }); console.log(result); @@ -4375,12 +4492,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetLibraryDetails(plexAPI, { sectionId: "", - includeDetails: BoolInt.One, + includeDetails: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -4435,6 +4553,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4477,6 +4596,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4586,12 +4706,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.updateItems({ sectionId: "", - fieldLocked: BoolInt.One, + fieldLocked: BoolInt.True, }); console.log(result); @@ -4623,12 +4744,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryUpdateItems(plexAPI, { sectionId: "", - fieldLocked: BoolInt.One, + fieldLocked: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -4683,6 +4805,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4719,6 +4842,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -4765,7 +4889,7 @@ Returns a set of items from the filtered items whose `{field}` starts with `{fie ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -4779,11 +4903,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.autocomplete({ sectionId: 942007, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -4799,7 +4929,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryAutocomplete } from "@lukehagar/plexjs/funcs/libraryAutocomplete.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -4815,11 +4945,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryAutocomplete(plexAPI, { sectionId: 942007, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); if (res.ok) { const { value: result } = res; @@ -4860,7 +4996,7 @@ Get all collections in a section ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -4874,11 +5010,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getCollections({ sectionId: 348838, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -4894,7 +5036,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetCollections } from "@lukehagar/plexjs/funcs/libraryGetCollections.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -4910,11 +5052,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetCollections(plexAPI, { sectionId: 348838, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); if (res.ok) { const { value: result } = res; @@ -4956,7 +5104,7 @@ Fields which are not common will be expressed in the `mixedFields` field ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -4970,11 +5118,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getCommon({ sectionId: 298154, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -4990,7 +5144,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetCommon } from "@lukehagar/plexjs/funcs/libraryGetCommon.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -5006,11 +5160,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetCommon(plexAPI, { sectionId: 298154, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); if (res.ok) { const { value: result } = res; @@ -5065,6 +5225,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5101,6 +5262,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5160,6 +5322,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5196,6 +5359,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5241,7 +5405,7 @@ Get list of first characters in this section ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -5255,11 +5419,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getFirstCharacters({ sectionId: 3947, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -5275,7 +5445,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetFirstCharacters } from "@lukehagar/plexjs/funcs/libraryGetFirstCharacters.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -5291,11 +5461,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetFirstCharacters(plexAPI, { sectionId: 3947, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); if (res.ok) { const { value: result } = res; @@ -5350,6 +5526,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5386,6 +5563,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5445,6 +5623,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5481,6 +5660,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5540,6 +5720,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5576,6 +5757,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5635,6 +5817,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5672,6 +5855,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5732,6 +5916,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5768,6 +5953,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5827,12 +6013,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.refreshSection({ sectionId: 450300, - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -5864,12 +6051,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryRefreshSection(plexAPI, { sectionId: 450300, - force: BoolInt.One, + force: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -5924,6 +6112,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -5960,6 +6149,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6019,6 +6209,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6055,6 +6246,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6114,6 +6306,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6150,6 +6343,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6209,6 +6403,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6246,6 +6441,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6308,6 +6504,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6346,6 +6543,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6408,6 +6606,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6446,6 +6645,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6506,6 +6706,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6543,6 +6744,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6603,6 +6805,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6643,6 +6846,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6706,13 +6910,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.deleteMediaItem({ ids: "", mediaItem: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); console.log(result); @@ -6744,13 +6949,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryDeleteMediaItem(plexAPI, { ids: "", mediaItem: "", - proxy: BoolInt.One, + proxy: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -6806,6 +7012,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6844,6 +7051,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6904,6 +7112,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6941,6 +7150,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -6987,7 +7197,7 @@ Get a composite image of images in this section ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -7001,12 +7211,18 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getSectionImage({ sectionId: 925611, updatedAt: 117413, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); console.log(result); @@ -7022,7 +7238,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetSectionImage } from "@lukehagar/plexjs/funcs/libraryGetSectionImage.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -7038,12 +7254,18 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetSectionImage(plexAPI, { sectionId: 925611, updatedAt: 117413, + mediaQuery: { + type: MediaType.Episode, + sourceType: 2, + sort: "duration:desc,index", + }, }); if (res.ok) { const { value: result } = res; @@ -7098,6 +7320,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7135,6 +7358,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7195,13 +7419,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.library.getStream({ streamId: 314506, ext: "", - autoAdjustSubtitle: BoolInt.One, + autoAdjustSubtitle: BoolInt.True, }); console.log(result); @@ -7233,13 +7458,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryGetStream(plexAPI, { streamId: 314506, ext: "", - autoAdjustSubtitle: BoolInt.One, + autoAdjustSubtitle: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -7294,6 +7520,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7331,6 +7558,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7392,6 +7620,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7431,6 +7660,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7495,6 +7725,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7502,7 +7733,7 @@ async function run() { partId: 877105, changestamp: 970622, filename: "example.file", - download: BoolInt.One, + download: BoolInt.True, }); console.log(result); @@ -7534,6 +7765,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7541,7 +7773,7 @@ async function run() { partId: 877105, changestamp: 970622, filename: "example.file", - download: BoolInt.One, + download: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -7597,6 +7829,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -7636,6 +7869,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/librarycollections/README.md b/docs/sdks/librarycollections/README.md index 9130389f..3db447b4 100644 --- a/docs/sdks/librarycollections/README.md +++ b/docs/sdks/librarycollections/README.md @@ -34,6 +34,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -71,6 +72,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -131,6 +133,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -168,6 +171,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -228,6 +232,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -265,6 +270,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/libraryplaylists/README.md b/docs/sdks/libraryplaylists/README.md index 7a0b7a4c..1912b746 100644 --- a/docs/sdks/libraryplaylists/README.md +++ b/docs/sdks/libraryplaylists/README.md @@ -44,6 +44,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -80,6 +81,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -139,12 +141,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.libraryPlaylists.uploadPlaylist({ path: "/home/barkley/playlist.m3u", - force: BoolInt.One, + force: BoolInt.True, }); console.log(result); @@ -176,12 +179,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await libraryPlaylistsUploadPlaylist(plexAPI, { path: "/home/barkley/playlist.m3u", - force: BoolInt.One, + force: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -236,6 +240,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -272,6 +277,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -331,6 +337,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -367,6 +374,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -426,6 +434,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -462,6 +471,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -521,6 +531,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -557,6 +568,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -616,6 +628,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -652,6 +665,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -711,6 +725,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -748,6 +763,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -808,6 +824,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -845,6 +862,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -892,7 +910,7 @@ Modify a playlist generator. Only used for optimizer ```typescript import { PlexAPI } from "@lukehagar/plexjs"; import { ModifyPlaylistGeneratorScope } from "@lukehagar/plexjs/sdk/models/operations"; -import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -906,6 +924,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -919,7 +938,6 @@ async function run() { locationID: -1, policy: { scope: ModifyPlaylistGeneratorScope.All, - unwatched: BoolInt.Zero, }, target: "", targetTagID: 1, @@ -942,7 +960,7 @@ The standalone function version of this method: import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryPlaylistsModifyPlaylistGenerator } from "@lukehagar/plexjs/funcs/libraryPlaylistsModifyPlaylistGenerator.js"; import { ModifyPlaylistGeneratorScope } from "@lukehagar/plexjs/sdk/models/operations"; -import { Accepts, BoolInt } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -958,6 +976,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -971,7 +990,6 @@ async function run() { locationID: -1, policy: { scope: ModifyPlaylistGeneratorScope.All, - unwatched: BoolInt.Zero, }, target: "", targetTagID: 1, @@ -1032,6 +1050,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1069,6 +1088,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1129,6 +1149,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1166,6 +1187,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1227,6 +1249,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -1267,6 +1290,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/livetv/README.md b/docs/sdks/livetv/README.md index e01d9bbc..92db0ac1 100644 --- a/docs/sdks/livetv/README.md +++ b/docs/sdks/livetv/README.md @@ -23,7 +23,9 @@ Get all livetv sessions and metadata ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.liveTV.getSessions(); @@ -44,7 +46,9 @@ import { liveTVGetSessions } from "@lukehagar/plexjs/funcs/liveTVGetSessions.js" // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await liveTVGetSessions(plexAPI); @@ -100,6 +104,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -136,6 +141,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -195,6 +201,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -232,6 +239,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -292,6 +300,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -330,6 +339,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/log/README.md b/docs/sdks/log/README.md index 67e12fab..93d171f8 100644 --- a/docs/sdks/log/README.md +++ b/docs/sdks/log/README.md @@ -23,7 +23,9 @@ This endpoint will write multiple lines to the main Plex Media Server log in a s import { PlexAPI } from "@lukehagar/plexjs"; import { openAsBlob } from "node:fs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.log.writeLog(await openAsBlob("example.file")); @@ -45,7 +47,9 @@ import { openAsBlob } from "node:fs"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await logWriteLog(plexAPI, await openAsBlob("example.file")); @@ -105,6 +109,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -139,6 +144,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -199,6 +205,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -233,6 +240,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/playlist/README.md b/docs/sdks/playlist/README.md index 39feb0f4..a803835e 100644 --- a/docs/sdks/playlist/README.md +++ b/docs/sdks/playlist/README.md @@ -34,6 +34,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -68,6 +69,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -126,6 +128,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -162,6 +165,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -221,6 +225,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -257,6 +262,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/playqueue/README.md b/docs/sdks/playqueue/README.md index 998f2cbc..b3e6cece 100644 --- a/docs/sdks/playqueue/README.md +++ b/docs/sdks/playqueue/README.md @@ -47,16 +47,17 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.createPlayQueue({ type: CreatePlayQueueType.Audio, - shuffle: BoolInt.One, - repeat: BoolInt.One, - continuous: BoolInt.One, - recursive: BoolInt.One, - onDeck: BoolInt.One, + shuffle: BoolInt.True, + repeat: BoolInt.True, + continuous: BoolInt.True, + recursive: BoolInt.True, + onDeck: BoolInt.True, }); console.log(result); @@ -89,16 +90,17 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await playQueueCreatePlayQueue(plexAPI, { type: CreatePlayQueueType.Audio, - shuffle: BoolInt.One, - repeat: BoolInt.One, - continuous: BoolInt.One, - recursive: BoolInt.One, - onDeck: BoolInt.One, + shuffle: BoolInt.True, + repeat: BoolInt.True, + continuous: BoolInt.True, + recursive: BoolInt.True, + onDeck: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -153,14 +155,15 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.getPlayQueue({ playQueueId: 210646, - own: BoolInt.One, - includeBefore: BoolInt.One, - includeAfter: BoolInt.One, + own: BoolInt.True, + includeBefore: BoolInt.True, + includeAfter: BoolInt.True, }); console.log(result); @@ -192,14 +195,15 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await playQueueGetPlayQueue(plexAPI, { playQueueId: 210646, - own: BoolInt.One, - includeBefore: BoolInt.One, - includeAfter: BoolInt.One, + own: BoolInt.True, + includeBefore: BoolInt.True, + includeAfter: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -254,12 +258,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.playQueue.addToPlayQueue({ playQueueId: 919248, - next: BoolInt.One, + next: BoolInt.True, }); console.log(result); @@ -291,12 +296,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await playQueueAddToPlayQueue(plexAPI, { playQueueId: 919248, - next: BoolInt.One, + next: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -351,6 +357,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -387,6 +394,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -446,6 +454,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -482,6 +491,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -541,6 +551,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -577,6 +588,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -636,6 +648,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -672,6 +685,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -731,6 +745,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -768,6 +783,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -828,6 +844,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -865,6 +882,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/plex/README.md b/docs/sdks/plex/README.md new file mode 100644 index 00000000..48416476 --- /dev/null +++ b/docs/sdks/plex/README.md @@ -0,0 +1,95 @@ +# Plex +(*plex*) + +## Overview + +### Available Operations + +* [getServerResources](#getserverresources) - Get Server Resources + +## getServerResources + +Get Plex server access tokens and server connections + +### Example Usage + + +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { IncludeHttps, IncludeIPv6, IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + token: "", +}); + +async function run() { + const result = await plexAPI.plex.getServerResources({ + includeHttps: IncludeHttps.True, + includeRelay: IncludeRelay.True, + includeIPv6: IncludeIPv6.True, + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { PlexAPICore } from "@lukehagar/plexjs/core.js"; +import { plexGetServerResources } from "@lukehagar/plexjs/funcs/plexGetServerResources.js"; +import { IncludeHttps, IncludeIPv6, IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +// Use `PlexAPICore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const plexAPI = new PlexAPICore({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + token: "", +}); + +async function run() { + const res = await plexGetServerResources(plexAPI, { + includeHttps: IncludeHttps.True, + includeRelay: IncludeRelay.True, + includeIPv6: IncludeIPv6.True, + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetServerResources failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetServerResourcesRequest](../../sdk/models/operations/getserverresourcesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | +| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**Promise\<[operations.GetServerResourcesResponse](../../sdk/models/operations/getserverresourcesresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| errors.GetServerResourcesUnauthorizedError | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/preferences/README.md b/docs/sdks/preferences/README.md index bc8fa08e..85b9aff8 100644 --- a/docs/sdks/preferences/README.md +++ b/docs/sdks/preferences/README.md @@ -21,7 +21,9 @@ Get the list of all preferences ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.preferences.getAllPreferences(); @@ -42,7 +44,9 @@ import { preferencesGetAllPreferences } from "@lukehagar/plexjs/funcs/preference // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await preferencesGetAllPreferences(plexAPI); @@ -98,6 +102,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -134,6 +139,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -193,6 +199,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -227,6 +234,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/provider/README.md b/docs/sdks/provider/README.md index b2ecc5b6..e011affc 100644 --- a/docs/sdks/provider/README.md +++ b/docs/sdks/provider/README.md @@ -22,7 +22,9 @@ Get the list of all available media providers for this PMS. This will generally ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.provider.listProviders(); @@ -43,7 +45,9 @@ import { providerListProviders } from "@lukehagar/plexjs/funcs/providerListProvi // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await providerListProviders(plexAPI); @@ -99,6 +103,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -135,6 +140,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -181,7 +187,9 @@ Refresh all known media providers. This is useful in case a provider has updated ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.provider.refreshProviders(); @@ -202,7 +210,9 @@ import { providerRefreshProviders } from "@lukehagar/plexjs/funcs/providerRefres // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await providerRefreshProviders(plexAPI); @@ -258,6 +268,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -294,6 +305,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/rate/README.md b/docs/sdks/rate/README.md index 6798320d..cf7f909f 100644 --- a/docs/sdks/rate/README.md +++ b/docs/sdks/rate/README.md @@ -33,6 +33,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -71,6 +72,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index 620bbaa5..f980a4a9 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -47,6 +47,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -84,6 +85,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -135,7 +137,7 @@ Results, as well as their containing per-type hubs, contain a `distance` attribu ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; const plexAPI = new PlexAPI({ accepts: Accepts.ApplicationXml, @@ -149,11 +151,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.search.voiceSearchHubs({ query: "", + type: MediaType.TvShow, }); console.log(result); @@ -169,7 +173,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { searchVoiceSearchHubs } from "@lukehagar/plexjs/funcs/searchVoiceSearchHubs.js"; -import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; +import { Accepts, MediaType } from "@lukehagar/plexjs/sdk/models/shared"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -185,11 +189,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await searchVoiceSearchHubs(plexAPI, { query: "", + type: MediaType.TvShow, }); if (res.ok) { const { value: result } = res; diff --git a/docs/sdks/status/README.md b/docs/sdks/status/README.md index 97e08dfc..22fbbc06 100644 --- a/docs/sdks/status/README.md +++ b/docs/sdks/status/README.md @@ -24,7 +24,9 @@ List all current playbacks on this server ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.status.listSessions(); @@ -45,7 +47,9 @@ import { statusListSessions } from "@lukehagar/plexjs/funcs/statusListSessions.j // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await statusListSessions(plexAPI); @@ -88,7 +92,9 @@ Get the list of all background tasks ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.status.getBackgroundTasks(); @@ -109,7 +115,9 @@ import { statusGetBackgroundTasks } from "@lukehagar/plexjs/funcs/statusGetBackg // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await statusGetBackgroundTasks(plexAPI); @@ -166,6 +174,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -226,6 +235,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -309,6 +319,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -346,6 +357,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -406,6 +418,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -442,6 +455,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -501,6 +515,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -537,6 +552,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/subscriptions/README.md b/docs/sdks/subscriptions/README.md index 53d67e5d..8fd5af67 100644 --- a/docs/sdks/subscriptions/README.md +++ b/docs/sdks/subscriptions/README.md @@ -42,12 +42,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.subscriptions.getAllSubscriptions({ - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); console.log(result); @@ -79,12 +80,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await subscriptionsGetAllSubscriptions(plexAPI, { - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -139,6 +141,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -180,6 +183,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -231,7 +235,9 @@ Process all subscriptions asynchronously ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.subscriptions.processSubscriptions(); @@ -252,7 +258,9 @@ import { subscriptionsProcessSubscriptions } from "@lukehagar/plexjs/funcs/subsc // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await subscriptionsProcessSubscriptions(plexAPI); @@ -295,7 +303,9 @@ Get all scheduled recordings across all subscriptions ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.subscriptions.getScheduledRecordings(); @@ -316,7 +326,9 @@ import { subscriptionsGetScheduledRecordings } from "@lukehagar/plexjs/funcs/sub // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await subscriptionsGetScheduledRecordings(plexAPI); @@ -372,6 +384,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -408,6 +421,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -468,6 +482,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -504,6 +519,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -563,6 +579,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -599,6 +616,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -658,13 +676,14 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.subscriptions.getSubscription({ subscriptionId: 186713, - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); console.log(result); @@ -696,13 +715,14 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await subscriptionsGetSubscription(plexAPI, { subscriptionId: 186713, - includeGrabs: BoolInt.One, - includeStorage: BoolInt.One, + includeGrabs: BoolInt.True, + includeStorage: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -757,6 +777,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -794,6 +815,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -854,6 +876,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -890,6 +913,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/timeline/README.md b/docs/sdks/timeline/README.md index abbff8dd..373a6f93 100644 --- a/docs/sdks/timeline/README.md +++ b/docs/sdks/timeline/README.md @@ -35,6 +35,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -72,6 +73,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -134,6 +136,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -144,9 +147,9 @@ async function run() { playQueueItemID: "123", time: 0, duration: 10000, - continuing: BoolInt.One, + continuing: BoolInt.True, updated: 14200000, - offline: BoolInt.One, + offline: BoolInt.True, timeToFirstFrame: 1000, timeStalled: 1000, bandwidth: 100, @@ -184,6 +187,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -194,9 +198,9 @@ async function run() { playQueueItemID: "123", time: 0, duration: 10000, - continuing: BoolInt.One, + continuing: BoolInt.True, updated: 14200000, - offline: BoolInt.One, + offline: BoolInt.True, timeToFirstFrame: 1000, timeStalled: 1000, bandwidth: 100, @@ -257,6 +261,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -293,6 +298,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { diff --git a/docs/sdks/transcoder/README.md b/docs/sdks/transcoder/README.md index 8da9cf4e..8bdbc782 100644 --- a/docs/sdks/transcoder/README.md +++ b/docs/sdks/transcoder/README.md @@ -36,15 +36,16 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.transcoder.transcodeImage({ url: "/library/metadata/265/thumb/1715112705", background: "#ff5522", - upscale: BoolInt.One, - minSize: BoolInt.One, - rotate: BoolInt.One, + upscale: BoolInt.True, + minSize: BoolInt.True, + rotate: BoolInt.True, blendColor: "#ff5522", }); @@ -77,15 +78,16 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await transcoderTranscodeImage(plexAPI, { url: "/library/metadata/265/thumb/1715112705", background: "#ff5522", - upscale: BoolInt.One, - minSize: BoolInt.One, - rotate: BoolInt.One, + upscale: BoolInt.True, + minSize: BoolInt.True, + rotate: BoolInt.True, blendColor: "#ff5522", }); if (res.ok) { @@ -142,6 +144,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -150,13 +153,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: MakeDecisionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -206,6 +209,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -214,13 +218,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: MakeDecisionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -292,6 +296,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -328,6 +333,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -388,6 +394,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -396,13 +403,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: TranscodeSubtitlesLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -452,6 +459,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -460,13 +468,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: TranscodeSubtitlesLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -539,6 +547,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -548,13 +557,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, @@ -604,6 +613,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -613,13 +623,13 @@ async function run() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/docs/sdks/ultrablur/README.md b/docs/sdks/ultrablur/README.md index b89f061b..6617e1c7 100644 --- a/docs/sdks/ultrablur/README.md +++ b/docs/sdks/ultrablur/README.md @@ -33,6 +33,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -69,6 +70,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -128,6 +130,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -138,7 +141,7 @@ async function run() { bottomLeft: "1c425d", width: 1920, height: 1080, - noise: BoolInt.One, + noise: BoolInt.True, }); console.log(result); @@ -170,6 +173,7 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { @@ -180,7 +184,7 @@ async function run() { bottomLeft: "1c425d", width: 1920, height: 1080, - noise: BoolInt.One, + noise: BoolInt.True, }); if (res.ok) { const { value: result } = res; diff --git a/docs/sdks/updater/README.md b/docs/sdks/updater/README.md index 8c56d2db..cb469f2b 100644 --- a/docs/sdks/updater/README.md +++ b/docs/sdks/updater/README.md @@ -36,12 +36,13 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.updater.applyUpdates({ - tonight: BoolInt.One, - skip: BoolInt.One, + tonight: BoolInt.True, + skip: BoolInt.True, }); console.log(result); @@ -73,12 +74,13 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await updaterApplyUpdates(plexAPI, { - tonight: BoolInt.One, - skip: BoolInt.One, + tonight: BoolInt.True, + skip: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -133,11 +135,12 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const result = await plexAPI.updater.checkUpdates({ - download: BoolInt.One, + download: BoolInt.True, }); console.log(result); @@ -169,11 +172,12 @@ const plexAPI = new PlexAPICore({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function run() { const res = await updaterCheckUpdates(plexAPI, { - download: BoolInt.One, + download: BoolInt.True, }); if (res.ok) { const { value: result } = res; @@ -215,7 +219,9 @@ Get the status of updating the server ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -const plexAPI = new PlexAPI(); +const plexAPI = new PlexAPI({ + token: "", +}); async function run() { const result = await plexAPI.updater.getUpdatesStatus(); @@ -236,7 +242,9 @@ import { updaterGetUpdatesStatus } from "@lukehagar/plexjs/funcs/updaterGetUpdat // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. -const plexAPI = new PlexAPICore(); +const plexAPI = new PlexAPICore({ + token: "", +}); async function run() { const res = await updaterGetUpdatesStatus(plexAPI); diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md new file mode 100644 index 00000000..a58734a9 --- /dev/null +++ b/docs/sdks/users/README.md @@ -0,0 +1,104 @@ +# Users +(*users*) + +## Overview + +### Available Operations + +* [getUsers](#getusers) - Get list of all connected users + +## getUsers + +Get list of all users that are friends and have library access with the provided Plex authentication token + +### Example Usage + + +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +const plexAPI = new PlexAPI({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Chrome", + marketplace: "googlePlay", + token: "", +}); + +async function run() { + const result = await plexAPI.users.getUsers({}); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { PlexAPICore } from "@lukehagar/plexjs/core.js"; +import { usersGetUsers } from "@lukehagar/plexjs/funcs/usersGetUsers.js"; +import { Accepts } from "@lukehagar/plexjs/sdk/models/shared"; + +// Use `PlexAPICore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const plexAPI = new PlexAPICore({ + accepts: Accepts.ApplicationXml, + clientIdentifier: "3381b62b-9ab7-4e37-827b-203e9809eb58", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Chrome", + marketplace: "googlePlay", + token: "", +}); + +async function run() { + const res = await usersGetUsers(plexAPI, {}); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("usersGetUsers failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetUsersRequest](../../sdk/models/operations/getusersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | +| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**Promise\<[operations.GetUsersResponse](../../sdk/models/operations/getusersresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------- | -------------------------------- | -------------------------------- | +| errors.GetUsersBadRequestError | 400 | application/json | +| errors.GetUsersUnauthorizedError | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/types/rfcdate.md b/docs/types/rfcdate.md new file mode 100644 index 00000000..5d8591eb --- /dev/null +++ b/docs/types/rfcdate.md @@ -0,0 +1,11 @@ +# RFCDate + +`types.RFCDate` is a wrapper around Date that allows for JSON marshaling a date string formatted as "2006-01-02". + +## Usage + +```typescript +const d1 = new RFCDate(Date.now()); + +const d2 = new RFCDate("2019-01-01"); +``` \ No newline at end of file diff --git a/examples/package-lock.json b/examples/package-lock.json index 2fbeb9e1..87f6e12f 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -18,7 +18,7 @@ }, "..": { "name": "@lukehagar/plexjs", - "version": "0.43.0", + "version": "0.44.0", "dependencies": { "zod": "^3.25.0 || ^4.0.0" }, diff --git a/examples/transcoderStartTranscodeSession.example.ts b/examples/transcoderStartTranscodeSession.example.ts index e35a6af6..bd4b0583 100644 --- a/examples/transcoderStartTranscodeSession.example.ts +++ b/examples/transcoderStartTranscodeSession.example.ts @@ -36,6 +36,7 @@ const plexAPI = new PlexAPI({ deviceVendor: "Roku", deviceName: "Living Room TV", marketplace: "googlePlay", + token: "", }); async function main() { @@ -45,13 +46,13 @@ async function main() { advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, - autoAdjustQuality: BoolInt.One, - autoAdjustSubtitle: BoolInt.One, - directPlay: BoolInt.One, - directStream: BoolInt.One, - directStreamAudio: BoolInt.One, - disableResolutionRotation: BoolInt.One, - hasMDE: BoolInt.One, + autoAdjustQuality: BoolInt.True, + autoAdjustSubtitle: BoolInt.True, + directPlay: BoolInt.True, + directStream: BoolInt.True, + directStreamAudio: BoolInt.True, + disableResolutionRotation: BoolInt.True, + hasMDE: BoolInt.True, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, diff --git a/jsr.json b/jsr.json index c62fe74b..871ae548 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@lukehagar/plexjs", - "version": "0.43.0", + "version": "0.44.0", "exports": { ".": "./src/index.ts", "./sdk/models/errors": "./src/sdk/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index b0ed64be..479426d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lukehagar/plexjs", - "version": "0.43.0", + "version": "0.44.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@lukehagar/plexjs", - "version": "0.43.0", + "version": "0.44.0", "dependencies": { "zod": "^3.25.0 || ^4.0.0" }, diff --git a/package.json b/package.json index 898901e1..29bc6e30 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lukehagar/plexjs", - "version": "0.43.0", + "version": "0.44.0", "author": "LukeHagar", "main": "./index.js", "sideEffects": false, diff --git a/src/funcs/authenticationGetTokenDetails.ts b/src/funcs/authenticationGetTokenDetails.ts new file mode 100644 index 00000000..036a1698 --- /dev/null +++ b/src/funcs/authenticationGetTokenDetails.ts @@ -0,0 +1,237 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { PlexAPICore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../sdk/models/errors/httpclienterrors.js"; +import * as errors from "../sdk/models/errors/index.js"; +import { PlexAPIError } from "../sdk/models/errors/plexapierror.js"; +import { ResponseValidationError } from "../sdk/models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../sdk/models/errors/sdkvalidationerror.js"; +import { GetTokenDetailsServerList } from "../sdk/models/operations/gettokendetails.js"; +import * as operations from "../sdk/models/operations/index.js"; +import { APICall, APIPromise } from "../sdk/types/async.js"; +import { Result } from "../sdk/types/fp.js"; + +/** + * Get Token Details + * + * @remarks + * Get the User data from the provided X-Plex-Token + */ +export function authenticationGetTokenDetails( + client: PlexAPICore, + request: operations.GetTokenDetailsRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetTokenDetailsResponse, + | errors.GetTokenDetailsBadRequestError + | errors.GetTokenDetailsUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: PlexAPICore, + request: operations.GetTokenDetailsRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetTokenDetailsResponse, + | errors.GetTokenDetailsBadRequestError + | errors.GetTokenDetailsUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetTokenDetailsRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const baseURL = options?.serverURL + || pathToFunc(GetTokenDetailsServerList[0], { charEncoding: "percent" })(); + + const path = pathToFunc("/user")(); + + const headers = new Headers(compactMap({ + Accept: "application/json", + "X-Plex-Client-Identifier": encodeSimple( + "X-Plex-Client-Identifier", + payload["Client-Identifier"] ?? client._options.clientIdentifier, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device": encodeSimple( + "X-Plex-Device", + payload.Device ?? client._options.device, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Name": encodeSimple( + "X-Plex-Device-Name", + payload["Device-Name"] ?? client._options.deviceName, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Vendor": encodeSimple( + "X-Plex-Device-Vendor", + payload["Device-Vendor"] ?? client._options.deviceVendor, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Marketplace": encodeSimple( + "X-Plex-Marketplace", + payload.Marketplace ?? client._options.marketplace, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Model": encodeSimple( + "X-Plex-Model", + payload.Model ?? client._options.model, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform": encodeSimple( + "X-Plex-Platform", + payload.Platform ?? client._options.platform, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform-Version": encodeSimple( + "X-Plex-Platform-Version", + payload["Platform-Version"] ?? client._options.platformVersion, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Product": encodeSimple( + "X-Plex-Product", + payload.Product ?? client._options.product, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Version": encodeSimple( + "X-Plex-Version", + payload.Version ?? client._options.version, + { explode: false, charEncoding: "none" }, + ), + "accepts": encodeSimple( + "accepts", + payload.accepts ?? client._options.accepts, + { explode: false, charEncoding: "none" }, + ), + })); + + const secConfig = await extractSecurity(client._options.token); + const securityInput = secConfig == null ? {} : { token: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: baseURL ?? "", + operationID: "getTokenDetails", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.token, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: baseURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + ContentType: response.headers.get("content-type") + ?? "application/octet-stream", + StatusCode: response.status, + RawResponse: response, + Headers: {}, + }; + + const [result] = await M.match< + operations.GetTokenDetailsResponse, + | errors.GetTokenDetailsBadRequestError + | errors.GetTokenDetailsUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetTokenDetailsResponse$inboundSchema, { + key: "UserPlexAccount", + }), + M.jsonErr(400, errors.GetTokenDetailsBadRequestError$inboundSchema), + M.jsonErr(401, errors.GetTokenDetailsUnauthorizedError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/src/funcs/authenticationPostUsersSignInData.ts b/src/funcs/authenticationPostUsersSignInData.ts new file mode 100644 index 00000000..5a7cd8d0 --- /dev/null +++ b/src/funcs/authenticationPostUsersSignInData.ts @@ -0,0 +1,238 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { PlexAPICore } from "../core.js"; +import { encodeBodyForm, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { pathToFunc } from "../lib/url.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../sdk/models/errors/httpclienterrors.js"; +import * as errors from "../sdk/models/errors/index.js"; +import { PlexAPIError } from "../sdk/models/errors/plexapierror.js"; +import { ResponseValidationError } from "../sdk/models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../sdk/models/errors/sdkvalidationerror.js"; +import * as operations from "../sdk/models/operations/index.js"; +import { PostUsersSignInDataServerList } from "../sdk/models/operations/postuserssignindata.js"; +import { APICall, APIPromise } from "../sdk/types/async.js"; +import { Result } from "../sdk/types/fp.js"; + +/** + * Get User Sign In Data + * + * @remarks + * Sign in user with username and password and return user data with Plex authentication token + */ +export function authenticationPostUsersSignInData( + client: PlexAPICore, + request: operations.PostUsersSignInDataRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.PostUsersSignInDataResponse, + | errors.PostUsersSignInDataBadRequestError + | errors.PostUsersSignInDataUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: PlexAPICore, + request: operations.PostUsersSignInDataRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.PostUsersSignInDataResponse, + | errors.PostUsersSignInDataBadRequestError + | errors.PostUsersSignInDataUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.PostUsersSignInDataRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + + const body = Object.entries(payload.RequestBody || {}).map(([k, v]) => { + return encodeBodyForm(k, v, { charEncoding: "percent" }); + }).join("&"); + + const baseURL = options?.serverURL + || pathToFunc(PostUsersSignInDataServerList[0], { + charEncoding: "percent", + })(); + + const path = pathToFunc("/users/signin")(); + + const headers = new Headers(compactMap({ + "Content-Type": "application/x-www-form-urlencoded", + Accept: "application/json", + "X-Plex-Client-Identifier": encodeSimple( + "X-Plex-Client-Identifier", + payload["Client-Identifier"] ?? client._options.clientIdentifier, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device": encodeSimple( + "X-Plex-Device", + payload.Device ?? client._options.device, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Name": encodeSimple( + "X-Plex-Device-Name", + payload["Device-Name"] ?? client._options.deviceName, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Vendor": encodeSimple( + "X-Plex-Device-Vendor", + payload["Device-Vendor"] ?? client._options.deviceVendor, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Marketplace": encodeSimple( + "X-Plex-Marketplace", + payload.Marketplace ?? client._options.marketplace, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Model": encodeSimple( + "X-Plex-Model", + payload.Model ?? client._options.model, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform": encodeSimple( + "X-Plex-Platform", + payload.Platform ?? client._options.platform, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform-Version": encodeSimple( + "X-Plex-Platform-Version", + payload["Platform-Version"] ?? client._options.platformVersion, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Product": encodeSimple( + "X-Plex-Product", + payload.Product ?? client._options.product, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Version": encodeSimple( + "X-Plex-Version", + payload.Version ?? client._options.version, + { explode: false, charEncoding: "none" }, + ), + "accepts": encodeSimple( + "accepts", + payload.accepts ?? client._options.accepts, + { explode: false, charEncoding: "none" }, + ), + })); + + const context = { + options: client._options, + baseURL: baseURL ?? "", + operationID: "post-users-sign-in-data", + oAuth2Scopes: null, + + resolvedSecurity: null, + + securitySource: null, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + method: "POST", + baseURL: baseURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + ContentType: response.headers.get("content-type") + ?? "application/octet-stream", + StatusCode: response.status, + RawResponse: response, + Headers: {}, + }; + + const [result] = await M.match< + operations.PostUsersSignInDataResponse, + | errors.PostUsersSignInDataBadRequestError + | errors.PostUsersSignInDataUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(201, operations.PostUsersSignInDataResponse$inboundSchema, { + key: "UserPlexAccount", + }), + M.jsonErr(400, errors.PostUsersSignInDataBadRequestError$inboundSchema), + M.jsonErr(401, errors.PostUsersSignInDataUnauthorizedError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/src/funcs/butlerStartTask.ts b/src/funcs/butlerStartTask.ts index 8cbf47dd..9919cbaa 100644 --- a/src/funcs/butlerStartTask.ts +++ b/src/funcs/butlerStartTask.ts @@ -86,13 +86,13 @@ async function $do( const body = null; const pathParams = { - task: encodeSimple("task", payload.task, { + butlerTask: encodeSimple("butlerTask", payload.butlerTask, { explode: false, charEncoding: "percent", }), }; - const path = pathToFunc("/butler/{task}")(pathParams); + const path = pathToFunc("/butler/{butlerTask}")(pathParams); const headers = new Headers(compactMap({ Accept: "*/*", diff --git a/src/funcs/butlerStopTask.ts b/src/funcs/butlerStopTask.ts index 885b7396..0fd4b6c6 100644 --- a/src/funcs/butlerStopTask.ts +++ b/src/funcs/butlerStopTask.ts @@ -86,13 +86,13 @@ async function $do( const body = null; const pathParams = { - task: encodeSimple("task", payload.task, { + butlerTask: encodeSimple("butlerTask", payload.butlerTask, { explode: false, charEncoding: "percent", }), }; - const path = pathToFunc("/butler/{task}")(pathParams); + const path = pathToFunc("/butler/{butlerTask}")(pathParams); const headers = new Headers(compactMap({ Accept: "*/*", diff --git a/src/funcs/contentListContent.ts b/src/funcs/contentListContent.ts index 0cb93093..52bd4f6a 100644 --- a/src/funcs/contentListContent.ts +++ b/src/funcs/contentListContent.ts @@ -95,7 +95,11 @@ async function $do( const path = pathToFunc("/library/sections/{sectionId}/all")(pathParams); const query = encodeFormQuery({ + "includeGuids": payload.includeGuids, + "includeMeta": payload.includeMeta, "mediaQuery": payload.mediaQuery, + "X-Plex-Container-Size": payload["X-Plex-Container-Size"], + "X-Plex-Container-Start": payload["X-Plex-Container-Start"], }); const headers = new Headers(compactMap({ diff --git a/src/funcs/plexGetServerResources.ts b/src/funcs/plexGetServerResources.ts new file mode 100644 index 00000000..c301aa04 --- /dev/null +++ b/src/funcs/plexGetServerResources.ts @@ -0,0 +1,197 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { PlexAPICore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../sdk/models/errors/httpclienterrors.js"; +import * as errors from "../sdk/models/errors/index.js"; +import { PlexAPIError } from "../sdk/models/errors/plexapierror.js"; +import { ResponseValidationError } from "../sdk/models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../sdk/models/errors/sdkvalidationerror.js"; +import { GetServerResourcesServerList } from "../sdk/models/operations/getserverresources.js"; +import * as operations from "../sdk/models/operations/index.js"; +import { APICall, APIPromise } from "../sdk/types/async.js"; +import { Result } from "../sdk/types/fp.js"; + +/** + * Get Server Resources + * + * @remarks + * Get Plex server access tokens and server connections + */ +export function plexGetServerResources( + client: PlexAPICore, + request: operations.GetServerResourcesRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetServerResourcesResponse, + | errors.GetServerResourcesUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: PlexAPICore, + request: operations.GetServerResourcesRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetServerResourcesResponse, + | errors.GetServerResourcesUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetServerResourcesRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const baseURL = options?.serverURL + || pathToFunc(GetServerResourcesServerList[0], { + charEncoding: "percent", + })(); + + const path = pathToFunc("/resources")(); + + const query = encodeFormQuery({ + "includeHttps": payload.includeHttps, + "includeIPv6": payload.includeIPv6, + "includeRelay": payload.includeRelay, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + "X-Plex-Client-Identifier": encodeSimple( + "X-Plex-Client-Identifier", + payload["Client-Identifier"] ?? client._options.clientIdentifier, + { explode: false, charEncoding: "none" }, + ), + "accepts": encodeSimple( + "accepts", + payload.accepts ?? client._options.accepts, + { explode: false, charEncoding: "none" }, + ), + })); + + const secConfig = await extractSecurity(client._options.token); + const securityInput = secConfig == null ? {} : { token: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: baseURL ?? "", + operationID: "get-server-resources", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.token, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: baseURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + ContentType: response.headers.get("content-type") + ?? "application/octet-stream", + StatusCode: response.status, + RawResponse: response, + Headers: {}, + }; + + const [result] = await M.match< + operations.GetServerResourcesResponse, + | errors.GetServerResourcesUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetServerResourcesResponse$inboundSchema, { + key: "PlexDevices", + }), + M.jsonErr(401, errors.GetServerResourcesUnauthorizedError$inboundSchema), + M.fail([400, "4XX"]), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/src/funcs/usersGetUsers.ts b/src/funcs/usersGetUsers.ts new file mode 100644 index 00000000..c6a4ab16 --- /dev/null +++ b/src/funcs/usersGetUsers.ts @@ -0,0 +1,235 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { PlexAPICore } from "../core.js"; +import { encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../sdk/models/errors/httpclienterrors.js"; +import * as errors from "../sdk/models/errors/index.js"; +import { PlexAPIError } from "../sdk/models/errors/plexapierror.js"; +import { ResponseValidationError } from "../sdk/models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../sdk/models/errors/sdkvalidationerror.js"; +import { GetUsersServerList } from "../sdk/models/operations/getusers.js"; +import * as operations from "../sdk/models/operations/index.js"; +import { APICall, APIPromise } from "../sdk/types/async.js"; +import { Result } from "../sdk/types/fp.js"; + +/** + * Get list of all connected users + * + * @remarks + * Get list of all users that are friends and have library access with the provided Plex authentication token + */ +export function usersGetUsers( + client: PlexAPICore, + request: operations.GetUsersRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.GetUsersResponse, + | errors.GetUsersBadRequestError + | errors.GetUsersUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: PlexAPICore, + request: operations.GetUsersRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.GetUsersResponse, + | errors.GetUsersBadRequestError + | errors.GetUsersUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => operations.GetUsersRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const baseURL = options?.serverURL + || pathToFunc(GetUsersServerList[0], { charEncoding: "percent" })(); + + const path = pathToFunc("/users")(); + + const headers = new Headers(compactMap({ + Accept: "application/json", + "X-Plex-Client-Identifier": encodeSimple( + "X-Plex-Client-Identifier", + payload["Client-Identifier"] ?? client._options.clientIdentifier, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device": encodeSimple( + "X-Plex-Device", + payload.Device ?? client._options.device, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Name": encodeSimple( + "X-Plex-Device-Name", + payload["Device-Name"] ?? client._options.deviceName, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Device-Vendor": encodeSimple( + "X-Plex-Device-Vendor", + payload["Device-Vendor"] ?? client._options.deviceVendor, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Marketplace": encodeSimple( + "X-Plex-Marketplace", + payload.Marketplace ?? client._options.marketplace, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Model": encodeSimple( + "X-Plex-Model", + payload.Model ?? client._options.model, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform": encodeSimple( + "X-Plex-Platform", + payload.Platform ?? client._options.platform, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Platform-Version": encodeSimple( + "X-Plex-Platform-Version", + payload["Platform-Version"] ?? client._options.platformVersion, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Product": encodeSimple( + "X-Plex-Product", + payload.Product ?? client._options.product, + { explode: false, charEncoding: "none" }, + ), + "X-Plex-Version": encodeSimple( + "X-Plex-Version", + payload.Version ?? client._options.version, + { explode: false, charEncoding: "none" }, + ), + "accepts": encodeSimple( + "accepts", + payload.accepts ?? client._options.accepts, + { explode: false, charEncoding: "none" }, + ), + })); + + const secConfig = await extractSecurity(client._options.token); + const securityInput = secConfig == null ? {} : { token: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: baseURL ?? "", + operationID: "get-users", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.token, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: baseURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + ContentType: response.headers.get("content-type") + ?? "application/octet-stream", + StatusCode: response.status, + RawResponse: response, + Headers: {}, + }; + + const [result] = await M.match< + operations.GetUsersResponse, + | errors.GetUsersBadRequestError + | errors.GetUsersUnauthorizedError + | PlexAPIError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, operations.GetUsersResponse$inboundSchema, { key: "object" }), + M.jsonErr(400, errors.GetUsersBadRequestError$inboundSchema), + M.jsonErr(401, errors.GetUsersUnauthorizedError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/src/lib/config.ts b/src/lib/config.ts index 9ea52af3..2d037038 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -156,7 +156,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.1.1", - sdkVersion: "0.43.0", - genVersion: "2.753.1", - userAgent: "speakeasy-sdk/typescript 0.43.0 2.753.1 1.1.1 @lukehagar/plexjs", + sdkVersion: "0.44.0", + genVersion: "2.767.2", + userAgent: "speakeasy-sdk/typescript 0.44.0 2.767.2 1.1.1 @lukehagar/plexjs", } as const; diff --git a/src/lib/encodings.ts b/src/lib/encodings.ts index 25c9dcba..31cd3733 100644 --- a/src/lib/encodings.ts +++ b/src/lib/encodings.ts @@ -102,8 +102,9 @@ export function encodeLabel( }); encValue = mapped?.join("").slice(1); } else { - const k = - options?.explode && isPlainObject(value) ? `${encodeString(pk)}=` : ""; + const k = options?.explode && isPlainObject(value) + ? `${encodeString(pk)}=` + : ""; encValue = `${k}${encodeValue(pv)}`; } @@ -426,6 +427,7 @@ export function queryJoin(...args: (string | undefined)[]): string { type QueryEncoderOptions = { explode?: boolean; charEncoding?: "percent" | "none"; + allowEmptyValue?: string[]; }; type QueryEncoder = ( @@ -440,7 +442,7 @@ type BulkQueryEncoder = ( ) => string; export function queryEncoder(f: QueryEncoder): BulkQueryEncoder { - const bulkEncode = function ( + const bulkEncode = function( values: Record, options?: QueryEncoderOptions, ): string { @@ -450,7 +452,19 @@ export function queryEncoder(f: QueryEncoder): BulkQueryEncoder { charEncoding: options?.charEncoding ?? "percent", }; + const allowEmptySet = new Set(options?.allowEmptyValue ?? []); + const encoded = Object.entries(values).map(([key, value]) => { + if (allowEmptySet.has(key)) { + if ( + value === undefined + || value === null + || value === "" + || (Array.isArray(value) && value.length === 0) + ) { + return `${encodeURIComponent(key)}=`; + } + } return f(key, value, opts); }); return queryJoin(...encoded); diff --git a/src/sdk/authentication.ts b/src/sdk/authentication.ts new file mode 100644 index 00000000..19f460ac --- /dev/null +++ b/src/sdk/authentication.ts @@ -0,0 +1,45 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { authenticationGetTokenDetails } from "../funcs/authenticationGetTokenDetails.js"; +import { authenticationPostUsersSignInData } from "../funcs/authenticationPostUsersSignInData.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as operations from "./models/operations/index.js"; +import { unwrapAsync } from "./types/fp.js"; + +export class Authentication extends ClientSDK { + /** + * Get Token Details + * + * @remarks + * Get the User data from the provided X-Plex-Token + */ + async getTokenDetails( + request: operations.GetTokenDetailsRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(authenticationGetTokenDetails( + this, + request, + options, + )); + } + + /** + * Get User Sign In Data + * + * @remarks + * Sign in user with username and password and return user data with Plex authentication token + */ + async postUsersSignInData( + request: operations.PostUsersSignInDataRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(authenticationPostUsersSignInData( + this, + request, + options, + )); + } +} diff --git a/src/sdk/models/errors/getserverresources.ts b/src/sdk/models/errors/getserverresources.ts new file mode 100644 index 00000000..5ac78874 --- /dev/null +++ b/src/sdk/models/errors/getserverresources.ts @@ -0,0 +1,69 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import * as operations from "../operations/index.js"; +import { PlexAPIError } from "./plexapierror.js"; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type GetServerResourcesUnauthorizedErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class GetServerResourcesUnauthorizedError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetServerResourcesUnauthorizedErrorData; + + constructor( + err: GetServerResourcesUnauthorizedErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "GetServerResourcesUnauthorizedError"; + } +} + +/** @internal */ +export const GetServerResourcesUnauthorizedError$inboundSchema: z.ZodType< + GetServerResourcesUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.GetServerResourcesError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetServerResourcesUnauthorizedError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); diff --git a/src/sdk/models/errors/gettokendetails.ts b/src/sdk/models/errors/gettokendetails.ts new file mode 100644 index 00000000..51afcca3 --- /dev/null +++ b/src/sdk/models/errors/gettokendetails.ts @@ -0,0 +1,130 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import * as operations from "../operations/index.js"; +import { PlexAPIError } from "./plexapierror.js"; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type GetTokenDetailsUnauthorizedErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class GetTokenDetailsUnauthorizedError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetTokenDetailsUnauthorizedErrorData; + + constructor( + err: GetTokenDetailsUnauthorizedErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "GetTokenDetailsUnauthorizedError"; + } +} + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export type GetTokenDetailsBadRequestErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export class GetTokenDetailsBadRequestError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetTokenDetailsBadRequestErrorData; + + constructor( + err: GetTokenDetailsBadRequestErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "GetTokenDetailsBadRequestError"; + } +} + +/** @internal */ +export const GetTokenDetailsUnauthorizedError$inboundSchema: z.ZodType< + GetTokenDetailsUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.GetTokenDetailsUnauthorizedError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetTokenDetailsUnauthorizedError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); + +/** @internal */ +export const GetTokenDetailsBadRequestError$inboundSchema: z.ZodType< + GetTokenDetailsBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.GetTokenDetailsBadRequestError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetTokenDetailsBadRequestError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); diff --git a/src/sdk/models/errors/getusers.ts b/src/sdk/models/errors/getusers.ts new file mode 100644 index 00000000..5cbca973 --- /dev/null +++ b/src/sdk/models/errors/getusers.ts @@ -0,0 +1,130 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import * as operations from "../operations/index.js"; +import { PlexAPIError } from "./plexapierror.js"; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type GetUsersUnauthorizedErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class GetUsersUnauthorizedError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetUsersUnauthorizedErrorData; + + constructor( + err: GetUsersUnauthorizedErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "GetUsersUnauthorizedError"; + } +} + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export type GetUsersBadRequestErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export class GetUsersBadRequestError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetUsersBadRequestErrorData; + + constructor( + err: GetUsersBadRequestErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "GetUsersBadRequestError"; + } +} + +/** @internal */ +export const GetUsersUnauthorizedError$inboundSchema: z.ZodType< + GetUsersUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.GetUsersUnauthorizedError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetUsersUnauthorizedError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); + +/** @internal */ +export const GetUsersBadRequestError$inboundSchema: z.ZodType< + GetUsersBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.GetUsersBadRequestError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetUsersBadRequestError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); diff --git a/src/sdk/models/errors/index.ts b/src/sdk/models/errors/index.ts index a8a7cb4d..cdc62497 100644 --- a/src/sdk/models/errors/index.ts +++ b/src/sdk/models/errors/index.ts @@ -2,8 +2,12 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ +export * from "./getserverresources.js"; +export * from "./gettokendetails.js"; +export * from "./getusers.js"; export * from "./httpclienterrors.js"; export * from "./plexapierror.js"; +export * from "./postuserssignindata.js"; export * from "./responsevalidationerror.js"; export * from "./sdkerror.js"; export * from "./sdkvalidationerror.js"; diff --git a/src/sdk/models/errors/postuserssignindata.ts b/src/sdk/models/errors/postuserssignindata.ts new file mode 100644 index 00000000..cc02b1e5 --- /dev/null +++ b/src/sdk/models/errors/postuserssignindata.ts @@ -0,0 +1,130 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import * as operations from "../operations/index.js"; +import { PlexAPIError } from "./plexapierror.js"; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type PostUsersSignInDataUnauthorizedErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class PostUsersSignInDataUnauthorizedError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: PostUsersSignInDataUnauthorizedErrorData; + + constructor( + err: PostUsersSignInDataUnauthorizedErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "PostUsersSignInDataUnauthorizedError"; + } +} + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export type PostUsersSignInDataBadRequestErrorData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export class PostUsersSignInDataBadRequestError extends PlexAPIError { + errors?: Array | undefined; + + /** The original data that was passed to this error instance. */ + data$: PostUsersSignInDataBadRequestErrorData; + + constructor( + err: PostUsersSignInDataBadRequestErrorData, + httpMeta: { response: Response; request: Request; body: string }, + ) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message, httpMeta); + this.data$ = err; + if (err.errors != null) this.errors = err.errors; + + this.name = "PostUsersSignInDataBadRequestError"; + } +} + +/** @internal */ +export const PostUsersSignInDataUnauthorizedError$inboundSchema: z.ZodType< + PostUsersSignInDataUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.PostUsersSignInDataUnauthorizedError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new PostUsersSignInDataUnauthorizedError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); + +/** @internal */ +export const PostUsersSignInDataBadRequestError$inboundSchema: z.ZodType< + PostUsersSignInDataBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => operations.PostUsersSignInDataBadRequestError$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), + request$: z.instanceof(Request), + response$: z.instanceof(Response), + body$: z.string(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new PostUsersSignInDataBadRequestError(remapped, { + request: v.request$, + response: v.response$, + body: v.body$, + }); + }); diff --git a/src/sdk/models/operations/adddownloadqueueitems.ts b/src/sdk/models/operations/adddownloadqueueitems.ts index 37820fa2..2e74c98e 100644 --- a/src/sdk/models/operations/adddownloadqueueitems.ts +++ b/src/sdk/models/operations/adddownloadqueueitems.ts @@ -192,7 +192,7 @@ export type AddDownloadQueueItemsRequest = { * * @remarks */ - protocol?: shared.Protocol | undefined; + protocol?: shared.ProtocolParameter | undefined; /** * Number of seconds to include in each transcoded segment */ @@ -301,13 +301,13 @@ export type AddDownloadQueueItemsRequest$Outbound = { advancedSubtitles?: string | undefined; audioBoost?: number | undefined; audioChannelCount?: number | undefined; - autoAdjustQuality?: number | undefined; - autoAdjustSubtitle?: number | undefined; - directPlay?: number | undefined; - directStream?: number | undefined; - directStreamAudio?: number | undefined; - disableResolutionRotation?: number | undefined; - hasMDE?: number | undefined; + autoAdjustQuality: number; + autoAdjustSubtitle: number; + directPlay: number; + directStream: number; + directStreamAudio: number; + disableResolutionRotation: number; + hasMDE: number; location?: string | undefined; mediaBufferSize?: number | undefined; mediaIndex?: number | undefined; @@ -348,13 +348,21 @@ export const AddDownloadQueueItemsRequest$outboundSchema: z.ZodType< advancedSubtitles: shared.AdvancedSubtitles$outboundSchema.optional(), audioBoost: z.number().int().optional(), audioChannelCount: z.number().int().optional(), - autoAdjustQuality: shared.BoolInt$outboundSchema.optional(), - autoAdjustSubtitle: shared.BoolInt$outboundSchema.optional(), - directPlay: shared.BoolInt$outboundSchema.optional(), - directStream: shared.BoolInt$outboundSchema.optional(), - directStreamAudio: shared.BoolInt$outboundSchema.optional(), - disableResolutionRotation: shared.BoolInt$outboundSchema.optional(), - hasMDE: shared.BoolInt$outboundSchema.optional(), + autoAdjustQuality: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + autoAdjustSubtitle: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + directPlay: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStream: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStreamAudio: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + disableResolutionRotation: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + hasMDE: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), location: shared.LocationParameter$outboundSchema.optional(), mediaBufferSize: z.number().int().optional(), mediaIndex: z.number().int().optional(), @@ -364,7 +372,7 @@ export const AddDownloadQueueItemsRequest$outboundSchema: z.ZodType< path: z.string().optional(), peakBitrate: z.number().int().optional(), photoResolution: z.string().optional(), - protocol: shared.Protocol$outboundSchema.optional(), + protocol: shared.ProtocolParameter$outboundSchema.optional(), secondsPerSegment: z.number().int().optional(), subtitleSize: z.number().int().optional(), subtitles: shared.Subtitles$outboundSchema.optional(), diff --git a/src/sdk/models/operations/addsection.ts b/src/sdk/models/operations/addsection.ts index 7c448df6..665c04f9 100644 --- a/src/sdk/models/operations/addsection.ts +++ b/src/sdk/models/operations/addsection.ts @@ -204,8 +204,8 @@ export type AddSectionRequest$Outbound = { language: string; locations?: Array | undefined; prefs?: AddSectionPrefs$Outbound | undefined; - relative?: number | undefined; - importFromiTunes?: number | undefined; + relative: number; + importFromiTunes: number; }; /** @internal */ @@ -233,8 +233,8 @@ export const AddSectionRequest$outboundSchema: z.ZodType< language: z.string(), locations: z.array(z.string()).optional(), prefs: z.lazy(() => AddSectionPrefs$outboundSchema).optional(), - relative: shared.BoolInt$outboundSchema.optional(), - importFromiTunes: shared.BoolInt$outboundSchema.optional(), + relative: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + importFromiTunes: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/addsubtitles.ts b/src/sdk/models/operations/addsubtitles.ts index 242a3593..ab171516 100644 --- a/src/sdk/models/operations/addsubtitles.ts +++ b/src/sdk/models/operations/addsubtitles.ts @@ -148,8 +148,8 @@ export type AddSubtitlesRequest$Outbound = { mediaItemID?: number | undefined; url?: string | undefined; format?: string | undefined; - forced?: number | undefined; - hearingImpaired?: number | undefined; + forced: number; + hearingImpaired: number; }; /** @internal */ @@ -175,8 +175,8 @@ export const AddSubtitlesRequest$outboundSchema: z.ZodType< mediaItemID: z.number().int().optional(), url: z.string().optional(), format: z.string().optional(), - forced: shared.BoolInt$outboundSchema.optional(), - hearingImpaired: shared.BoolInt$outboundSchema.optional(), + forced: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + hearingImpaired: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/addtoplayqueue.ts b/src/sdk/models/operations/addtoplayqueue.ts index 58e430cc..0585da78 100644 --- a/src/sdk/models/operations/addtoplayqueue.ts +++ b/src/sdk/models/operations/addtoplayqueue.ts @@ -156,7 +156,7 @@ export type AddToPlayQueueRequest$Outbound = { playQueueId: number; uri?: string | undefined; playlistID?: string | undefined; - next?: number | undefined; + next: number; }; /** @internal */ @@ -179,7 +179,7 @@ export const AddToPlayQueueRequest$outboundSchema: z.ZodType< playQueueId: z.number().int(), uri: z.string().optional(), playlistID: z.string().optional(), - next: shared.BoolInt$outboundSchema.optional(), + next: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/applyupdates.ts b/src/sdk/models/operations/applyupdates.ts index b0c84e6e..f6660f6f 100644 --- a/src/sdk/models/operations/applyupdates.ts +++ b/src/sdk/models/operations/applyupdates.ts @@ -139,8 +139,8 @@ export type ApplyUpdatesRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - tonight?: number | undefined; - skip?: number | undefined; + tonight: number; + skip: number; }; /** @internal */ @@ -160,8 +160,8 @@ export const ApplyUpdatesRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - tonight: shared.BoolInt$outboundSchema.optional(), - skip: shared.BoolInt$outboundSchema.optional(), + tonight: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + skip: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/autocomplete.ts b/src/sdk/models/operations/autocomplete.ts index 09422ae6..4ac3b88c 100644 --- a/src/sdk/models/operations/autocomplete.ts +++ b/src/sdk/models/operations/autocomplete.ts @@ -114,7 +114,24 @@ export type AutocompleteRequest = { */ fieldQuery?: string | undefined; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; }; diff --git a/src/sdk/models/operations/checkupdates.ts b/src/sdk/models/operations/checkupdates.ts index 226c5770..8f3df235 100644 --- a/src/sdk/models/operations/checkupdates.ts +++ b/src/sdk/models/operations/checkupdates.ts @@ -135,7 +135,7 @@ export type CheckUpdatesRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - download?: number | undefined; + download: number; }; /** @internal */ @@ -155,7 +155,7 @@ export const CheckUpdatesRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - download: shared.BoolInt$outboundSchema.optional(), + download: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/createcollection.ts b/src/sdk/models/operations/createcollection.ts index c4dfda1f..1502101f 100644 --- a/src/sdk/models/operations/createcollection.ts +++ b/src/sdk/models/operations/createcollection.ts @@ -118,9 +118,23 @@ export type CreateCollectionRequest = { */ uri?: string | undefined; /** - * The metadata type to filter by + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ - type?: number | undefined; + type?: shared.MediaType | undefined; }; export type CreateCollectionResponse = { @@ -183,7 +197,7 @@ export const CreateCollectionRequest$outboundSchema: z.ZodType< title: z.string().optional(), smart: z.boolean().optional(), uri: z.string().optional(), - type: z.number().int().optional(), + type: shared.MediaType$outboundSchema.optional(), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/createcustomhub.ts b/src/sdk/models/operations/createcustomhub.ts index df6be747..48a905c3 100644 --- a/src/sdk/models/operations/createcustomhub.ts +++ b/src/sdk/models/operations/createcustomhub.ts @@ -153,9 +153,9 @@ export type CreateCustomHubRequest$Outbound = { Marketplace?: string | undefined; sectionId: number; metadataItemId: number; - promotedToRecommended?: number | undefined; - promotedToOwnHome?: number | undefined; - promotedToSharedHome?: number | undefined; + promotedToRecommended: number; + promotedToOwnHome: number; + promotedToSharedHome: number; }; /** @internal */ @@ -177,9 +177,15 @@ export const CreateCustomHubRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), sectionId: z.number().int(), metadataItemId: z.number().int(), - promotedToRecommended: shared.BoolInt$outboundSchema.optional(), - promotedToOwnHome: shared.BoolInt$outboundSchema.optional(), - promotedToSharedHome: shared.BoolInt$outboundSchema.optional(), + promotedToRecommended: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + promotedToOwnHome: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + promotedToSharedHome: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/createplayqueue.ts b/src/sdk/models/operations/createplayqueue.ts index de2ca171..d914c047 100644 --- a/src/sdk/models/operations/createplayqueue.ts +++ b/src/sdk/models/operations/createplayqueue.ts @@ -261,12 +261,12 @@ export type CreatePlayQueueRequest$Outbound = { playlistID?: number | undefined; type: string; key?: string | undefined; - shuffle?: number | undefined; - repeat?: number | undefined; - continuous?: number | undefined; + shuffle: number; + repeat: number; + continuous: number; extrasPrefixCount?: number | undefined; - recursive?: number | undefined; - onDeck?: number | undefined; + recursive: number; + onDeck: number; }; /** @internal */ @@ -290,12 +290,12 @@ export const CreatePlayQueueRequest$outboundSchema: z.ZodType< playlistID: z.number().int().optional(), type: CreatePlayQueueType$outboundSchema, key: z.string().optional(), - shuffle: shared.BoolInt$outboundSchema.optional(), - repeat: shared.BoolInt$outboundSchema.optional(), - continuous: shared.BoolInt$outboundSchema.optional(), + shuffle: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + repeat: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + continuous: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), extrasPrefixCount: z.number().int().optional(), - recursive: shared.BoolInt$outboundSchema.optional(), - onDeck: shared.BoolInt$outboundSchema.optional(), + recursive: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + onDeck: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/deletelibrarysection.ts b/src/sdk/models/operations/deletelibrarysection.ts index aa0fb306..74bd95d5 100644 --- a/src/sdk/models/operations/deletelibrarysection.ts +++ b/src/sdk/models/operations/deletelibrarysection.ts @@ -140,7 +140,7 @@ export type DeleteLibrarySectionRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; sectionId: string; - async?: number | undefined; + async: number; }; /** @internal */ @@ -161,7 +161,7 @@ export const DeleteLibrarySectionRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), sectionId: z.string(), - async: shared.BoolInt$outboundSchema.optional(), + async: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/deletemediaitem.ts b/src/sdk/models/operations/deletemediaitem.ts index 880c6d21..a43d4bdc 100644 --- a/src/sdk/models/operations/deletemediaitem.ts +++ b/src/sdk/models/operations/deletemediaitem.ts @@ -139,7 +139,7 @@ export type DeleteMediaItemRequest$Outbound = { Marketplace?: string | undefined; ids: string; mediaItem: string; - proxy?: number | undefined; + proxy: number; }; /** @internal */ @@ -161,7 +161,7 @@ export const DeleteMediaItemRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), ids: z.string(), mediaItem: z.string(), - proxy: shared.BoolInt$outboundSchema.optional(), + proxy: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/deletemetadataitem.ts b/src/sdk/models/operations/deletemetadataitem.ts index a09e8713..8ee35eac 100644 --- a/src/sdk/models/operations/deletemetadataitem.ts +++ b/src/sdk/models/operations/deletemetadataitem.ts @@ -137,7 +137,7 @@ export type DeleteMetadataItemRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - proxy?: number | undefined; + proxy: number; }; /** @internal */ @@ -158,7 +158,7 @@ export const DeleteMetadataItemRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - proxy: shared.BoolInt$outboundSchema.optional(), + proxy: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/detectcredits.ts b/src/sdk/models/operations/detectcredits.ts index 86eaa95d..67d0386e 100644 --- a/src/sdk/models/operations/detectcredits.ts +++ b/src/sdk/models/operations/detectcredits.ts @@ -135,8 +135,8 @@ export type DetectCreditsRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - force?: number | undefined; - manual?: number | undefined; + force: number; + manual: number; }; /** @internal */ @@ -157,8 +157,8 @@ export const DetectCreditsRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - force: shared.BoolInt$outboundSchema.optional(), - manual: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + manual: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/detectintros.ts b/src/sdk/models/operations/detectintros.ts index 372e7bfe..57a37cc0 100644 --- a/src/sdk/models/operations/detectintros.ts +++ b/src/sdk/models/operations/detectintros.ts @@ -141,7 +141,7 @@ export type DetectIntrosRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - force?: number | undefined; + force: number; threshold?: number | undefined; }; @@ -163,7 +163,7 @@ export const DetectIntrosRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - force: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), threshold: z.number().optional(), }).transform((v) => { return remap$(v, { diff --git a/src/sdk/models/operations/detectvoiceactivity.ts b/src/sdk/models/operations/detectvoiceactivity.ts index 08249221..6cf34485 100644 --- a/src/sdk/models/operations/detectvoiceactivity.ts +++ b/src/sdk/models/operations/detectvoiceactivity.ts @@ -141,8 +141,8 @@ export type DetectVoiceActivityRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - force?: number | undefined; - manual?: number | undefined; + force: number; + manual: number; }; /** @internal */ @@ -163,8 +163,8 @@ export const DetectVoiceActivityRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - force: shared.BoolInt$outboundSchema.optional(), - manual: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + manual: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/generatethumbs.ts b/src/sdk/models/operations/generatethumbs.ts index ff8a0d11..92c47941 100644 --- a/src/sdk/models/operations/generatethumbs.ts +++ b/src/sdk/models/operations/generatethumbs.ts @@ -134,7 +134,7 @@ export type GenerateThumbsRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - force?: number | undefined; + force: number; }; /** @internal */ @@ -155,7 +155,7 @@ export const GenerateThumbsRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - force: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getallhubs.ts b/src/sdk/models/operations/getallhubs.ts index a40958a8..63bbe661 100644 --- a/src/sdk/models/operations/getallhubs.ts +++ b/src/sdk/models/operations/getallhubs.ts @@ -181,7 +181,7 @@ export type GetAllHubsRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; count?: number | undefined; - onlyTransient?: number | undefined; + onlyTransient: number; identifier?: Array | undefined; }; @@ -203,7 +203,7 @@ export const GetAllHubsRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), count: z.number().int().optional(), - onlyTransient: shared.BoolInt$outboundSchema.optional(), + onlyTransient: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), identifier: z.array(z.string()).optional(), }).transform((v) => { return remap$(v, { diff --git a/src/sdk/models/operations/getallsubscriptions.ts b/src/sdk/models/operations/getallsubscriptions.ts index 05f49d66..55fc5b4c 100644 --- a/src/sdk/models/operations/getallsubscriptions.ts +++ b/src/sdk/models/operations/getallsubscriptions.ts @@ -146,8 +146,8 @@ export type GetAllSubscriptionsRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - includeGrabs?: number | undefined; - includeStorage?: number | undefined; + includeGrabs: number; + includeStorage: number; }; /** @internal */ @@ -167,8 +167,8 @@ export const GetAllSubscriptionsRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - includeGrabs: shared.BoolInt$outboundSchema.optional(), - includeStorage: shared.BoolInt$outboundSchema.optional(), + includeGrabs: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + includeStorage: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getaugmentationstatus.ts b/src/sdk/models/operations/getaugmentationstatus.ts index 7c7a276f..c2fa0198 100644 --- a/src/sdk/models/operations/getaugmentationstatus.ts +++ b/src/sdk/models/operations/getaugmentationstatus.ts @@ -140,7 +140,7 @@ export type GetAugmentationStatusRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; augmentationId: string; - wait?: number | undefined; + wait: number; }; /** @internal */ @@ -161,7 +161,7 @@ export const GetAugmentationStatusRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), augmentationId: z.string(), - wait: shared.BoolInt$outboundSchema.optional(), + wait: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getcollections.ts b/src/sdk/models/operations/getcollections.ts index 76500760..c50c33d3 100644 --- a/src/sdk/models/operations/getcollections.ts +++ b/src/sdk/models/operations/getcollections.ts @@ -106,7 +106,24 @@ export type GetCollectionsRequest = { */ sectionId: number; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; }; diff --git a/src/sdk/models/operations/getcommon.ts b/src/sdk/models/operations/getcommon.ts index fe88d55e..44cb36cf 100644 --- a/src/sdk/models/operations/getcommon.ts +++ b/src/sdk/models/operations/getcommon.ts @@ -110,7 +110,24 @@ export type GetCommonRequest = { */ type?: number | undefined; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; }; diff --git a/src/sdk/models/operations/getfirstcharacters.ts b/src/sdk/models/operations/getfirstcharacters.ts index ccf34712..3dd37962 100644 --- a/src/sdk/models/operations/getfirstcharacters.ts +++ b/src/sdk/models/operations/getfirstcharacters.ts @@ -114,7 +114,24 @@ export type GetFirstCharactersRequest = { */ sort?: number | undefined; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; }; diff --git a/src/sdk/models/operations/getimage.ts b/src/sdk/models/operations/getimage.ts index c69e2e45..07fd9519 100644 --- a/src/sdk/models/operations/getimage.ts +++ b/src/sdk/models/operations/getimage.ts @@ -169,7 +169,7 @@ export type GetImageRequest$Outbound = { bottomLeft?: string | undefined; width?: number | undefined; height?: number | undefined; - noise?: number | undefined; + noise: number; }; /** @internal */ @@ -195,7 +195,7 @@ export const GetImageRequest$outboundSchema: z.ZodType< bottomLeft: z.string().optional(), width: z.number().int().optional(), height: z.number().int().optional(), - noise: shared.BoolInt$outboundSchema.optional(), + noise: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getlibrarydetails.ts b/src/sdk/models/operations/getlibrarydetails.ts index 85001d82..1db031cb 100644 --- a/src/sdk/models/operations/getlibrarydetails.ts +++ b/src/sdk/models/operations/getlibrarydetails.ts @@ -176,7 +176,7 @@ export type GetLibraryDetailsRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; sectionId: string; - includeDetails?: number | undefined; + includeDetails: number; }; /** @internal */ @@ -197,7 +197,7 @@ export const GetLibraryDetailsRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), sectionId: z.string(), - includeDetails: shared.BoolInt$outboundSchema.optional(), + includeDetails: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getlibraryitems.ts b/src/sdk/models/operations/getlibraryitems.ts index 7abbdf0f..294044fd 100644 --- a/src/sdk/models/operations/getlibraryitems.ts +++ b/src/sdk/models/operations/getlibraryitems.ts @@ -102,7 +102,24 @@ export type GetLibraryItemsRequest = { */ marketplace?: string | undefined; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; }; diff --git a/src/sdk/models/operations/getlibrarymatches.ts b/src/sdk/models/operations/getlibrarymatches.ts index 7ab67bee..73443dab 100644 --- a/src/sdk/models/operations/getlibrarymatches.ts +++ b/src/sdk/models/operations/getlibrarymatches.ts @@ -102,9 +102,23 @@ export type GetLibraryMatchesRequest = { */ marketplace?: string | undefined; /** - * The metadata type to filter by + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ - type?: number | undefined; + type?: shared.MediaType | undefined; includeFullMetadata?: shared.BoolInt | undefined; includeAncestorMetadata?: shared.BoolInt | undefined; includeAlternateMetadataSources?: shared.BoolInt | undefined; @@ -184,9 +198,9 @@ export type GetLibraryMatchesRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; type?: number | undefined; - includeFullMetadata?: number | undefined; - includeAncestorMetadata?: number | undefined; - includeAlternateMetadataSources?: number | undefined; + includeFullMetadata: number; + includeAncestorMetadata: number; + includeAlternateMetadataSources: number; guid?: string | undefined; title?: string | undefined; year?: number | undefined; @@ -216,10 +230,16 @@ export const GetLibraryMatchesRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - type: z.number().int().optional(), - includeFullMetadata: shared.BoolInt$outboundSchema.optional(), - includeAncestorMetadata: shared.BoolInt$outboundSchema.optional(), - includeAlternateMetadataSources: shared.BoolInt$outboundSchema.optional(), + type: shared.MediaType$outboundSchema.optional(), + includeFullMetadata: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + includeAncestorMetadata: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + includeAlternateMetadataSources: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), guid: z.string().optional(), title: z.string().optional(), year: z.number().int().optional(), diff --git a/src/sdk/models/operations/getmediapart.ts b/src/sdk/models/operations/getmediapart.ts index d7133479..122d6e4d 100644 --- a/src/sdk/models/operations/getmediapart.ts +++ b/src/sdk/models/operations/getmediapart.ts @@ -151,7 +151,7 @@ export type GetMediaPartRequest$Outbound = { partId: number; changestamp: number; filename: string; - download?: number | undefined; + download: number; }; /** @internal */ @@ -174,7 +174,7 @@ export const GetMediaPartRequest$outboundSchema: z.ZodType< partId: z.number().int(), changestamp: z.number().int(), filename: z.string(), - download: shared.BoolInt$outboundSchema.optional(), + download: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getmetadatahubs.ts b/src/sdk/models/operations/getmetadatahubs.ts index fb24e7ef..60ae1570 100644 --- a/src/sdk/models/operations/getmetadatahubs.ts +++ b/src/sdk/models/operations/getmetadatahubs.ts @@ -150,7 +150,7 @@ export type GetMetadataHubsRequest$Outbound = { Marketplace?: string | undefined; metadataId: number; count?: number | undefined; - onlyTransient?: number | undefined; + onlyTransient: number; }; /** @internal */ @@ -172,7 +172,7 @@ export const GetMetadataHubsRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), metadataId: z.number().int(), count: z.number().int().optional(), - onlyTransient: shared.BoolInt$outboundSchema.optional(), + onlyTransient: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getmetadataitem.ts b/src/sdk/models/operations/getmetadataitem.ts index 92a8c90a..8f7946ac 100644 --- a/src/sdk/models/operations/getmetadataitem.ts +++ b/src/sdk/models/operations/getmetadataitem.ts @@ -170,14 +170,14 @@ export type GetMetadataItemRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: Array; - asyncCheckFiles?: number | undefined; - asyncRefreshLocalMediaAgent?: number | undefined; - asyncRefreshAnalysis?: number | undefined; - checkFiles?: number | undefined; - skipRefresh?: number | undefined; - checkFileAvailability?: number | undefined; - asyncAugmentMetadata?: number | undefined; - augmentCount?: number | undefined; + asyncCheckFiles: number; + asyncRefreshLocalMediaAgent: number; + asyncRefreshAnalysis: number; + checkFiles: number; + skipRefresh: number; + checkFileAvailability: number; + asyncAugmentMetadata: number; + augmentCount: number; }; /** @internal */ @@ -198,14 +198,22 @@ export const GetMetadataItemRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.array(z.string()), - asyncCheckFiles: shared.BoolInt$outboundSchema.optional(), - asyncRefreshLocalMediaAgent: shared.BoolInt$outboundSchema.optional(), - asyncRefreshAnalysis: shared.BoolInt$outboundSchema.optional(), - checkFiles: shared.BoolInt$outboundSchema.optional(), - skipRefresh: shared.BoolInt$outboundSchema.optional(), - checkFileAvailability: shared.BoolInt$outboundSchema.optional(), - asyncAugmentMetadata: shared.BoolInt$outboundSchema.optional(), - augmentCount: shared.BoolInt$outboundSchema.optional(), + asyncCheckFiles: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + asyncRefreshLocalMediaAgent: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + asyncRefreshAnalysis: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + checkFiles: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + skipRefresh: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + checkFileAvailability: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + asyncAugmentMetadata: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + augmentCount: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getplaylistgeneratoritems.ts b/src/sdk/models/operations/getplaylistgeneratoritems.ts index 14105d9f..747b2f1f 100644 --- a/src/sdk/models/operations/getplaylistgeneratoritems.ts +++ b/src/sdk/models/operations/getplaylistgeneratoritems.ts @@ -9,6 +9,7 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import * as shared from "../shared/index.js"; @@ -114,6 +115,15 @@ export type GetPlaylistGeneratorItemsRequest = { generatorId: number; }; +export type GetPlaylistGeneratorItemsGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * The state of processing if this generator is part of an optimizer playlist */ @@ -157,11 +167,11 @@ export type Metadata = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -169,11 +179,11 @@ export type Metadata = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -181,24 +191,28 @@ export type Metadata = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -214,6 +228,10 @@ export type Metadata = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -238,11 +256,15 @@ export type Metadata = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -251,10 +273,7 @@ export type Metadata = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -264,11 +283,15 @@ export type Metadata = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -296,7 +319,7 @@ export type Metadata = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -313,11 +336,11 @@ export type Metadata = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -342,31 +365,31 @@ export type Metadata = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -515,6 +538,25 @@ export function getPlaylistGeneratorItemsRequestToJSON( ); } +/** @internal */ +export const GetPlaylistGeneratorItemsGuid$inboundSchema: z.ZodType< + GetPlaylistGeneratorItemsGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function getPlaylistGeneratorItemsGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetPlaylistGeneratorItemsGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetPlaylistGeneratorItemsGuid' from JSON`, + ); +} + /** @internal */ export const ProcessingState$inboundSchema: z.ZodNativeEnum< typeof ProcessingState @@ -532,66 +574,71 @@ export const Metadata$inboundSchema: z.ZodType< unknown > = collectExtraKeys$( z.object({ - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(shared.Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(shared.Tag$inboundSchema).optional(), Director: z.array(shared.Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(shared.Filter$inboundSchema).optional(), Genre: z.array(shared.Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(shared.Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array(z.lazy(() => GetPlaylistGeneratorItemsGuid$inboundSchema)) + .optional(), + hero: z.string().optional(), Image: z.array(shared.Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(shared.Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(shared.Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(shared.Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(shared.Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -611,7 +658,7 @@ export const Metadata$inboundSchema: z.ZodType< "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/operations/getplayqueue.ts b/src/sdk/models/operations/getplayqueue.ts index 4c3e6e4a..e720e7cd 100644 --- a/src/sdk/models/operations/getplayqueue.ts +++ b/src/sdk/models/operations/getplayqueue.ts @@ -162,11 +162,11 @@ export type GetPlayQueueRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; playQueueId: number; - own?: number | undefined; + own: number; center?: string | undefined; window?: number | undefined; - includeBefore?: number | undefined; - includeAfter?: number | undefined; + includeBefore: number; + includeAfter: number; }; /** @internal */ @@ -187,11 +187,11 @@ export const GetPlayQueueRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), playQueueId: z.number().int(), - own: shared.BoolInt$outboundSchema.optional(), + own: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), center: z.string().optional(), window: z.number().int().optional(), - includeBefore: shared.BoolInt$outboundSchema.optional(), - includeAfter: shared.BoolInt$outboundSchema.optional(), + includeBefore: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + includeAfter: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getpostplayhubs.ts b/src/sdk/models/operations/getpostplayhubs.ts index 4f0f12c1..5f8b197f 100644 --- a/src/sdk/models/operations/getpostplayhubs.ts +++ b/src/sdk/models/operations/getpostplayhubs.ts @@ -150,7 +150,7 @@ export type GetPostplayHubsRequest$Outbound = { Marketplace?: string | undefined; metadataId: number; count?: number | undefined; - onlyTransient?: number | undefined; + onlyTransient: number; }; /** @internal */ @@ -172,7 +172,7 @@ export const GetPostplayHubsRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), metadataId: z.number().int(), count: z.number().int().optional(), - onlyTransient: shared.BoolInt$outboundSchema.optional(), + onlyTransient: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getrelatedhubs.ts b/src/sdk/models/operations/getrelatedhubs.ts index f8dc119f..4e8e190e 100644 --- a/src/sdk/models/operations/getrelatedhubs.ts +++ b/src/sdk/models/operations/getrelatedhubs.ts @@ -150,7 +150,7 @@ export type GetRelatedHubsRequest$Outbound = { Marketplace?: string | undefined; metadataId: number; count?: number | undefined; - onlyTransient?: number | undefined; + onlyTransient: number; }; /** @internal */ @@ -172,7 +172,7 @@ export const GetRelatedHubsRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), metadataId: z.number().int(), count: z.number().int().optional(), - onlyTransient: shared.BoolInt$outboundSchema.optional(), + onlyTransient: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getsectionhubs.ts b/src/sdk/models/operations/getsectionhubs.ts index 8b2d012e..7130bb60 100644 --- a/src/sdk/models/operations/getsectionhubs.ts +++ b/src/sdk/models/operations/getsectionhubs.ts @@ -182,7 +182,7 @@ export type GetSectionHubsRequest$Outbound = { Marketplace?: string | undefined; sectionId: number; count?: number | undefined; - onlyTransient?: number | undefined; + onlyTransient: number; }; /** @internal */ @@ -204,7 +204,7 @@ export const GetSectionHubsRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), sectionId: z.number().int(), count: z.number().int().optional(), - onlyTransient: shared.BoolInt$outboundSchema.optional(), + onlyTransient: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getsectionimage.ts b/src/sdk/models/operations/getsectionimage.ts index 22becaae..c3454a68 100644 --- a/src/sdk/models/operations/getsectionimage.ts +++ b/src/sdk/models/operations/getsectionimage.ts @@ -110,7 +110,24 @@ export type GetSectionImageRequest = { */ updatedAt: number; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; composite?: shared.Composite | undefined; diff --git a/src/sdk/models/operations/getserverresources.ts b/src/sdk/models/operations/getserverresources.ts new file mode 100644 index 00000000..4d925ffd --- /dev/null +++ b/src/sdk/models/operations/getserverresources.ts @@ -0,0 +1,199 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as shared from "../shared/index.js"; + +export const GetServerResourcesServerList = [ + "https://plex.tv/api/v2", +] as const; + +export type GetServerResourcesGlobals = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; +}; + +/** + * Include Https entries in the results + */ +export enum IncludeHttps { + False = 0, + True = 1, +} + +/** + * Include Relay addresses in the results + * + * @remarks + * E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 + */ +export enum IncludeRelay { + False = 0, + True = 1, +} + +/** + * Include IPv6 entries in the results + */ +export enum IncludeIPv6 { + False = 0, + True = 1, +} + +export type GetServerResourcesRequest = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * Include Https entries in the results + */ + includeHttps?: IncludeHttps | undefined; + /** + * Include Relay addresses in the results + * + * @remarks + * E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 + */ + includeRelay?: IncludeRelay | undefined; + /** + * Include IPv6 entries in the results + */ + includeIPv6?: IncludeIPv6 | undefined; +}; + +export type GetServerResourcesError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +export type GetServerResourcesResponse = { + /** + * HTTP response content type for this operation + */ + contentType: string; + /** + * HTTP response status code for this operation + */ + statusCode: number; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse: Response; + /** + * List of Plex Devices. This includes Plex hosted servers and clients + */ + plexDevices?: Array | undefined; +}; + +/** @internal */ +export const IncludeHttps$outboundSchema: z.ZodNativeEnum = + z.nativeEnum(IncludeHttps); + +/** @internal */ +export const IncludeRelay$outboundSchema: z.ZodNativeEnum = + z.nativeEnum(IncludeRelay); + +/** @internal */ +export const IncludeIPv6$outboundSchema: z.ZodNativeEnum = z + .nativeEnum(IncludeIPv6); + +/** @internal */ +export type GetServerResourcesRequest$Outbound = { + accepts: string; + "Client-Identifier"?: string | undefined; + includeHttps: number; + includeRelay: number; + includeIPv6: number; +}; + +/** @internal */ +export const GetServerResourcesRequest$outboundSchema: z.ZodType< + GetServerResourcesRequest$Outbound, + z.ZodTypeDef, + GetServerResourcesRequest +> = z.object({ + accepts: shared.Accepts$outboundSchema.default(shared.Accepts.ApplicationXml), + clientIdentifier: z.string().optional(), + includeHttps: IncludeHttps$outboundSchema.default(IncludeHttps.False), + includeRelay: IncludeRelay$outboundSchema.default(IncludeRelay.False), + includeIPv6: IncludeIPv6$outboundSchema.default(IncludeIPv6.False), +}).transform((v) => { + return remap$(v, { + clientIdentifier: "Client-Identifier", + }); +}); + +export function getServerResourcesRequestToJSON( + getServerResourcesRequest: GetServerResourcesRequest, +): string { + return JSON.stringify( + GetServerResourcesRequest$outboundSchema.parse(getServerResourcesRequest), + ); +} + +/** @internal */ +export const GetServerResourcesError$inboundSchema: z.ZodType< + GetServerResourcesError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function getServerResourcesErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetServerResourcesError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetServerResourcesError' from JSON`, + ); +} + +/** @internal */ +export const GetServerResourcesResponse$inboundSchema: z.ZodType< + GetServerResourcesResponse, + z.ZodTypeDef, + unknown +> = z.object({ + ContentType: z.string(), + StatusCode: z.number().int(), + RawResponse: z.instanceof(Response), + PlexDevices: z.array(shared.PlexDevice$inboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + "ContentType": "contentType", + "StatusCode": "statusCode", + "RawResponse": "rawResponse", + "PlexDevices": "plexDevices", + }); +}); + +export function getServerResourcesResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetServerResourcesResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetServerResourcesResponse' from JSON`, + ); +} diff --git a/src/sdk/models/operations/getsourceconnectioninformation.ts b/src/sdk/models/operations/getsourceconnectioninformation.ts index ddff1fc2..6ae8f380 100644 --- a/src/sdk/models/operations/getsourceconnectioninformation.ts +++ b/src/sdk/models/operations/getsourceconnectioninformation.ts @@ -198,7 +198,7 @@ export type GetSourceConnectionInformationRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; source: string; - refresh?: number | undefined; + refresh: number; }; /** @internal */ @@ -219,7 +219,7 @@ export const GetSourceConnectionInformationRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), source: z.string(), - refresh: shared.BoolInt$outboundSchema.optional(), + refresh: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getstream.ts b/src/sdk/models/operations/getstream.ts index 373c62ac..c8d433ca 100644 --- a/src/sdk/models/operations/getstream.ts +++ b/src/sdk/models/operations/getstream.ts @@ -155,7 +155,7 @@ export type GetStreamRequest$Outbound = { ext: string; encoding?: string | undefined; format?: string | undefined; - autoAdjustSubtitle?: number | undefined; + autoAdjustSubtitle: number; }; /** @internal */ @@ -179,7 +179,9 @@ export const GetStreamRequest$outboundSchema: z.ZodType< ext: z.string(), encoding: z.string().optional(), format: z.string().optional(), - autoAdjustSubtitle: shared.BoolInt$outboundSchema.optional(), + autoAdjustSubtitle: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/getsubscription.ts b/src/sdk/models/operations/getsubscription.ts index 76501eac..e116a073 100644 --- a/src/sdk/models/operations/getsubscription.ts +++ b/src/sdk/models/operations/getsubscription.ts @@ -147,8 +147,8 @@ export type GetSubscriptionRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; subscriptionId: number; - includeGrabs?: number | undefined; - includeStorage?: number | undefined; + includeGrabs: number; + includeStorage: number; }; /** @internal */ @@ -169,8 +169,8 @@ export const GetSubscriptionRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), subscriptionId: z.number().int(), - includeGrabs: shared.BoolInt$outboundSchema.optional(), - includeStorage: shared.BoolInt$outboundSchema.optional(), + includeGrabs: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + includeStorage: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/gettags.ts b/src/sdk/models/operations/gettags.ts index c58881b0..56db054f 100644 --- a/src/sdk/models/operations/gettags.ts +++ b/src/sdk/models/operations/gettags.ts @@ -102,9 +102,23 @@ export type GetTagsRequest = { */ marketplace?: string | undefined; /** - * The metadata type to filter by + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ - type?: number | undefined; + type?: shared.MediaType | undefined; }; export type GetTagsDirectory = { @@ -215,7 +229,7 @@ export const GetTagsRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - type: z.number().int().optional(), + type: shared.MediaType$outboundSchema.optional(), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/gettasks.ts b/src/sdk/models/operations/gettasks.ts index 84d364da..341c5e29 100644 --- a/src/sdk/models/operations/gettasks.ts +++ b/src/sdk/models/operations/gettasks.ts @@ -8,7 +8,7 @@ import { safeParse } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; -export type ButlerTask = { +export type GetTasksButlerTask = { /** * A user-friendly description of the task */ @@ -36,7 +36,7 @@ export type ButlerTask = { }; export type ButlerTasks = { - butlerTask?: Array | undefined; + butlerTask?: Array | undefined; }; /** @@ -66,8 +66,8 @@ export type GetTasksResponse = { }; /** @internal */ -export const ButlerTask$inboundSchema: z.ZodType< - ButlerTask, +export const GetTasksButlerTask$inboundSchema: z.ZodType< + GetTasksButlerTask, z.ZodTypeDef, unknown > = z.object({ @@ -79,13 +79,13 @@ export const ButlerTask$inboundSchema: z.ZodType< title: z.string().optional(), }); -export function butlerTaskFromJSON( +export function getTasksButlerTaskFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => ButlerTask$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ButlerTask' from JSON`, + (x) => GetTasksButlerTask$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetTasksButlerTask' from JSON`, ); } @@ -95,7 +95,8 @@ export const ButlerTasks$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - ButlerTask: z.array(z.lazy(() => ButlerTask$inboundSchema)).optional(), + ButlerTask: z.array(z.lazy(() => GetTasksButlerTask$inboundSchema)) + .optional(), }).transform((v) => { return remap$(v, { "ButlerTask": "butlerTask", diff --git a/src/sdk/models/operations/gettokendetails.ts b/src/sdk/models/operations/gettokendetails.ts new file mode 100644 index 00000000..f86d466f --- /dev/null +++ b/src/sdk/models/operations/gettokendetails.ts @@ -0,0 +1,265 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as shared from "../shared/index.js"; + +export const GetTokenDetailsServerList = [ + "https://plex.tv/api/v2", +] as const; + +export type GetTokenDetailsGlobals = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; +}; + +export type GetTokenDetailsRequest = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; +}; + +export type GetTokenDetailsUnauthorizedError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +export type GetTokenDetailsBadRequestError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +export type GetTokenDetailsResponse = { + /** + * HTTP response content type for this operation + */ + contentType: string; + /** + * HTTP response status code for this operation + */ + statusCode: number; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse: Response; + /** + * Logged in user details + */ + userPlexAccount?: shared.UserPlexAccount | undefined; +}; + +/** @internal */ +export type GetTokenDetailsRequest$Outbound = { + accepts: string; + "Client-Identifier"?: string | undefined; + Product?: string | undefined; + Version?: string | undefined; + Platform?: string | undefined; + "Platform-Version"?: string | undefined; + Device?: string | undefined; + Model?: string | undefined; + "Device-Vendor"?: string | undefined; + "Device-Name"?: string | undefined; + Marketplace?: string | undefined; +}; + +/** @internal */ +export const GetTokenDetailsRequest$outboundSchema: z.ZodType< + GetTokenDetailsRequest$Outbound, + z.ZodTypeDef, + GetTokenDetailsRequest +> = z.object({ + accepts: shared.Accepts$outboundSchema.default(shared.Accepts.ApplicationXml), + clientIdentifier: z.string().optional(), + product: z.string().optional(), + version: z.string().optional(), + platform: z.string().optional(), + platformVersion: z.string().optional(), + device: z.string().optional(), + model: z.string().optional(), + deviceVendor: z.string().optional(), + deviceName: z.string().optional(), + marketplace: z.string().optional(), +}).transform((v) => { + return remap$(v, { + clientIdentifier: "Client-Identifier", + product: "Product", + version: "Version", + platform: "Platform", + platformVersion: "Platform-Version", + device: "Device", + model: "Model", + deviceVendor: "Device-Vendor", + deviceName: "Device-Name", + marketplace: "Marketplace", + }); +}); + +export function getTokenDetailsRequestToJSON( + getTokenDetailsRequest: GetTokenDetailsRequest, +): string { + return JSON.stringify( + GetTokenDetailsRequest$outboundSchema.parse(getTokenDetailsRequest), + ); +} + +/** @internal */ +export const GetTokenDetailsUnauthorizedError$inboundSchema: z.ZodType< + GetTokenDetailsUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function getTokenDetailsUnauthorizedErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetTokenDetailsUnauthorizedError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetTokenDetailsUnauthorizedError' from JSON`, + ); +} + +/** @internal */ +export const GetTokenDetailsBadRequestError$inboundSchema: z.ZodType< + GetTokenDetailsBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function getTokenDetailsBadRequestErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetTokenDetailsBadRequestError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetTokenDetailsBadRequestError' from JSON`, + ); +} + +/** @internal */ +export const GetTokenDetailsResponse$inboundSchema: z.ZodType< + GetTokenDetailsResponse, + z.ZodTypeDef, + unknown +> = z.object({ + ContentType: z.string(), + StatusCode: z.number().int(), + RawResponse: z.instanceof(Response), + UserPlexAccount: shared.UserPlexAccount$inboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + "ContentType": "contentType", + "StatusCode": "statusCode", + "RawResponse": "rawResponse", + "UserPlexAccount": "userPlexAccount", + }); +}); + +export function getTokenDetailsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetTokenDetailsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetTokenDetailsResponse' from JSON`, + ); +} diff --git a/src/sdk/models/operations/getusers.ts b/src/sdk/models/operations/getusers.ts new file mode 100644 index 00000000..d7a534e8 --- /dev/null +++ b/src/sdk/models/operations/getusers.ts @@ -0,0 +1,643 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as shared from "../shared/index.js"; + +export const GetUsersServerList = [ + "https://plex.tv/api", +] as const; + +export type GetUsersGlobals = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; +}; + +export type GetUsersRequest = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; +}; + +export type GetUsersUnauthorizedError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +export type GetUsersBadRequestError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Indicates whether the account is protected. + */ +export enum Protected { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user is part of a home group. + */ +export enum Home { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user is allowed to use tuners. + */ +export enum AllowTuners { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user is allowed to sync media. + */ +export enum AllowSync { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user is allowed to upload from a camera. + */ +export enum AllowCameraUpload { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user has access to channels. + */ +export enum AllowChannels { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user can manage subtitles. + */ +export enum AllowSubtitleAdmin { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user has restricted access. + */ +export enum Restricted { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user has access to all libraries. + */ +export enum AllLibraries { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the user owns the server. + */ +export enum Owned { + Disable = 0, + Enable = 1, +} + +/** + * Indicates if the server is pending approval. + */ +export enum Pending { + Disable = 0, + Enable = 1, +} + +export type Server = { + /** + * Unique ID of the server of the connected user + */ + id: number; + /** + * ID of the actual Plex server. + */ + serverId: number; + /** + * Machine identifier of the Plex server. + */ + machineIdentifier: string; + /** + * Name of the Plex server of the connected user. + */ + name: string; + /** + * Unix epoch datetime in seconds + */ + lastSeenAt: number; + /** + * Number of libraries in the server this user has access to. + */ + numLibraries: number; + allLibraries?: AllLibraries | undefined; + owned?: Owned | undefined; + pending?: Pending | undefined; +}; + +export type User = { + /** + * User's unique ID. + */ + id: number; + /** + * User's display name. + */ + title: string; + /** + * User's username. + */ + username: string; + /** + * User's email address. + */ + email: string; + /** + * ID of the user's recommendation playlist. + */ + recommendationsPlaylistId?: string | null | undefined; + /** + * URL to the user's avatar image. + */ + thumb: string; + protected?: Protected | undefined; + home?: Home | undefined; + allowTuners?: AllowTuners | undefined; + allowSync?: AllowSync | undefined; + allowCameraUpload?: AllowCameraUpload | undefined; + allowChannels?: AllowChannels | undefined; + allowSubtitleAdmin?: AllowSubtitleAdmin | undefined; + /** + * Filters applied for all content. + */ + filterAll?: string | null | undefined; + /** + * Filters applied for movies. + */ + filterMovies?: string | null | undefined; + /** + * Filters applied for music. + */ + filterMusic?: string | null | undefined; + /** + * Filters applied for photos. + */ + filterPhotos?: string | null | undefined; + /** + * Filters applied for television. + */ + filterTelevision?: string | undefined; + restricted?: Restricted | undefined; + /** + * List of servers owned by the user. + */ + server: Array; +}; + +/** + * Container holding user and server details. + */ +export type GetUsersMediaContainer = { + /** + * The friendly name of the Plex instance. + */ + friendlyName: string; + identifier: string; + /** + * Unique Machine identifier of the Plex server. + */ + machineIdentifier: string; + /** + * Total number of users. + */ + totalSize: number; + /** + * Number of users in the current response. + */ + size: number; + /** + * List of users with access to the Plex server. + */ + user: Array; +}; + +/** + * Successful response with media container data in JSON + */ +export type GetUsersResponseBody = { + /** + * Container holding user and server details. + */ + mediaContainer?: GetUsersMediaContainer | undefined; +}; + +export type GetUsersResponse = { + /** + * HTTP response content type for this operation + */ + contentType: string; + /** + * HTTP response status code for this operation + */ + statusCode: number; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse: Response; + /** + * Successful response with media container data in JSON + */ + object?: GetUsersResponseBody | undefined; +}; + +/** @internal */ +export type GetUsersRequest$Outbound = { + accepts: string; + "Client-Identifier"?: string | undefined; + Product?: string | undefined; + Version?: string | undefined; + Platform?: string | undefined; + "Platform-Version"?: string | undefined; + Device?: string | undefined; + Model?: string | undefined; + "Device-Vendor"?: string | undefined; + "Device-Name"?: string | undefined; + Marketplace?: string | undefined; +}; + +/** @internal */ +export const GetUsersRequest$outboundSchema: z.ZodType< + GetUsersRequest$Outbound, + z.ZodTypeDef, + GetUsersRequest +> = z.object({ + accepts: shared.Accepts$outboundSchema.default(shared.Accepts.ApplicationXml), + clientIdentifier: z.string().optional(), + product: z.string().optional(), + version: z.string().optional(), + platform: z.string().optional(), + platformVersion: z.string().optional(), + device: z.string().optional(), + model: z.string().optional(), + deviceVendor: z.string().optional(), + deviceName: z.string().optional(), + marketplace: z.string().optional(), +}).transform((v) => { + return remap$(v, { + clientIdentifier: "Client-Identifier", + product: "Product", + version: "Version", + platform: "Platform", + platformVersion: "Platform-Version", + device: "Device", + model: "Model", + deviceVendor: "Device-Vendor", + deviceName: "Device-Name", + marketplace: "Marketplace", + }); +}); + +export function getUsersRequestToJSON( + getUsersRequest: GetUsersRequest, +): string { + return JSON.stringify(GetUsersRequest$outboundSchema.parse(getUsersRequest)); +} + +/** @internal */ +export const GetUsersUnauthorizedError$inboundSchema: z.ZodType< + GetUsersUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function getUsersUnauthorizedErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetUsersUnauthorizedError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetUsersUnauthorizedError' from JSON`, + ); +} + +/** @internal */ +export const GetUsersBadRequestError$inboundSchema: z.ZodType< + GetUsersBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function getUsersBadRequestErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetUsersBadRequestError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetUsersBadRequestError' from JSON`, + ); +} + +/** @internal */ +export const Protected$inboundSchema: z.ZodNativeEnum = z + .nativeEnum(Protected); + +/** @internal */ +export const Home$inboundSchema: z.ZodNativeEnum = z.nativeEnum( + Home, +); + +/** @internal */ +export const AllowTuners$inboundSchema: z.ZodNativeEnum = z + .nativeEnum(AllowTuners); + +/** @internal */ +export const AllowSync$inboundSchema: z.ZodNativeEnum = z + .nativeEnum(AllowSync); + +/** @internal */ +export const AllowCameraUpload$inboundSchema: z.ZodNativeEnum< + typeof AllowCameraUpload +> = z.nativeEnum(AllowCameraUpload); + +/** @internal */ +export const AllowChannels$inboundSchema: z.ZodNativeEnum< + typeof AllowChannels +> = z.nativeEnum(AllowChannels); + +/** @internal */ +export const AllowSubtitleAdmin$inboundSchema: z.ZodNativeEnum< + typeof AllowSubtitleAdmin +> = z.nativeEnum(AllowSubtitleAdmin); + +/** @internal */ +export const Restricted$inboundSchema: z.ZodNativeEnum = z + .nativeEnum(Restricted); + +/** @internal */ +export const AllLibraries$inboundSchema: z.ZodNativeEnum = + z.nativeEnum(AllLibraries); + +/** @internal */ +export const Owned$inboundSchema: z.ZodNativeEnum = z.nativeEnum( + Owned, +); + +/** @internal */ +export const Pending$inboundSchema: z.ZodNativeEnum = z + .nativeEnum(Pending); + +/** @internal */ +export const Server$inboundSchema: z.ZodType = z + .object({ + id: z.number().int(), + serverId: z.number().int(), + machineIdentifier: z.string(), + name: z.string(), + lastSeenAt: z.number().int(), + numLibraries: z.number().int(), + allLibraries: AllLibraries$inboundSchema.default(AllLibraries.Disable), + owned: Owned$inboundSchema.default(Owned.Disable), + pending: Pending$inboundSchema.default(Pending.Disable), + }); + +export function serverFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Server$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Server' from JSON`, + ); +} + +/** @internal */ +export const User$inboundSchema: z.ZodType = z + .object({ + id: z.number().int(), + title: z.string(), + username: z.string(), + email: z.string(), + recommendationsPlaylistId: z.nullable(z.string()).optional(), + thumb: z.string(), + protected: Protected$inboundSchema.default(Protected.Disable), + home: Home$inboundSchema.default(Home.Disable), + allowTuners: AllowTuners$inboundSchema.default(AllowTuners.Disable), + allowSync: AllowSync$inboundSchema.default(AllowSync.Disable), + allowCameraUpload: AllowCameraUpload$inboundSchema.default( + AllowCameraUpload.Disable, + ), + allowChannels: AllowChannels$inboundSchema.default(AllowChannels.Disable), + allowSubtitleAdmin: AllowSubtitleAdmin$inboundSchema.default( + AllowSubtitleAdmin.Disable, + ), + filterAll: z.nullable(z.string()).optional(), + filterMovies: z.nullable(z.string()).optional(), + filterMusic: z.nullable(z.string()).optional(), + filterPhotos: z.nullable(z.string()).optional(), + filterTelevision: z.string().optional(), + restricted: Restricted$inboundSchema.default(Restricted.Disable), + Server: z.array(z.lazy(() => Server$inboundSchema)), + }).transform((v) => { + return remap$(v, { + "Server": "server", + }); + }); + +export function userFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => User$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'User' from JSON`, + ); +} + +/** @internal */ +export const GetUsersMediaContainer$inboundSchema: z.ZodType< + GetUsersMediaContainer, + z.ZodTypeDef, + unknown +> = z.object({ + friendlyName: z.string(), + identifier: z.string(), + machineIdentifier: z.string(), + totalSize: z.number().int(), + size: z.number().int(), + User: z.array(z.lazy(() => User$inboundSchema)), +}).transform((v) => { + return remap$(v, { + "User": "user", + }); +}); + +export function getUsersMediaContainerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetUsersMediaContainer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetUsersMediaContainer' from JSON`, + ); +} + +/** @internal */ +export const GetUsersResponseBody$inboundSchema: z.ZodType< + GetUsersResponseBody, + z.ZodTypeDef, + unknown +> = z.object({ + MediaContainer: z.lazy(() => GetUsersMediaContainer$inboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + "MediaContainer": "mediaContainer", + }); +}); + +export function getUsersResponseBodyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetUsersResponseBody$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetUsersResponseBody' from JSON`, + ); +} + +/** @internal */ +export const GetUsersResponse$inboundSchema: z.ZodType< + GetUsersResponse, + z.ZodTypeDef, + unknown +> = z.object({ + ContentType: z.string(), + StatusCode: z.number().int(), + RawResponse: z.instanceof(Response), + object: z.lazy(() => GetUsersResponseBody$inboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + "ContentType": "contentType", + "StatusCode": "statusCode", + "RawResponse": "rawResponse", + }); +}); + +export function getUsersResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetUsersResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetUsersResponse' from JSON`, + ); +} diff --git a/src/sdk/models/operations/index.ts b/src/sdk/models/operations/index.ts index ea847d36..83b46881 100644 --- a/src/sdk/models/operations/index.ts +++ b/src/sdk/models/operations/index.ts @@ -139,6 +139,7 @@ export * from "./getsectionpreferences.js"; export * from "./getsections.js"; export * from "./getsectionsprefs.js"; export * from "./getserverinfo.js"; +export * from "./getserverresources.js"; export * from "./getsessionplaylistindex.js"; export * from "./getsessions.js"; export * from "./getsessionsegment.js"; @@ -153,8 +154,10 @@ export * from "./gettags.js"; export * from "./gettasks.js"; export * from "./gettemplate.js"; export * from "./getthumb.js"; +export * from "./gettokendetails.js"; export * from "./gettransienttoken.js"; export * from "./getupdatesstatus.js"; +export * from "./getusers.js"; export * from "./ingesttransientitem.js"; export * from "./listactivities.js"; export * from "./listcontent.js"; @@ -184,6 +187,7 @@ export * from "./movehub.js"; export * from "./moveplaylistitem.js"; export * from "./moveplayqueueitem.js"; export * from "./optimizedatabase.js"; +export * from "./postuserssignindata.js"; export * from "./processsubscriptions.js"; export * from "./refreshitemsmetadata.js"; export * from "./refreshplaylist.js"; diff --git a/src/sdk/models/operations/ingesttransientitem.ts b/src/sdk/models/operations/ingesttransientitem.ts index 0c4ffd74..65646aab 100644 --- a/src/sdk/models/operations/ingesttransientitem.ts +++ b/src/sdk/models/operations/ingesttransientitem.ts @@ -154,8 +154,8 @@ export type IngestTransientItemRequest$Outbound = { Marketplace?: string | undefined; url?: string | undefined; virtualFilePath?: string | undefined; - computeHashes?: number | undefined; - ingestNonMatches?: number | undefined; + computeHashes: number; + ingestNonMatches: number; }; /** @internal */ @@ -177,8 +177,8 @@ export const IngestTransientItemRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), url: z.string().optional(), virtualFilePath: z.string().optional(), - computeHashes: shared.BoolInt$outboundSchema.optional(), - ingestNonMatches: shared.BoolInt$outboundSchema.optional(), + computeHashes: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + ingestNonMatches: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/listcontent.ts b/src/sdk/models/operations/listcontent.ts index b9dd0d55..8172c8d8 100644 --- a/src/sdk/models/operations/listcontent.ts +++ b/src/sdk/models/operations/listcontent.ts @@ -102,9 +102,54 @@ export type ListContentRequest = { */ marketplace?: string | undefined; /** - * This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries + * The index of the first item to return. If not specified, the first item will be returned. + * + * @remarks + * If the number of items exceeds the limit, the response will be paginated. + * By default this is 0 + */ + xPlexContainerStart?: number | undefined; + /** + * The number of items to return. If not specified, all items will be returned. + * + * @remarks + * If the number of items exceeds the limit, the response will be paginated. + * By default this is 50 + */ + xPlexContainerSize?: number | undefined; + /** + * A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. + * + * @remarks + * + * The query supports: + * - Fields: integer, boolean, tag, string, date, language + * - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) + * - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) + * - Sorting: sort parameter with :desc, :nullsLast modifiers + * - Grouping: group parameter + * - Limits: limit parameter + * + * Examples: + * - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` + * - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" + * - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 + * + * See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. */ mediaQuery?: shared.MediaQuery | undefined; + /** + * Adds the Meta object to the response + * + * @remarks + */ + includeMeta?: shared.BoolInt | undefined; + /** + * Adds the Guid object to the response + * + * @remarks + */ + includeGuids?: shared.BoolInt | undefined; /** * The id of the section */ @@ -144,7 +189,11 @@ export type ListContentRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; + "X-Plex-Container-Start": number; + "X-Plex-Container-Size": number; mediaQuery?: shared.MediaQuery$Outbound | undefined; + includeMeta: number; + includeGuids: number; sectionId: string; }; @@ -165,7 +214,11 @@ export const ListContentRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), + xPlexContainerStart: z.number().int().default(0), + xPlexContainerSize: z.number().int().default(50), mediaQuery: shared.MediaQuery$outboundSchema.optional(), + includeMeta: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + includeGuids: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), sectionId: z.string(), }).transform((v) => { return remap$(v, { @@ -179,6 +232,8 @@ export const ListContentRequest$outboundSchema: z.ZodType< deviceVendor: "Device-Vendor", deviceName: "Device-Name", marketplace: "Marketplace", + xPlexContainerStart: "X-Plex-Container-Start", + xPlexContainerSize: "X-Plex-Container-Size", }); }); diff --git a/src/sdk/models/operations/listmatches.ts b/src/sdk/models/operations/listmatches.ts index 777bf431..edc0a792 100644 --- a/src/sdk/models/operations/listmatches.ts +++ b/src/sdk/models/operations/listmatches.ts @@ -148,7 +148,7 @@ export type ListMatchesRequest$Outbound = { agent?: string | undefined; language?: string | undefined; year?: number | undefined; - manual?: number | undefined; + manual: number; }; /** @internal */ @@ -174,7 +174,7 @@ export const ListMatchesRequest$outboundSchema: z.ZodType< agent: z.string().optional(), language: z.string().optional(), year: z.number().int().optional(), - manual: shared.BoolInt$outboundSchema.optional(), + manual: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/listsessions.ts b/src/sdk/models/operations/listsessions.ts index 478a66f9..647ea7b4 100644 --- a/src/sdk/models/operations/listsessions.ts +++ b/src/sdk/models/operations/listsessions.ts @@ -9,9 +9,19 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import * as shared from "../shared/index.js"; +export type ListSessionsGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. * @@ -37,11 +47,11 @@ export type ListSessionsMetadatum = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -49,11 +59,11 @@ export type ListSessionsMetadatum = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -61,24 +71,28 @@ export type ListSessionsMetadatum = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -94,6 +108,10 @@ export type ListSessionsMetadatum = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -118,11 +136,15 @@ export type ListSessionsMetadatum = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -131,10 +153,7 @@ export type ListSessionsMetadatum = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -144,11 +163,15 @@ export type ListSessionsMetadatum = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -176,7 +199,7 @@ export type ListSessionsMetadatum = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -193,11 +216,11 @@ export type ListSessionsMetadatum = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -222,31 +245,31 @@ export type ListSessionsMetadatum = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -327,6 +350,25 @@ export type ListSessionsResponse = { headers: { [k: string]: Array }; }; +/** @internal */ +export const ListSessionsGuid$inboundSchema: z.ZodType< + ListSessionsGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function listSessionsGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ListSessionsGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ListSessionsGuid' from JSON`, + ); +} + /** @internal */ export const ListSessionsMetadatum$inboundSchema: z.ZodType< ListSessionsMetadatum, @@ -337,66 +379,70 @@ export const ListSessionsMetadatum$inboundSchema: z.ZodType< Player: shared.Player$inboundSchema.optional(), Session: shared.Session$inboundSchema.optional(), User: shared.User$inboundSchema.optional(), - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(shared.Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(shared.Tag$inboundSchema).optional(), Director: z.array(shared.Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(shared.Filter$inboundSchema).optional(), Genre: z.array(shared.Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(shared.Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array(z.lazy(() => ListSessionsGuid$inboundSchema)).optional(), + hero: z.string().optional(), Image: z.array(shared.Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(shared.Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(shared.Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(shared.Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(shared.Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -417,7 +463,7 @@ export const ListSessionsMetadatum$inboundSchema: z.ZodType< "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/operations/makedecision.ts b/src/sdk/models/operations/makedecision.ts index da140ed2..59354b68 100644 --- a/src/sdk/models/operations/makedecision.ts +++ b/src/sdk/models/operations/makedecision.ts @@ -320,13 +320,13 @@ export type MakeDecisionRequest$Outbound = { advancedSubtitles?: string | undefined; audioBoost?: number | undefined; audioChannelCount?: number | undefined; - autoAdjustQuality?: number | undefined; - autoAdjustSubtitle?: number | undefined; - directPlay?: number | undefined; - directStream?: number | undefined; - directStreamAudio?: number | undefined; - disableResolutionRotation?: number | undefined; - hasMDE?: number | undefined; + autoAdjustQuality: number; + autoAdjustSubtitle: number; + directPlay: number; + directStream: number; + directStreamAudio: number; + disableResolutionRotation: number; + hasMDE: number; location?: string | undefined; mediaBufferSize?: number | undefined; mediaIndex?: number | undefined; @@ -370,13 +370,21 @@ export const MakeDecisionRequest$outboundSchema: z.ZodType< advancedSubtitles: shared.AdvancedSubtitles$outboundSchema.optional(), audioBoost: z.number().int().optional(), audioChannelCount: z.number().int().optional(), - autoAdjustQuality: shared.BoolInt$outboundSchema.optional(), - autoAdjustSubtitle: shared.BoolInt$outboundSchema.optional(), - directPlay: shared.BoolInt$outboundSchema.optional(), - directStream: shared.BoolInt$outboundSchema.optional(), - directStreamAudio: shared.BoolInt$outboundSchema.optional(), - disableResolutionRotation: shared.BoolInt$outboundSchema.optional(), - hasMDE: shared.BoolInt$outboundSchema.optional(), + autoAdjustQuality: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + autoAdjustSubtitle: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + directPlay: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStream: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStreamAudio: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + disableResolutionRotation: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + hasMDE: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), location: MakeDecisionLocation$outboundSchema.optional(), mediaBufferSize: z.number().int().optional(), mediaIndex: z.number().int().optional(), diff --git a/src/sdk/models/operations/modifydevice.ts b/src/sdk/models/operations/modifydevice.ts index ca8fff25..a581c62a 100644 --- a/src/sdk/models/operations/modifydevice.ts +++ b/src/sdk/models/operations/modifydevice.ts @@ -178,7 +178,7 @@ export type ModifyDeviceRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; deviceId: number; - enabled?: number | undefined; + enabled: number; }; /** @internal */ @@ -199,7 +199,7 @@ export const ModifyDeviceRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), deviceId: z.number().int(), - enabled: shared.BoolInt$outboundSchema.optional(), + enabled: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/modifyplaylistgenerator.ts b/src/sdk/models/operations/modifyplaylistgenerator.ts index 26737d73..42c54a70 100644 --- a/src/sdk/models/operations/modifyplaylistgenerator.ts +++ b/src/sdk/models/operations/modifyplaylistgenerator.ts @@ -205,7 +205,7 @@ export const ModifyPlaylistGeneratorScope$outboundSchema: z.ZodNativeEnum< export type ModifyPlaylistGeneratorPolicy$Outbound = { value?: number | undefined; scope?: string | undefined; - unwatched?: number | undefined; + unwatched: number; }; /** @internal */ @@ -216,7 +216,7 @@ export const ModifyPlaylistGeneratorPolicy$outboundSchema: z.ZodType< > = z.object({ value: z.number().int().optional(), scope: ModifyPlaylistGeneratorScope$outboundSchema.optional(), - unwatched: shared.BoolInt$outboundSchema.optional(), + unwatched: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }); export function modifyPlaylistGeneratorPolicyToJSON( diff --git a/src/sdk/models/operations/optimizedatabase.ts b/src/sdk/models/operations/optimizedatabase.ts index 70c93bc8..20214cf9 100644 --- a/src/sdk/models/operations/optimizedatabase.ts +++ b/src/sdk/models/operations/optimizedatabase.ts @@ -135,7 +135,7 @@ export type OptimizeDatabaseRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - async?: number | undefined; + async: number; }; /** @internal */ @@ -155,7 +155,7 @@ export const OptimizeDatabaseRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - async: shared.BoolInt$outboundSchema.optional(), + async: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/postuserssignindata.ts b/src/sdk/models/operations/postuserssignindata.ts new file mode 100644 index 00000000..6008134a --- /dev/null +++ b/src/sdk/models/operations/postuserssignindata.ts @@ -0,0 +1,854 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import * as openEnums from "../../types/enums.js"; +import { OpenEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as shared from "../shared/index.js"; + +export const PostUsersSignInDataServerList = [ + "https://plex.tv/api/v2", +] as const; + +export type PostUsersSignInDataGlobals = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; +}; + +/** + * Login credentials + */ +export type PostUsersSignInDataRequestBody = { + login: string; + password: string; + rememberMe?: boolean | undefined; + verificationCode?: string | undefined; +}; + +export type PostUsersSignInDataRequest = { + /** + * Indicates the client accepts the indicated media types + */ + accepts?: shared.Accepts | undefined; + /** + * An opaque identifier unique to the client + */ + clientIdentifier?: string | undefined; + /** + * The name of the client product + */ + product?: string | undefined; + /** + * The version of the client application + */ + version?: string | undefined; + /** + * The platform of the client + */ + platform?: string | undefined; + /** + * The version of the platform + */ + platformVersion?: string | undefined; + /** + * A relatively friendly name for the client device + */ + device?: string | undefined; + /** + * A potentially less friendly identifier for the device model + */ + model?: string | undefined; + /** + * The device vendor + */ + deviceVendor?: string | undefined; + /** + * A friendly name for the client + */ + deviceName?: string | undefined; + /** + * The marketplace on which the client application is distributed + */ + marketplace?: string | undefined; + /** + * Login credentials + */ + requestBody?: PostUsersSignInDataRequestBody | undefined; +}; + +export type PostUsersSignInDataUnauthorizedError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +export type PostUsersSignInDataBadRequestError = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Your current mailing list status + */ +export enum MailingListStatus { + Active = "active", + Unsubscribed = "unsubscribed", + Removed = "removed", +} + +export enum ServiceStatus { + Online = "online", + Offline = "offline", +} +export type ServiceStatusOpen = OpenEnum; + +export type Service = { + identifier: string; + endpoint: string; + token: string | null; + secret: string | null; + status: ServiceStatusOpen; +}; + +/** + * String representation of subscriptionActive + */ +export enum SubscriptionStatus1 { + Inactive = "Inactive", + Active = "Active", +} +/** + * String representation of subscriptionActive + */ +export type SubscriptionStatus1Open = OpenEnum; + +/** + * If the account's Plex Pass subscription is active + */ +export type Subscription1 = { + /** + * List of features allowed on your Plex Pass subscription + */ + features?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + active?: boolean | undefined; + /** + * Date the account subscribed to Plex Pass + */ + subscribedAt?: string | null | undefined; + /** + * String representation of subscriptionActive + */ + status?: SubscriptionStatus1Open | undefined; + /** + * Payment service used for your Plex Pass subscription + */ + paymentService?: string | null | undefined; + /** + * Name of Plex Pass subscription plan + */ + plan?: string | null | undefined; +}; + +/** + * String representation of subscriptionActive + */ +export enum SubscriptionStatus2 { + Inactive = "Inactive", + Active = "Active", +} +/** + * String representation of subscriptionActive + */ +export type SubscriptionStatus2Open = OpenEnum; + +export type Subscription2 = { + /** + * List of features allowed on your Plex Pass subscription + */ + features?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + active?: boolean | undefined; + /** + * Date the account subscribed to Plex Pass + */ + subscribedAt?: string | null | undefined; + /** + * String representation of subscriptionActive + */ + status?: SubscriptionStatus2Open | undefined; + /** + * Payment service used for your Plex Pass subscription + */ + paymentService?: string | null | undefined; + /** + * Name of Plex Pass subscription plan + */ + plan?: string | null | undefined; +}; + +export enum PostUsersSignInDataState { + Ended = "ended", +} +export type PostUsersSignInDataStateOpen = OpenEnum< + typeof PostUsersSignInDataState +>; + +export type InternalPaymentMethod = {}; + +export type Billing = { + internalPaymentMethod: InternalPaymentMethod; + paymentMethodId: number | null; +}; + +export type PastSubscription = { + id: string | null; + mode: string | null; + renewsAt: number | null; + endsAt: number | null; + canceled?: boolean | undefined; + gracePeriod?: boolean | undefined; + onHold?: boolean | undefined; + canReactivate?: boolean | undefined; + canUpgrade?: boolean | undefined; + canDowngrade?: boolean | undefined; + canConvert?: boolean | undefined; + type: string; + transfer: string | null; + state: PostUsersSignInDataStateOpen; + billing: Billing; +}; + +export type Trial = {}; + +/** + * Returns the user account data with a valid auth token + */ +export type UserPlexAccount = { + /** + * Unknown + */ + adsConsent?: boolean | null | undefined; + adsConsentReminderAt?: number | null | undefined; + adsConsentSetAt?: number | null | undefined; + /** + * Unknown + */ + anonymous?: boolean | null | undefined; + /** + * The account token + */ + authToken: string; + /** + * If the two-factor authentication backup codes have been created + */ + backupCodesCreated?: boolean | undefined; + /** + * If the account has been confirmed + */ + confirmed?: boolean | undefined; + /** + * The account country + */ + country?: string | undefined; + /** + * The account email address + */ + email: string; + /** + * If login with email only is enabled + */ + emailOnlyAuth?: boolean | undefined; + /** + * If experimental features are enabled + */ + experimentalFeatures?: boolean | undefined; + /** + * Your account full name + */ + friendlyName: string; + /** + * List of devices your allowed to use with this account + */ + entitlements?: Array | undefined; + /** + * If the account is a Plex Home guest user + */ + guest?: boolean | undefined; + /** + * If the account has a password + */ + hasPassword?: boolean | undefined; + /** + * If the account is a Plex Home user + */ + home?: boolean | undefined; + /** + * If the account is the Plex Home admin + */ + homeAdmin?: boolean | undefined; + /** + * The number of accounts in the Plex Home + */ + homeSize?: number | undefined; + /** + * The Plex account ID + */ + id: number; + /** + * Unix epoch datetime in seconds + */ + joinedAt: number; + /** + * The account locale + */ + locale?: string | null | undefined; + /** + * If you are subscribed to the Plex newsletter + */ + mailingListActive?: boolean | undefined; + /** + * Your current mailing list status + */ + mailingListStatus?: MailingListStatus | undefined; + /** + * The maximum number of accounts allowed in the Plex Home + */ + maxHomeSize?: number | undefined; + /** + * [Might be removed] The hashed Plex Home PIN + * + * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. + */ + pin?: string | undefined; + profile?: shared.UserProfile | undefined; + /** + * If the account has a Plex Home PIN enabled + */ + protected?: boolean | undefined; + /** + * Unix epoch datetime in seconds + */ + rememberExpiresAt?: number | undefined; + /** + * If the account is a Plex Home managed user + */ + restricted?: boolean | undefined; + /** + * [Might be removed] List of account roles. Plexpass membership listed here + */ + roles?: Array | undefined; + /** + * Unknown + */ + scrobbleTypes?: string | undefined; + services?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + subscription?: Subscription1 | undefined; + /** + * Description of the Plex Pass subscription + */ + subscriptionDescription?: string | null | undefined; + subscriptions?: Array | undefined; + /** + * URL of the account thumbnail + */ + thumb?: string | undefined; + /** + * The title of the account (username or friendly name) + */ + title: string; + /** + * If two-factor authentication is enabled + */ + twoFactorEnabled?: boolean | undefined; + /** + * The account username + */ + username: string; + /** + * The account UUID + */ + uuid: string; + attributionPartner?: string | null | undefined; + pastSubscriptions: Array; + trials: Array; +}; + +export type PostUsersSignInDataResponse = { + /** + * HTTP response content type for this operation + */ + contentType: string; + /** + * HTTP response status code for this operation + */ + statusCode: number; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse: Response; + /** + * Returns the user account data with a valid auth token + */ + userPlexAccount?: UserPlexAccount | undefined; +}; + +/** @internal */ +export type PostUsersSignInDataRequestBody$Outbound = { + login: string; + password: string; + rememberMe: boolean; + verificationCode?: string | undefined; +}; + +/** @internal */ +export const PostUsersSignInDataRequestBody$outboundSchema: z.ZodType< + PostUsersSignInDataRequestBody$Outbound, + z.ZodTypeDef, + PostUsersSignInDataRequestBody +> = z.object({ + login: z.string(), + password: z.string(), + rememberMe: z.boolean().default(false), + verificationCode: z.string().optional(), +}); + +export function postUsersSignInDataRequestBodyToJSON( + postUsersSignInDataRequestBody: PostUsersSignInDataRequestBody, +): string { + return JSON.stringify( + PostUsersSignInDataRequestBody$outboundSchema.parse( + postUsersSignInDataRequestBody, + ), + ); +} + +/** @internal */ +export type PostUsersSignInDataRequest$Outbound = { + accepts: string; + "Client-Identifier"?: string | undefined; + Product?: string | undefined; + Version?: string | undefined; + Platform?: string | undefined; + "Platform-Version"?: string | undefined; + Device?: string | undefined; + Model?: string | undefined; + "Device-Vendor"?: string | undefined; + "Device-Name"?: string | undefined; + Marketplace?: string | undefined; + RequestBody?: PostUsersSignInDataRequestBody$Outbound | undefined; +}; + +/** @internal */ +export const PostUsersSignInDataRequest$outboundSchema: z.ZodType< + PostUsersSignInDataRequest$Outbound, + z.ZodTypeDef, + PostUsersSignInDataRequest +> = z.object({ + accepts: shared.Accepts$outboundSchema.default(shared.Accepts.ApplicationXml), + clientIdentifier: z.string().optional(), + product: z.string().optional(), + version: z.string().optional(), + platform: z.string().optional(), + platformVersion: z.string().optional(), + device: z.string().optional(), + model: z.string().optional(), + deviceVendor: z.string().optional(), + deviceName: z.string().optional(), + marketplace: z.string().optional(), + requestBody: z.lazy(() => PostUsersSignInDataRequestBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + clientIdentifier: "Client-Identifier", + product: "Product", + version: "Version", + platform: "Platform", + platformVersion: "Platform-Version", + device: "Device", + model: "Model", + deviceVendor: "Device-Vendor", + deviceName: "Device-Name", + marketplace: "Marketplace", + requestBody: "RequestBody", + }); +}); + +export function postUsersSignInDataRequestToJSON( + postUsersSignInDataRequest: PostUsersSignInDataRequest, +): string { + return JSON.stringify( + PostUsersSignInDataRequest$outboundSchema.parse(postUsersSignInDataRequest), + ); +} + +/** @internal */ +export const PostUsersSignInDataUnauthorizedError$inboundSchema: z.ZodType< + PostUsersSignInDataUnauthorizedError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function postUsersSignInDataUnauthorizedErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + PostUsersSignInDataUnauthorizedError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PostUsersSignInDataUnauthorizedError' from JSON`, + ); +} + +/** @internal */ +export const PostUsersSignInDataBadRequestError$inboundSchema: z.ZodType< + PostUsersSignInDataBadRequestError, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +export function postUsersSignInDataBadRequestErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + PostUsersSignInDataBadRequestError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PostUsersSignInDataBadRequestError' from JSON`, + ); +} + +/** @internal */ +export const MailingListStatus$inboundSchema: z.ZodNativeEnum< + typeof MailingListStatus +> = z.nativeEnum(MailingListStatus); + +/** @internal */ +export const ServiceStatus$inboundSchema: z.ZodType< + ServiceStatusOpen, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(ServiceStatus); + +/** @internal */ +export const Service$inboundSchema: z.ZodType = + z.object({ + identifier: z.string(), + endpoint: z.string(), + token: z.nullable(z.string()), + secret: z.nullable(z.string()), + status: ServiceStatus$inboundSchema, + }); + +export function serviceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Service$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Service' from JSON`, + ); +} + +/** @internal */ +export const SubscriptionStatus1$inboundSchema: z.ZodType< + SubscriptionStatus1Open, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(SubscriptionStatus1); + +/** @internal */ +export const Subscription1$inboundSchema: z.ZodType< + Subscription1, + z.ZodTypeDef, + unknown +> = z.object({ + features: z.array(z.string()).optional(), + active: z.boolean().optional(), + subscribedAt: z.nullable(z.string()).optional(), + status: SubscriptionStatus1$inboundSchema.optional(), + paymentService: z.nullable(z.string()).optional(), + plan: z.nullable(z.string()).optional(), +}); + +export function subscription1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subscription1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subscription1' from JSON`, + ); +} + +/** @internal */ +export const SubscriptionStatus2$inboundSchema: z.ZodType< + SubscriptionStatus2Open, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(SubscriptionStatus2); + +/** @internal */ +export const Subscription2$inboundSchema: z.ZodType< + Subscription2, + z.ZodTypeDef, + unknown +> = z.object({ + features: z.array(z.string()).optional(), + active: z.boolean().optional(), + subscribedAt: z.nullable(z.string()).optional(), + status: SubscriptionStatus2$inboundSchema.optional(), + paymentService: z.nullable(z.string()).optional(), + plan: z.nullable(z.string()).optional(), +}); + +export function subscription2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subscription2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subscription2' from JSON`, + ); +} + +/** @internal */ +export const PostUsersSignInDataState$inboundSchema: z.ZodType< + PostUsersSignInDataStateOpen, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(PostUsersSignInDataState); + +/** @internal */ +export const InternalPaymentMethod$inboundSchema: z.ZodType< + InternalPaymentMethod, + z.ZodTypeDef, + unknown +> = z.object({}); + +export function internalPaymentMethodFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InternalPaymentMethod$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InternalPaymentMethod' from JSON`, + ); +} + +/** @internal */ +export const Billing$inboundSchema: z.ZodType = + z.object({ + internalPaymentMethod: z.lazy(() => InternalPaymentMethod$inboundSchema), + paymentMethodId: z.nullable(z.number().int()), + }); + +export function billingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Billing$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Billing' from JSON`, + ); +} + +/** @internal */ +export const PastSubscription$inboundSchema: z.ZodType< + PastSubscription, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.nullable(z.string()), + mode: z.nullable(z.string()), + renewsAt: z.nullable(z.number().int()), + endsAt: z.nullable(z.number().int()), + canceled: z.boolean().default(false), + gracePeriod: z.boolean().default(false), + onHold: z.boolean().default(false), + canReactivate: z.boolean().default(false), + canUpgrade: z.boolean().default(false), + canDowngrade: z.boolean().default(false), + canConvert: z.boolean().default(false), + type: z.string(), + transfer: z.nullable(z.string()), + state: PostUsersSignInDataState$inboundSchema, + billing: z.lazy(() => Billing$inboundSchema), +}); + +export function pastSubscriptionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PastSubscription$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PastSubscription' from JSON`, + ); +} + +/** @internal */ +export const Trial$inboundSchema: z.ZodType = z + .object({}); + +export function trialFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Trial$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Trial' from JSON`, + ); +} + +/** @internal */ +export const UserPlexAccount$inboundSchema: z.ZodType< + UserPlexAccount, + z.ZodTypeDef, + unknown +> = z.object({ + adsConsent: z.nullable(z.boolean()).optional(), + adsConsentReminderAt: z.nullable(z.number().int()).optional(), + adsConsentSetAt: z.nullable(z.number().int()).optional(), + anonymous: z.nullable(z.boolean().default(false)), + authToken: z.string(), + backupCodesCreated: z.boolean().default(false), + confirmed: z.boolean().default(false), + country: z.string().optional(), + email: z.string(), + emailOnlyAuth: z.boolean().default(false), + experimentalFeatures: z.boolean().default(false), + friendlyName: z.string(), + entitlements: z.array(z.string()).optional(), + guest: z.boolean().default(false), + hasPassword: z.boolean().default(true), + home: z.boolean().default(false), + homeAdmin: z.boolean().default(false), + homeSize: z.number().int().optional(), + id: z.number().int(), + joinedAt: z.number().int(), + locale: z.nullable(z.string()).optional(), + mailingListActive: z.boolean().default(false), + mailingListStatus: MailingListStatus$inboundSchema.optional(), + maxHomeSize: z.number().int().optional(), + pin: z.string().optional(), + profile: shared.UserProfile$inboundSchema.optional(), + protected: z.boolean().default(false), + rememberExpiresAt: z.number().int().optional(), + restricted: z.boolean().default(false), + roles: z.array(z.string()).optional(), + scrobbleTypes: z.string().optional(), + services: z.array(z.lazy(() => Service$inboundSchema)).optional(), + subscription: z.lazy(() => Subscription1$inboundSchema).optional(), + subscriptionDescription: z.nullable(z.string()).optional(), + subscriptions: z.array(z.lazy(() => Subscription2$inboundSchema)).optional(), + thumb: z.string().optional(), + title: z.string(), + twoFactorEnabled: z.boolean().default(false), + username: z.string(), + uuid: z.string(), + attributionPartner: z.nullable(z.string()).optional(), + pastSubscriptions: z.array(z.lazy(() => PastSubscription$inboundSchema)), + trials: z.array(z.lazy(() => Trial$inboundSchema)), +}); + +export function userPlexAccountFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UserPlexAccount$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UserPlexAccount' from JSON`, + ); +} + +/** @internal */ +export const PostUsersSignInDataResponse$inboundSchema: z.ZodType< + PostUsersSignInDataResponse, + z.ZodTypeDef, + unknown +> = z.object({ + ContentType: z.string(), + StatusCode: z.number().int(), + RawResponse: z.instanceof(Response), + UserPlexAccount: z.lazy(() => UserPlexAccount$inboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + "ContentType": "contentType", + "StatusCode": "statusCode", + "RawResponse": "rawResponse", + "UserPlexAccount": "userPlexAccount", + }); +}); + +export function postUsersSignInDataResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PostUsersSignInDataResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PostUsersSignInDataResponse' from JSON`, + ); +} diff --git a/src/sdk/models/operations/refreshitemsmetadata.ts b/src/sdk/models/operations/refreshitemsmetadata.ts index 20210a48..e8020599 100644 --- a/src/sdk/models/operations/refreshitemsmetadata.ts +++ b/src/sdk/models/operations/refreshitemsmetadata.ts @@ -136,7 +136,7 @@ export type RefreshItemsMetadataRequest$Outbound = { Marketplace?: string | undefined; ids: string; agent?: string | undefined; - markUpdated?: number | undefined; + markUpdated: number; }; /** @internal */ @@ -158,7 +158,7 @@ export const RefreshItemsMetadataRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), ids: z.string(), agent: z.string().optional(), - markUpdated: shared.BoolInt$outboundSchema.optional(), + markUpdated: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/refreshsection.ts b/src/sdk/models/operations/refreshsection.ts index 59ed2783..940121b4 100644 --- a/src/sdk/models/operations/refreshsection.ts +++ b/src/sdk/models/operations/refreshsection.ts @@ -144,7 +144,7 @@ export type RefreshSectionRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; sectionId: number; - force?: number | undefined; + force: number; path?: string | undefined; }; @@ -166,7 +166,7 @@ export const RefreshSectionRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), sectionId: z.number().int(), - force: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), path: z.string().optional(), }).transform((v) => { return remap$(v, { diff --git a/src/sdk/models/operations/report.ts b/src/sdk/models/operations/report.ts index 88eb4c79..6940b211 100644 --- a/src/sdk/models/operations/report.ts +++ b/src/sdk/models/operations/report.ts @@ -337,9 +337,9 @@ export type ReportRequest$Outbound = { playQueueItemID?: string | undefined; time?: number | undefined; duration?: number | undefined; - continuing?: number | undefined; + continuing: number; updated?: number | undefined; - offline?: number | undefined; + offline: number; timeToFirstFrame?: number | undefined; timeStalled?: number | undefined; bandwidth?: number | undefined; @@ -371,9 +371,9 @@ export const ReportRequest$outboundSchema: z.ZodType< playQueueItemID: z.string().optional(), time: z.number().int().optional(), duration: z.number().int().optional(), - continuing: shared.BoolInt$outboundSchema.optional(), + continuing: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), updated: z.number().int().optional(), - offline: shared.BoolInt$outboundSchema.optional(), + offline: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), timeToFirstFrame: z.number().int().optional(), timeStalled: z.number().int().optional(), bandwidth: z.number().int().optional(), diff --git a/src/sdk/models/operations/setstreamselection.ts b/src/sdk/models/operations/setstreamselection.ts index adcae351..19d47597 100644 --- a/src/sdk/models/operations/setstreamselection.ts +++ b/src/sdk/models/operations/setstreamselection.ts @@ -150,7 +150,7 @@ export type SetStreamSelectionRequest$Outbound = { partId: number; audioStreamID?: number | undefined; subtitleStreamID?: number | undefined; - allParts?: number | undefined; + allParts: number; }; /** @internal */ @@ -173,7 +173,7 @@ export const SetStreamSelectionRequest$outboundSchema: z.ZodType< partId: z.number().int(), audioStreamID: z.number().int().optional(), subtitleStreamID: z.number().int().optional(), - allParts: shared.BoolInt$outboundSchema.optional(), + allParts: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/startbifgeneration.ts b/src/sdk/models/operations/startbifgeneration.ts index c762201b..814001fc 100644 --- a/src/sdk/models/operations/startbifgeneration.ts +++ b/src/sdk/models/operations/startbifgeneration.ts @@ -134,7 +134,7 @@ export type StartBifGenerationRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; ids: string; - force?: number | undefined; + force: number; }; /** @internal */ @@ -155,7 +155,7 @@ export const StartBifGenerationRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), ids: z.string(), - force: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/starttask.ts b/src/sdk/models/operations/starttask.ts index 1fd01b1d..94d47442 100644 --- a/src/sdk/models/operations/starttask.ts +++ b/src/sdk/models/operations/starttask.ts @@ -59,7 +59,7 @@ export type StartTaskGlobals = { /** * The task name */ -export enum StartTaskTask { +export enum StartTaskButlerTask { AutomaticUpdates = "AutomaticUpdates", BackupDatabase = "BackupDatabase", ButlerTaskGenerateAdMarkers = "ButlerTaskGenerateAdMarkers", @@ -132,7 +132,7 @@ export type StartTaskRequest = { /** * The task name */ - task: StartTaskTask; + butlerTask: StartTaskButlerTask; }; export type StartTaskResponse = { @@ -151,9 +151,9 @@ export type StartTaskResponse = { }; /** @internal */ -export const StartTaskTask$outboundSchema: z.ZodNativeEnum< - typeof StartTaskTask -> = z.nativeEnum(StartTaskTask); +export const StartTaskButlerTask$outboundSchema: z.ZodNativeEnum< + typeof StartTaskButlerTask +> = z.nativeEnum(StartTaskButlerTask); /** @internal */ export type StartTaskRequest$Outbound = { @@ -168,7 +168,7 @@ export type StartTaskRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - task: string; + butlerTask: string; }; /** @internal */ @@ -188,7 +188,7 @@ export const StartTaskRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - task: StartTaskTask$outboundSchema, + butlerTask: StartTaskButlerTask$outboundSchema, }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/starttranscodesession.ts b/src/sdk/models/operations/starttranscodesession.ts index 867fe4e5..da9bfbc4 100644 --- a/src/sdk/models/operations/starttranscodesession.ts +++ b/src/sdk/models/operations/starttranscodesession.ts @@ -341,13 +341,13 @@ export type StartTranscodeSessionRequest$Outbound = { advancedSubtitles?: string | undefined; audioBoost?: number | undefined; audioChannelCount?: number | undefined; - autoAdjustQuality?: number | undefined; - autoAdjustSubtitle?: number | undefined; - directPlay?: number | undefined; - directStream?: number | undefined; - directStreamAudio?: number | undefined; - disableResolutionRotation?: number | undefined; - hasMDE?: number | undefined; + autoAdjustQuality: number; + autoAdjustSubtitle: number; + directPlay: number; + directStream: number; + directStreamAudio: number; + disableResolutionRotation: number; + hasMDE: number; location?: string | undefined; mediaBufferSize?: number | undefined; mediaIndex?: number | undefined; @@ -392,13 +392,21 @@ export const StartTranscodeSessionRequest$outboundSchema: z.ZodType< advancedSubtitles: shared.AdvancedSubtitles$outboundSchema.optional(), audioBoost: z.number().int().optional(), audioChannelCount: z.number().int().optional(), - autoAdjustQuality: shared.BoolInt$outboundSchema.optional(), - autoAdjustSubtitle: shared.BoolInt$outboundSchema.optional(), - directPlay: shared.BoolInt$outboundSchema.optional(), - directStream: shared.BoolInt$outboundSchema.optional(), - directStreamAudio: shared.BoolInt$outboundSchema.optional(), - disableResolutionRotation: shared.BoolInt$outboundSchema.optional(), - hasMDE: shared.BoolInt$outboundSchema.optional(), + autoAdjustQuality: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + autoAdjustSubtitle: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + directPlay: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStream: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStreamAudio: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + disableResolutionRotation: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + hasMDE: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), location: StartTranscodeSessionLocation$outboundSchema.optional(), mediaBufferSize: z.number().int().optional(), mediaIndex: z.number().int().optional(), diff --git a/src/sdk/models/operations/stoptask.ts b/src/sdk/models/operations/stoptask.ts index 4262df05..a3f393ad 100644 --- a/src/sdk/models/operations/stoptask.ts +++ b/src/sdk/models/operations/stoptask.ts @@ -59,7 +59,7 @@ export type StopTaskGlobals = { /** * The task name */ -export enum StopTaskTask { +export enum StopTaskButlerTask { AutomaticUpdates = "AutomaticUpdates", BackupDatabase = "BackupDatabase", ButlerTaskGenerateAdMarkers = "ButlerTaskGenerateAdMarkers", @@ -132,7 +132,7 @@ export type StopTaskRequest = { /** * The task name */ - task: StopTaskTask; + butlerTask: StopTaskButlerTask; }; export type StopTaskResponse = { @@ -151,8 +151,9 @@ export type StopTaskResponse = { }; /** @internal */ -export const StopTaskTask$outboundSchema: z.ZodNativeEnum = - z.nativeEnum(StopTaskTask); +export const StopTaskButlerTask$outboundSchema: z.ZodNativeEnum< + typeof StopTaskButlerTask +> = z.nativeEnum(StopTaskButlerTask); /** @internal */ export type StopTaskRequest$Outbound = { @@ -167,7 +168,7 @@ export type StopTaskRequest$Outbound = { "Device-Vendor"?: string | undefined; "Device-Name"?: string | undefined; Marketplace?: string | undefined; - task: string; + butlerTask: string; }; /** @internal */ @@ -187,7 +188,7 @@ export const StopTaskRequest$outboundSchema: z.ZodType< deviceVendor: z.string().optional(), deviceName: z.string().optional(), marketplace: z.string().optional(), - task: StopTaskTask$outboundSchema, + butlerTask: StopTaskButlerTask$outboundSchema, }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/transcodeimage.ts b/src/sdk/models/operations/transcodeimage.ts index 5e34085d..0672ba15 100644 --- a/src/sdk/models/operations/transcodeimage.ts +++ b/src/sdk/models/operations/transcodeimage.ts @@ -250,9 +250,9 @@ export type TranscodeImageRequest$Outbound = { height?: number | undefined; quality?: number | undefined; background?: string | undefined; - upscale?: number | undefined; - minSize?: number | undefined; - rotate?: number | undefined; + upscale: number; + minSize: number; + rotate: number; blur?: number | undefined; saturation?: number | undefined; opacity?: number | undefined; @@ -283,9 +283,9 @@ export const TranscodeImageRequest$outboundSchema: z.ZodType< height: z.number().int().optional(), quality: z.number().int().optional(), background: z.string().optional(), - upscale: shared.BoolInt$outboundSchema.optional(), - minSize: shared.BoolInt$outboundSchema.optional(), - rotate: shared.BoolInt$outboundSchema.optional(), + upscale: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + minSize: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + rotate: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), blur: z.number().int().optional(), saturation: z.number().int().optional(), opacity: z.number().int().optional(), diff --git a/src/sdk/models/operations/transcodesubtitles.ts b/src/sdk/models/operations/transcodesubtitles.ts index 0fbf7b82..b5a6a361 100644 --- a/src/sdk/models/operations/transcodesubtitles.ts +++ b/src/sdk/models/operations/transcodesubtitles.ts @@ -316,13 +316,13 @@ export type TranscodeSubtitlesRequest$Outbound = { advancedSubtitles?: string | undefined; audioBoost?: number | undefined; audioChannelCount?: number | undefined; - autoAdjustQuality?: number | undefined; - autoAdjustSubtitle?: number | undefined; - directPlay?: number | undefined; - directStream?: number | undefined; - directStreamAudio?: number | undefined; - disableResolutionRotation?: number | undefined; - hasMDE?: number | undefined; + autoAdjustQuality: number; + autoAdjustSubtitle: number; + directPlay: number; + directStream: number; + directStreamAudio: number; + disableResolutionRotation: number; + hasMDE: number; location?: string | undefined; mediaBufferSize?: number | undefined; mediaIndex?: number | undefined; @@ -366,13 +366,21 @@ export const TranscodeSubtitlesRequest$outboundSchema: z.ZodType< advancedSubtitles: shared.AdvancedSubtitles$outboundSchema.optional(), audioBoost: z.number().int().optional(), audioChannelCount: z.number().int().optional(), - autoAdjustQuality: shared.BoolInt$outboundSchema.optional(), - autoAdjustSubtitle: shared.BoolInt$outboundSchema.optional(), - directPlay: shared.BoolInt$outboundSchema.optional(), - directStream: shared.BoolInt$outboundSchema.optional(), - directStreamAudio: shared.BoolInt$outboundSchema.optional(), - disableResolutionRotation: shared.BoolInt$outboundSchema.optional(), - hasMDE: shared.BoolInt$outboundSchema.optional(), + autoAdjustQuality: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + autoAdjustSubtitle: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + directPlay: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStream: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), + directStreamAudio: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + disableResolutionRotation: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + hasMDE: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), location: TranscodeSubtitlesLocation$outboundSchema.optional(), mediaBufferSize: z.number().int().optional(), mediaIndex: z.number().int().optional(), diff --git a/src/sdk/models/operations/updatehubvisibility.ts b/src/sdk/models/operations/updatehubvisibility.ts index 1cf804be..a5458e55 100644 --- a/src/sdk/models/operations/updatehubvisibility.ts +++ b/src/sdk/models/operations/updatehubvisibility.ts @@ -153,9 +153,9 @@ export type UpdateHubVisibilityRequest$Outbound = { Marketplace?: string | undefined; sectionId: number; identifier: string; - promotedToRecommended?: number | undefined; - promotedToOwnHome?: number | undefined; - promotedToSharedHome?: number | undefined; + promotedToRecommended: number; + promotedToOwnHome: number; + promotedToSharedHome: number; }; /** @internal */ @@ -177,9 +177,15 @@ export const UpdateHubVisibilityRequest$outboundSchema: z.ZodType< marketplace: z.string().optional(), sectionId: z.number().int(), identifier: z.string(), - promotedToRecommended: shared.BoolInt$outboundSchema.optional(), - promotedToOwnHome: shared.BoolInt$outboundSchema.optional(), - promotedToSharedHome: shared.BoolInt$outboundSchema.optional(), + promotedToRecommended: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + promotedToOwnHome: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), + promotedToSharedHome: shared.BoolInt$outboundSchema.default( + shared.BoolInt.False, + ), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/updateitems.ts b/src/sdk/models/operations/updateitems.ts index c59601b5..88599843 100644 --- a/src/sdk/models/operations/updateitems.ts +++ b/src/sdk/models/operations/updateitems.ts @@ -188,7 +188,7 @@ export type UpdateItemsRequest$Outbound = { type?: string | undefined; filters?: string | undefined; "field.value"?: string | undefined; - "field.locked"?: number | undefined; + "field.locked": number; "title.value"?: string | undefined; "artist.title.value"?: string | undefined; "artist.title.id"?: string | undefined; @@ -221,7 +221,7 @@ export const UpdateItemsRequest$outboundSchema: z.ZodType< type: z.string().optional(), filters: z.string().optional(), fieldValue: z.string().optional(), - fieldLocked: shared.BoolInt$outboundSchema.optional(), + fieldLocked: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), titleValue: z.string().optional(), artistTitleValue: z.string().optional(), artistTitleId: z.string().optional(), diff --git a/src/sdk/models/operations/uploadplaylist.ts b/src/sdk/models/operations/uploadplaylist.ts index f5a42811..b73ec1ef 100644 --- a/src/sdk/models/operations/uploadplaylist.ts +++ b/src/sdk/models/operations/uploadplaylist.ts @@ -140,7 +140,7 @@ export type UploadPlaylistRequest$Outbound = { "Device-Name"?: string | undefined; Marketplace?: string | undefined; path?: string | undefined; - force?: number | undefined; + force: number; }; /** @internal */ @@ -161,7 +161,7 @@ export const UploadPlaylistRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), path: z.string().optional(), - force: shared.BoolInt$outboundSchema.optional(), + force: shared.BoolInt$outboundSchema.default(shared.BoolInt.False), }).transform((v) => { return remap$(v, { clientIdentifier: "Client-Identifier", diff --git a/src/sdk/models/operations/voicesearchhubs.ts b/src/sdk/models/operations/voicesearchhubs.ts index 491389d4..90b65aa0 100644 --- a/src/sdk/models/operations/voicesearchhubs.ts +++ b/src/sdk/models/operations/voicesearchhubs.ts @@ -106,9 +106,23 @@ export type VoiceSearchHubsRequest = { */ query: string; /** - * The metadata type to filter by + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ - type?: number | undefined; + type?: shared.MediaType | undefined; /** * The number of items to return per hub. 3 if not specified */ @@ -203,7 +217,7 @@ export const VoiceSearchHubsRequest$outboundSchema: z.ZodType< deviceName: z.string().optional(), marketplace: z.string().optional(), query: z.string(), - type: z.number().int().optional(), + type: shared.MediaType$outboundSchema.optional(), limit: z.number().int().optional(), }).transform((v) => { return remap$(v, { diff --git a/src/sdk/models/shared/boolint.ts b/src/sdk/models/shared/boolint.ts index bea1b9ae..23f5f665 100644 --- a/src/sdk/models/shared/boolint.ts +++ b/src/sdk/models/shared/boolint.ts @@ -5,8 +5,8 @@ import * as z from "zod/v3"; export enum BoolInt { - Zero = 0, - One = 1, + False = 0, + True = 1, } /** @internal */ diff --git a/src/sdk/models/shared/index.ts b/src/sdk/models/shared/index.ts index e7e12835..bceb125f 100644 --- a/src/sdk/models/shared/index.ts +++ b/src/sdk/models/shared/index.ts @@ -37,11 +37,14 @@ export * from "./mediacontainerwithsubscription.js"; export * from "./mediagraboperation.js"; export * from "./mediaquery.js"; export * from "./mediasubscription.js"; +export * from "./mediatype.js"; +export * from "./mediatypestring.js"; export * from "./metadata.js"; export * from "./part.js"; export * from "./player.js"; +export * from "./plexdevice.js"; export * from "./postresponses200.js"; -export * from "./protocol.js"; +export * from "./protocolparameter.js"; export * from "./security.js"; export * from "./session.js"; export * from "./setting.js"; @@ -53,3 +56,5 @@ export * from "./tag.js"; export * from "./transcodesession.js"; export * from "./transcodetype.js"; export * from "./user.js"; +export * from "./userplexaccount.js"; +export * from "./userprofile.js"; diff --git a/src/sdk/models/shared/items.ts b/src/sdk/models/shared/items.ts index 15fc27f8..6f1744ae 100644 --- a/src/sdk/models/shared/items.ts +++ b/src/sdk/models/shared/items.ts @@ -9,6 +9,7 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Filter, Filter$inboundSchema } from "./filter.js"; import { Image, Image$inboundSchema } from "./image.js"; @@ -16,6 +17,15 @@ import { Media, Media$inboundSchema } from "./media.js"; import { Sort, Sort$inboundSchema } from "./sort.js"; import { Tag, Tag$inboundSchema } from "./tag.js"; +export type ItemsGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. * @@ -29,11 +39,11 @@ export type Items = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -41,11 +51,11 @@ export type Items = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -53,24 +63,28 @@ export type Items = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -86,6 +100,10 @@ export type Items = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -110,11 +128,15 @@ export type Items = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -123,10 +145,7 @@ export type Items = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -136,11 +155,15 @@ export type Items = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -168,7 +191,7 @@ export type Items = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -185,11 +208,11 @@ export type Items = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -214,31 +237,31 @@ export type Items = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -268,70 +291,94 @@ export type Items = { additionalProperties?: { [k: string]: any } | undefined; }; +/** @internal */ +export const ItemsGuid$inboundSchema: z.ZodType< + ItemsGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function itemsGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ItemsGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ItemsGuid' from JSON`, + ); +} + /** @internal */ export const Items$inboundSchema: z.ZodType = collectExtraKeys$( z.object({ - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(Tag$inboundSchema).optional(), Director: z.array(Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(Filter$inboundSchema).optional(), Genre: z.array(Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array(z.lazy(() => ItemsGuid$inboundSchema)).optional(), + hero: z.string().optional(), Image: z.array(Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)) + .optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -350,7 +397,7 @@ export const Items$inboundSchema: z.ZodType = "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/shared/librarysection.ts b/src/sdk/models/shared/librarysection.ts index 9410133c..9ab0b2f5 100644 --- a/src/sdk/models/shared/librarysection.ts +++ b/src/sdk/models/shared/librarysection.ts @@ -7,6 +7,10 @@ import { remap as remap$ } from "../../../lib/primitives.js"; import { safeParse } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { + MediaTypeString, + MediaTypeString$inboundSchema, +} from "./mediatypestring.js"; /** * Represents a top-level location on disk where media in this library section is stored @@ -20,8 +24,16 @@ export type LibrarySectionLocation = { }; export type LibrarySection = { + /** + * The title of the library + */ title?: string | undefined; - type?: string | undefined; + /** + * The type of media content in the Plex library. This can represent videos, music, or photos. + * + * @remarks + */ + type: MediaTypeString; agent?: string | undefined; allowSync?: boolean | undefined; art?: string | undefined; @@ -36,7 +48,11 @@ export type LibrarySection = { filters?: boolean | undefined; hidden?: boolean | undefined; key?: string | undefined; - language?: string | undefined; + language: string; + /** + * The universally unique identifier for the library. + */ + uuid: string; location?: Array | undefined; /** * Indicates whether this library section is currently scanning @@ -75,7 +91,7 @@ export const LibrarySection$inboundSchema: z.ZodType< unknown > = z.object({ title: z.string().optional(), - type: z.string().optional(), + type: MediaTypeString$inboundSchema, agent: z.string().optional(), allowSync: z.boolean().optional(), art: z.string().optional(), @@ -87,7 +103,8 @@ export const LibrarySection$inboundSchema: z.ZodType< filters: z.boolean().optional(), hidden: z.boolean().optional(), key: z.string().optional(), - language: z.string().optional(), + language: z.string(), + uuid: z.string(), Location: z.array(z.lazy(() => LibrarySectionLocation$inboundSchema)) .optional(), refreshing: z.boolean().optional(), diff --git a/src/sdk/models/shared/media.ts b/src/sdk/models/shared/media.ts index f50aa274..740e6204 100644 --- a/src/sdk/models/shared/media.ts +++ b/src/sdk/models/shared/media.ts @@ -20,21 +20,21 @@ import { Part, Part$inboundSchema } from "./part.js"; export type Media = { aspectRatio?: number | undefined; audioChannels?: number | undefined; - audioCodec?: any | undefined; - audioProfile?: any | undefined; + audioCodec?: string | undefined; + audioProfile?: string | undefined; bitrate?: number | undefined; - container?: any | undefined; + container?: string | undefined; duration?: number | undefined; has64bitOffsets?: boolean | undefined; hasVoiceActivity?: boolean | undefined; height?: number | undefined; - id?: number | undefined; + id: number; optimizedForStreaming?: boolean | undefined; part?: Array | undefined; - videoCodec?: any | undefined; - videoFrameRate?: any | undefined; - videoProfile?: any | undefined; - videoResolution?: any | undefined; + videoCodec?: string | undefined; + videoFrameRate?: string | undefined; + videoProfile?: string | undefined; + videoResolution?: string | undefined; width?: number | undefined; additionalProperties?: { [k: string]: any } | undefined; }; @@ -45,21 +45,21 @@ export const Media$inboundSchema: z.ZodType = z.object({ aspectRatio: z.number().optional(), audioChannels: z.number().int().optional(), - audioCodec: z.any().optional(), - audioProfile: z.any().optional(), + audioCodec: z.string().optional(), + audioProfile: z.string().optional(), bitrate: z.number().int().optional(), - container: z.any().optional(), + container: z.string().optional(), duration: z.number().int().optional(), has64bitOffsets: z.boolean().optional(), hasVoiceActivity: z.boolean().optional(), height: z.number().int().optional(), - id: z.number().int().optional(), + id: z.number().int(), optimizedForStreaming: z.boolean().optional(), Part: z.array(Part$inboundSchema).optional(), - videoCodec: z.any().optional(), - videoFrameRate: z.any().optional(), - videoProfile: z.any().optional(), - videoResolution: z.any().optional(), + videoCodec: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), + videoResolution: z.string().optional(), width: z.number().int().optional(), }).catchall(z.any()), "additionalProperties", diff --git a/src/sdk/models/shared/mediacontainerwithdecision.ts b/src/sdk/models/shared/mediacontainerwithdecision.ts index 77e08f93..50e1a62f 100644 --- a/src/sdk/models/shared/mediacontainerwithdecision.ts +++ b/src/sdk/models/shared/mediacontainerwithdecision.ts @@ -9,12 +9,22 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Filter, Filter$inboundSchema } from "./filter.js"; import { Image, Image$inboundSchema } from "./image.js"; import { Sort, Sort$inboundSchema } from "./sort.js"; import { Tag, Tag$inboundSchema } from "./tag.js"; +export type MediaContainerWithDecisionGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + export enum StreamDecision { Copy = "copy", Transcode = "transcode", @@ -41,55 +51,200 @@ export enum MediaContainerWithDecisionLocation { * @remarks */ export type MediaContainerWithDecisionStream = { + /** + * Indicates if this stream is default. + */ default?: boolean | undefined; - audioChannelLayout?: any | undefined; + /** + * Audio channel layout. + */ + audioChannelLayout?: string | undefined; + /** + * Number of audio channels (for audio streams). + */ + channels?: number | undefined; + /** + * Bit depth of the video stream. + */ bitDepth?: number | undefined; + /** + * Dolby Vision BL compatibility ID. + */ + doviblCompatID?: number | undefined; + /** + * Indicates if Dolby Vision BL is present. + */ + doviblPresent?: boolean | undefined; + /** + * Indicates if Dolby Vision EL is present. + */ + dovielPresent?: boolean | undefined; + /** + * Dolby Vision level. + */ + doviLevel?: number | undefined; + /** + * Indicates if Dolby Vision is present. + */ + doviPresent?: boolean | undefined; + /** + * Dolby Vision profile. + */ + doviProfile?: number | undefined; + /** + * Indicates if Dolby Vision RPU is present. + */ + dovirpuPresent?: boolean | undefined; + /** + * Dolby Vision version. + */ + doviVersion?: string | undefined; + /** + * Bitrate of the stream. + */ bitrate?: number | undefined; /** - * For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. + * Indicates if the stream can auto-sync. */ canAutoSync?: boolean | undefined; - chromaLocation?: any | undefined; - chromaSubsampling?: any | undefined; /** - * The codec of the stream, such as `h264` or `aac` + * Chroma sample location. */ - codec?: any | undefined; - colorPrimaries?: any | undefined; - colorRange?: any | undefined; - colorSpace?: any | undefined; - colorTrc?: any | undefined; + chromaLocation?: string | undefined; /** - * A friendly name for the stream, often comprised of the language and codec information + * Chroma subsampling format. + */ + chromaSubsampling?: string | undefined; + /** + * Coded video height. + */ + codedHeight?: number | undefined; + /** + * Coded video width. + */ + codedWidth?: number | undefined; + closedCaptions?: boolean | undefined; + /** + * Codec used by the stream. + */ + codec: string; + /** + * Color primaries used. + */ + colorPrimaries?: string | undefined; + /** + * Color range (e.g., tv). + */ + colorRange?: string | undefined; + /** + * Color space. + */ + colorSpace?: string | undefined; + /** + * Color transfer characteristics. + */ + colorTrc?: string | undefined; + /** + * Display title for the stream. + */ + displayTitle: string; + /** + * Extended display title for the stream. + */ + extendedDisplayTitle?: string | undefined; + /** + * Frame rate of the stream. */ - displayTitle?: any | undefined; frameRate?: number | undefined; - hasScalingMatrix?: any | undefined; - height?: number | undefined; - id?: number | undefined; + hasScalingMatrix?: boolean | undefined; /** - * If the stream is part of the `Part` and not an external resource, the index of the stream within that part + * Height of the video stream. + */ + height?: number | undefined; + /** + * Unique stream identifier. + */ + id: number; + /** + * Index of the stream. */ index?: number | undefined; /** - * If the stream is independently streamable, the key from which it can be streamed + * Key to access this stream part. */ - key?: any | undefined; - language?: any | undefined; + key: string; /** - * The three character language code for the stream contents + * Language of the stream. + */ + language?: string | undefined; + /** + * ISO language code. + */ + languageCode?: string | undefined; + /** + * Language tag (e.g., en). + */ + languageTag?: string | undefined; + /** + * Format of the stream (e.g., srt). + */ + format?: string | undefined; + /** + * Indicates whether header compression is enabled. + */ + headerCompression?: boolean | undefined; + /** + * Video level. */ - languageCode?: any | undefined; level?: number | undefined; - profile?: any | undefined; + /** + * Indicates if this is the original stream. + */ + original?: boolean | undefined; + /** + * Video profile. + */ + profile?: string | undefined; + /** + * Number of reference frames. + */ refFrames?: number | undefined; + /** + * Sampling rate for the audio stream. + */ samplingRate?: number | undefined; + scanType?: string | undefined; + embeddedInVideo?: string | undefined; + /** + * Indicates if this stream is selected (applicable for audio streams). + */ selected?: boolean | undefined; + forced?: boolean | undefined; + /** + * Indicates if the stream is for the hearing impaired. + */ + hearingImpaired?: boolean | undefined; + /** + * Indicates if the stream is a dub. + */ + dub?: boolean | undefined; + /** + * Optional title for the stream (e.g., language variant). + */ + title?: string | undefined; streamIdentifier?: number | undefined; /** - * A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics + * Stream type: + * + * @remarks + * - VIDEO = 1 + * - AUDIO = 2 + * - SUBTITLE = 3 + */ + streamType?: 1 | undefined; + /** + * Width of the video stream. */ - streamType?: number | undefined; width?: number | undefined; decision?: StreamDecision | undefined; location?: MediaContainerWithDecisionLocation | undefined; @@ -108,32 +263,41 @@ export enum Decision { * @remarks */ export type MediaContainerWithDecisionPart = { - audioProfile?: any | undefined; + /** + * Indicates if the part is accessible. + */ + accessible?: boolean | undefined; + audioProfile?: string | undefined; /** * The container of the media file, such as `mp4` or `mkv` */ - container?: any | undefined; + container?: string | undefined; /** * The duration of the media item, in milliseconds */ duration?: number | undefined; + /** + * Indicates if the part exists. + */ + exists?: boolean | undefined; /** * The local file path at which the part is stored on the server */ - file?: any | undefined; + file?: string | undefined; has64bitOffsets?: boolean | undefined; - id?: number | undefined; + id: number; + indexes?: string | undefined; /** * The key from which the media can be streamed */ - key?: any | undefined; + key: string; optimizedForStreaming?: boolean | undefined; /** * The size of the media, in bytes */ size?: number | undefined; stream?: Array | undefined; - videoProfile?: any | undefined; + videoProfile?: string | undefined; decision?: Decision | undefined; selected?: boolean | undefined; additionalProperties?: { [k: string]: any } | undefined; @@ -147,21 +311,21 @@ export type MediaContainerWithDecisionPart = { export type MediaContainerWithDecisionMedia = { aspectRatio?: number | undefined; audioChannels?: number | undefined; - audioCodec?: any | undefined; - audioProfile?: any | undefined; + audioCodec?: string | undefined; + audioProfile?: string | undefined; bitrate?: number | undefined; - container?: any | undefined; + container?: string | undefined; duration?: number | undefined; has64bitOffsets?: boolean | undefined; hasVoiceActivity?: boolean | undefined; height?: number | undefined; - id?: number | undefined; + id: number; optimizedForStreaming?: boolean | undefined; part?: Array | undefined; - videoCodec?: any | undefined; - videoFrameRate?: any | undefined; - videoProfile?: any | undefined; - videoResolution?: any | undefined; + videoCodec?: string | undefined; + videoFrameRate?: string | undefined; + videoProfile?: string | undefined; + videoResolution?: string | undefined; width?: number | undefined; abr?: boolean | undefined; resourceSession?: string | undefined; @@ -182,11 +346,11 @@ export type MediaContainerWithDecisionMetadatum = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -194,11 +358,11 @@ export type MediaContainerWithDecisionMetadatum = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -206,24 +370,28 @@ export type MediaContainerWithDecisionMetadatum = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -239,6 +407,10 @@ export type MediaContainerWithDecisionMetadatum = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -263,11 +435,15 @@ export type MediaContainerWithDecisionMetadatum = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -276,10 +452,7 @@ export type MediaContainerWithDecisionMetadatum = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -289,11 +462,15 @@ export type MediaContainerWithDecisionMetadatum = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -321,7 +498,7 @@ export type MediaContainerWithDecisionMetadatum = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -338,11 +515,11 @@ export type MediaContainerWithDecisionMetadatum = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -367,31 +544,31 @@ export type MediaContainerWithDecisionMetadatum = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -477,6 +654,25 @@ export type MediaContainerWithDecision = { mediaContainer?: MediaContainerWithDecisionMediaContainer | undefined; }; +/** @internal */ +export const MediaContainerWithDecisionGuid$inboundSchema: z.ZodType< + MediaContainerWithDecisionGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function mediaContainerWithDecisionGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MediaContainerWithDecisionGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MediaContainerWithDecisionGuid' from JSON`, + ); +} + /** @internal */ export const StreamDecision$inboundSchema: z.ZodNativeEnum< typeof StreamDecision @@ -495,40 +691,74 @@ export const MediaContainerWithDecisionStream$inboundSchema: z.ZodType< > = collectExtraKeys$( z.object({ default: z.boolean().optional(), - audioChannelLayout: z.any().optional(), + audioChannelLayout: z.string().optional(), + channels: z.number().int().optional(), bitDepth: z.number().int().optional(), + DOVIBLCompatID: z.number().int().optional(), + DOVIBLPresent: z.boolean().optional(), + DOVIELPresent: z.boolean().optional(), + DOVILevel: z.number().int().optional(), + DOVIPresent: z.boolean().optional(), + DOVIProfile: z.number().int().optional(), + DOVIRPUPresent: z.boolean().optional(), + DOVIVersion: z.string().optional(), bitrate: z.number().int().optional(), canAutoSync: z.boolean().optional(), - chromaLocation: z.any().optional(), - chromaSubsampling: z.any().optional(), - codec: z.any().optional(), - colorPrimaries: z.any().optional(), - colorRange: z.any().optional(), - colorSpace: z.any().optional(), - colorTrc: z.any().optional(), - displayTitle: z.any().optional(), + chromaLocation: z.string().optional(), + chromaSubsampling: z.string().optional(), + codedHeight: z.number().int().optional(), + codedWidth: z.number().int().optional(), + closedCaptions: z.boolean().optional(), + codec: z.string(), + colorPrimaries: z.string().optional(), + colorRange: z.string().optional(), + colorSpace: z.string().optional(), + colorTrc: z.string().optional(), + displayTitle: z.string(), + extendedDisplayTitle: z.string().optional(), frameRate: z.number().optional(), - hasScalingMatrix: z.any().optional(), + hasScalingMatrix: z.boolean().optional(), height: z.number().int().optional(), - id: z.number().int().optional(), + id: z.number().int(), index: z.number().int().optional(), - key: z.any().optional(), - language: z.any().optional(), - languageCode: z.any().optional(), + key: z.string(), + language: z.string().optional(), + languageCode: z.string().optional(), + languageTag: z.string().optional(), + format: z.string().optional(), + headerCompression: z.boolean().optional(), level: z.number().int().optional(), - profile: z.any().optional(), + original: z.boolean().optional(), + profile: z.string().optional(), refFrames: z.number().int().optional(), samplingRate: z.number().int().optional(), + scanType: z.string().optional(), + embeddedInVideo: z.string().optional(), selected: z.boolean().optional(), + forced: z.boolean().optional(), + hearingImpaired: z.boolean().optional(), + dub: z.boolean().optional(), + title: z.string().optional(), streamIdentifier: z.number().int().optional(), - streamType: z.number().int().optional(), + streamType: z.literal(1).default(1).optional(), width: z.number().int().optional(), decision: StreamDecision$inboundSchema.optional(), location: MediaContainerWithDecisionLocation$inboundSchema.optional(), }).catchall(z.any()), "additionalProperties", true, -); +).transform((v) => { + return remap$(v, { + "DOVIBLCompatID": "doviblCompatID", + "DOVIBLPresent": "doviblPresent", + "DOVIELPresent": "dovielPresent", + "DOVILevel": "doviLevel", + "DOVIPresent": "doviPresent", + "DOVIProfile": "doviProfile", + "DOVIRPUPresent": "dovirpuPresent", + "DOVIVersion": "doviVersion", + }); +}); export function mediaContainerWithDecisionStreamFromJSON( jsonString: string, @@ -551,19 +781,22 @@ export const MediaContainerWithDecisionPart$inboundSchema: z.ZodType< unknown > = collectExtraKeys$( z.object({ - audioProfile: z.any().optional(), - container: z.any().optional(), + accessible: z.boolean().optional(), + audioProfile: z.string().optional(), + container: z.string().optional(), duration: z.number().int().optional(), - file: z.any().optional(), + exists: z.boolean().optional(), + file: z.string().optional(), has64bitOffsets: z.boolean().optional(), - id: z.number().int().optional(), - key: z.any().optional(), + id: z.number().int(), + indexes: z.string().optional(), + key: z.string(), optimizedForStreaming: z.boolean().optional(), size: z.number().int().optional(), Stream: z.array( z.lazy(() => MediaContainerWithDecisionStream$inboundSchema), ).optional(), - videoProfile: z.any().optional(), + videoProfile: z.string().optional(), decision: Decision$inboundSchema.optional(), selected: z.boolean().optional(), }).catchall(z.any()), @@ -594,22 +827,22 @@ export const MediaContainerWithDecisionMedia$inboundSchema: z.ZodType< z.object({ aspectRatio: z.number().optional(), audioChannels: z.number().int().optional(), - audioCodec: z.any().optional(), - audioProfile: z.any().optional(), + audioCodec: z.string().optional(), + audioProfile: z.string().optional(), bitrate: z.number().int().optional(), - container: z.any().optional(), + container: z.string().optional(), duration: z.number().int().optional(), has64bitOffsets: z.boolean().optional(), hasVoiceActivity: z.boolean().optional(), height: z.number().int().optional(), - id: z.number().int().optional(), + id: z.number().int(), optimizedForStreaming: z.boolean().optional(), Part: z.array(z.lazy(() => MediaContainerWithDecisionPart$inboundSchema)) .optional(), - videoCodec: z.any().optional(), - videoFrameRate: z.any().optional(), - videoProfile: z.any().optional(), - videoResolution: z.any().optional(), + videoCodec: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), + videoResolution: z.string().optional(), width: z.number().int().optional(), abr: z.boolean().optional(), resourceSession: z.string().optional(), @@ -640,67 +873,72 @@ export const MediaContainerWithDecisionMetadatum$inboundSchema: z.ZodType< unknown > = collectExtraKeys$( z.object({ - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(Tag$inboundSchema).optional(), Director: z.array(Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(Filter$inboundSchema).optional(), Genre: z.array(Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array(z.lazy(() => MediaContainerWithDecisionGuid$inboundSchema)) + .optional(), + hero: z.string().optional(), Image: z.array(Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(z.lazy(() => MediaContainerWithDecisionMedia$inboundSchema)) .optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -718,7 +956,7 @@ export const MediaContainerWithDecisionMetadatum$inboundSchema: z.ZodType< "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/shared/mediacontainerwithnestedmetadata.ts b/src/sdk/models/shared/mediacontainerwithnestedmetadata.ts index d5ee5977..7ea9eb22 100644 --- a/src/sdk/models/shared/mediacontainerwithnestedmetadata.ts +++ b/src/sdk/models/shared/mediacontainerwithnestedmetadata.ts @@ -9,6 +9,7 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Filter, Filter$inboundSchema } from "./filter.js"; import { Image, Image$inboundSchema } from "./image.js"; @@ -17,6 +18,15 @@ import { Media, Media$inboundSchema } from "./media.js"; import { Sort, Sort$inboundSchema } from "./sort.js"; import { Tag, Tag$inboundSchema } from "./tag.js"; +export type MediaContainerWithNestedMetadataGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. * @@ -30,11 +40,11 @@ export type MetadataItem = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -42,11 +52,11 @@ export type MetadataItem = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -54,24 +64,28 @@ export type MetadataItem = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -87,6 +101,10 @@ export type MetadataItem = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -111,11 +129,15 @@ export type MetadataItem = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -124,10 +146,7 @@ export type MetadataItem = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -137,11 +156,15 @@ export type MetadataItem = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -169,7 +192,7 @@ export type MetadataItem = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -186,11 +209,11 @@ export type MetadataItem = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -215,31 +238,31 @@ export type MetadataItem = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -298,6 +321,26 @@ export type MediaContainerWithNestedMetadata = { mediaContainer?: MediaContainerWithNestedMetadataMediaContainer | undefined; }; +/** @internal */ +export const MediaContainerWithNestedMetadataGuid$inboundSchema: z.ZodType< + MediaContainerWithNestedMetadataGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function mediaContainerWithNestedMetadataGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + MediaContainerWithNestedMetadataGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MediaContainerWithNestedMetadataGuid' from JSON`, + ); +} + /** @internal */ export const MetadataItem$inboundSchema: z.ZodType< MetadataItem, @@ -305,66 +348,72 @@ export const MetadataItem$inboundSchema: z.ZodType< unknown > = collectExtraKeys$( z.object({ - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(Tag$inboundSchema).optional(), Director: z.array(Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(Filter$inboundSchema).optional(), Genre: z.array(Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array( + z.lazy(() => MediaContainerWithNestedMetadataGuid$inboundSchema), + ).optional(), + hero: z.string().optional(), Image: z.array(Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -383,7 +432,7 @@ export const MetadataItem$inboundSchema: z.ZodType< "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/shared/mediacontainerwithplaylistmetadata.ts b/src/sdk/models/shared/mediacontainerwithplaylistmetadata.ts index 9c09c3fc..de42cef9 100644 --- a/src/sdk/models/shared/mediacontainerwithplaylistmetadata.ts +++ b/src/sdk/models/shared/mediacontainerwithplaylistmetadata.ts @@ -9,6 +9,7 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Filter, Filter$inboundSchema } from "./filter.js"; import { Image, Image$inboundSchema } from "./image.js"; @@ -25,6 +26,15 @@ export enum PlaylistType { Photo = "photo", } +export type MediaContainerWithPlaylistMetadataGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. * @@ -42,7 +52,7 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * When present, the duration for the item, in units of milliseconds. */ @@ -50,7 +60,7 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; + key: string; /** * For shows and seasons, contains the number of total episodes. */ @@ -70,11 +80,11 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -82,11 +92,11 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -94,20 +104,24 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -119,6 +133,10 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -143,29 +161,34 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. */ index?: number | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ lastViewedAt?: number | undefined; media?: Array | undefined; /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -193,7 +216,7 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -210,11 +233,11 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -239,31 +262,31 @@ export type MediaContainerWithPlaylistMetadataMetadatum = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -325,6 +348,26 @@ export type MediaContainerWithPlaylistMetadata = { export const PlaylistType$inboundSchema: z.ZodNativeEnum = z.nativeEnum(PlaylistType); +/** @internal */ +export const MediaContainerWithPlaylistMetadataGuid$inboundSchema: z.ZodType< + MediaContainerWithPlaylistMetadataGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function mediaContainerWithPlaylistMetadataGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + MediaContainerWithPlaylistMetadataGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MediaContainerWithPlaylistMetadataGuid' from JSON`, + ); +} + /** @internal */ export const MediaContainerWithPlaylistMetadataMetadatum$inboundSchema: z.ZodType< @@ -334,69 +377,76 @@ export const MediaContainerWithPlaylistMetadataMetadatum$inboundSchema: > = collectExtraKeys$( z.object({ readOnly: z.boolean().optional(), - composite: z.any().optional(), + composite: z.string().optional(), duration: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), leafCount: z.number().int().optional(), playlistType: PlaylistType$inboundSchema.optional(), smart: z.boolean().optional(), specialPlaylistType: z.string().optional(), - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + contentRating: z.string().optional(), Country: z.array(Tag$inboundSchema).optional(), Director: z.array(Tag$inboundSchema).optional(), Filter: z.array(Filter$inboundSchema).optional(), Genre: z.array(Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array( + z.lazy(() => MediaContainerWithPlaylistMetadataGuid$inboundSchema), + ).optional(), + hero: z.string().optional(), Image: z.array(Image$inboundSchema).optional(), index: z.number().int().optional(), lastViewedAt: z.number().int().optional(), Media: z.array(Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)) + .optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -414,7 +464,7 @@ export const MediaContainerWithPlaylistMetadataMetadatum$inboundSchema: "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/shared/mediagraboperation.ts b/src/sdk/models/shared/mediagraboperation.ts index 32ed7a69..6e59a41e 100644 --- a/src/sdk/models/shared/mediagraboperation.ts +++ b/src/sdk/models/shared/mediagraboperation.ts @@ -9,7 +9,7 @@ import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Metadata, Metadata$inboundSchema } from "./metadata.js"; -export enum Status { +export enum MediaGrabOperationStatus { Inactive = "inactive", Scheduled = "scheduled", Inprogress = "inprogress", @@ -45,12 +45,13 @@ export type MediaGrabOperation = { metadata?: Metadata | undefined; percent?: number | undefined; provider?: string | undefined; - status?: Status | undefined; + status?: MediaGrabOperationStatus | undefined; }; /** @internal */ -export const Status$inboundSchema: z.ZodNativeEnum = z - .nativeEnum(Status); +export const MediaGrabOperationStatus$inboundSchema: z.ZodNativeEnum< + typeof MediaGrabOperationStatus +> = z.nativeEnum(MediaGrabOperationStatus); /** @internal */ export const MediaGrabOperation$inboundSchema: z.ZodType< @@ -68,7 +69,7 @@ export const MediaGrabOperation$inboundSchema: z.ZodType< Metadata: Metadata$inboundSchema.optional(), percent: z.number().optional(), provider: z.string().optional(), - status: Status$inboundSchema.optional(), + status: MediaGrabOperationStatus$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "Metadata": "metadata", diff --git a/src/sdk/models/shared/mediaquery.ts b/src/sdk/models/shared/mediaquery.ts index 5714a45f..a1c72de1 100644 --- a/src/sdk/models/shared/mediaquery.ts +++ b/src/sdk/models/shared/mediaquery.ts @@ -3,18 +3,73 @@ */ import * as z from "zod/v3"; +import { MediaType, MediaType$outboundSchema } from "./mediatype.js"; -export type MediaQuery = {}; +/** + * A querystring-based filtering language used to select subsets of media. When provided as an object, properties are serialized as a querystring using form style with explode. + * + * @remarks + * + * Only the defined properties below are allowed. The object serializes to a querystring format like: `type=4&sourceType=2&sort=duration:desc,index` + */ +export type MediaQuery = { + /** + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + */ + type?: MediaType | undefined; + /** + * Change the default level to which fields refer (used with type for hierarchical queries) + */ + sourceType?: number | undefined; + /** + * Field(s) to sort by, with optional modifiers. Use comma to separate multiple fields, and :desc or :nullsLast for modifiers (e.g., "duration:desc,index") + */ + sort?: string | undefined; + /** + * Field to group results by (similar to SQL GROUP BY) + */ + group?: string | undefined; + /** + * Maximum number of results to return + */ + limit?: number | undefined; +}; /** @internal */ -export type MediaQuery$Outbound = {}; +export type MediaQuery$Outbound = { + type?: number | undefined; + sourceType?: number | undefined; + sort?: string | undefined; + group?: string | undefined; + limit?: number | undefined; +}; /** @internal */ export const MediaQuery$outboundSchema: z.ZodType< MediaQuery$Outbound, z.ZodTypeDef, MediaQuery -> = z.object({}); +> = z.object({ + type: MediaType$outboundSchema.optional(), + sourceType: z.number().int().optional(), + sort: z.string().optional(), + group: z.string().optional(), + limit: z.number().int().optional(), +}); export function mediaQueryToJSON(mediaQuery: MediaQuery): string { return JSON.stringify(MediaQuery$outboundSchema.parse(mediaQuery)); diff --git a/src/sdk/models/shared/mediatype.ts b/src/sdk/models/shared/mediatype.ts new file mode 100644 index 00000000..083c047f --- /dev/null +++ b/src/sdk/models/shared/mediatype.ts @@ -0,0 +1,38 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; + +/** + * The type of media to retrieve or filter by. + * + * @remarks + * + * 1 = movie + * 2 = show + * 3 = season + * 4 = episode + * 5 = artist + * 6 = album + * 7 = track + * 8 = photo_album + * 9 = photo + * + * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + */ +export enum MediaType { + Movie = 1, + TvShow = 2, + Season = 3, + Episode = 4, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, +} + +/** @internal */ +export const MediaType$outboundSchema: z.ZodNativeEnum = z + .nativeEnum(MediaType); diff --git a/src/sdk/models/shared/mediatypestring.ts b/src/sdk/models/shared/mediatypestring.ts new file mode 100644 index 00000000..c8cd2ea3 --- /dev/null +++ b/src/sdk/models/shared/mediatypestring.ts @@ -0,0 +1,28 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; + +/** + * The type of media content in the Plex library. This can represent videos, music, or photos. + * + * @remarks + */ +export enum MediaTypeString { + Movie = "movie", + TvShow = "show", + Season = "season", + Episode = "episode", + Artist = "artist", + Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", +} + +/** @internal */ +export const MediaTypeString$inboundSchema: z.ZodNativeEnum< + typeof MediaTypeString +> = z.nativeEnum(MediaTypeString); diff --git a/src/sdk/models/shared/metadata.ts b/src/sdk/models/shared/metadata.ts index 325a8745..d859cad9 100644 --- a/src/sdk/models/shared/metadata.ts +++ b/src/sdk/models/shared/metadata.ts @@ -9,6 +9,7 @@ import { safeParse, } from "../../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Filter, Filter$inboundSchema } from "./filter.js"; import { Image, Image$inboundSchema } from "./image.js"; @@ -16,6 +17,15 @@ import { Media, Media$inboundSchema } from "./media.js"; import { Sort, Sort$inboundSchema } from "./sort.js"; import { Tag, Tag$inboundSchema } from "./tag.js"; +export type MetadataGuid = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + /** * Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. * @@ -29,11 +39,11 @@ export type Metadata = { /** * The title of the item (e.g. “300” or “The Simpsons”) */ - title?: any | undefined; + title: string; /** * The type of the video item, such as `movie`, `episode`, or `clip`. */ - type?: any | undefined; + type: string; /** * When present, contains the disc number for a track on multi-disc albums. */ @@ -41,11 +51,11 @@ export type Metadata = { /** * In units of seconds since the epoch, returns the time at which the item was added to the library. */ - addedAt?: number | undefined; + addedAt: number; /** * When present, the URL for the background artwork for the item. */ - art?: any | undefined; + art?: string | undefined; /** * Some rating systems separate reviewer ratings from audience ratings */ @@ -53,24 +63,28 @@ export type Metadata = { /** * A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). */ - audienceRatingImage?: any | undefined; + audienceRatingImage?: string | undefined; autotag?: Array | undefined; /** * When present, the URL for a banner graphic for the item. */ - banner?: any | undefined; + banner?: string | undefined; /** * When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). */ - chapterSource?: any | undefined; + chapterSource?: string | undefined; + /** + * The number of child items associated with this media item. + */ + childCount?: number | undefined; /** * When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). */ - composite?: any | undefined; + composite?: string | undefined; /** * If known, the content rating (e.g. MPAA) for an item. */ - contentRating?: any | undefined; + contentRating?: string | undefined; country?: Array | undefined; director?: Array | undefined; /** @@ -86,6 +100,10 @@ export type Metadata = { * The `art` of the grandparent */ grandparentArt?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; /** * The `hero` of the grandparent */ @@ -110,11 +128,15 @@ export type Metadata = { * The `title` of the grandparent */ grandparentTitle?: string | undefined; - guid?: Array | undefined; + /** + * The globally unique identifier for the media item. + */ + guid?: string | undefined; + guids?: Array | undefined; /** * When present, the URL for a hero image for the item. */ - hero?: any | undefined; + hero?: string | undefined; image?: Array | undefined; /** * When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. @@ -123,10 +145,7 @@ export type Metadata = { /** * The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. */ - key?: any | undefined; - /** - * When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. - */ + key: string; lastViewedAt?: number | undefined; /** * For shows and seasons, contains the number of total episodes. @@ -136,11 +155,15 @@ export type Metadata = { /** * When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. */ - originallyAvailableAt?: any | undefined; + originallyAvailableAt?: RFCDate | undefined; /** * When present, used to indicate an item's original title, e.g. a movie's foreign title. */ - originalTitle?: any | undefined; + originalTitle?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; /** * The `hero` of the parent */ @@ -168,7 +191,7 @@ export type Metadata = { /** * Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. */ - primaryExtraKey?: any | undefined; + primaryExtraKey?: string | undefined; /** * Prompt to give the user for this directory (such as `Search Movies`) */ @@ -185,11 +208,11 @@ export type Metadata = { /** * When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. */ - ratingImage?: any | undefined; + ratingImage?: string | undefined; /** * This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. */ - ratingKey?: any | undefined; + ratingKey?: string | undefined; role?: Array | undefined; /** * Indicates this is a search directory @@ -214,31 +237,31 @@ export type Metadata = { /** * When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). */ - studio?: any | undefined; + studio?: string | undefined; /** * The subtype of the video item, such as `photo` when the video item is in a photo library */ - subtype?: any | undefined; + subtype?: string | undefined; /** * When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). */ - summary?: any | undefined; + summary?: string | undefined; /** * When present, a pithy one-liner about the item (usually only seen for movies). */ - tagline?: any | undefined; + tagline?: string | undefined; /** * When present, the URL for theme music for the item (usually only for TV shows). */ - theme?: any | undefined; + theme?: string | undefined; /** * When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. */ - thumb?: any | undefined; + thumb?: string | undefined; /** * Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). */ - titleSort?: any | undefined; + titleSort?: string | undefined; /** * In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). */ @@ -267,6 +290,25 @@ export type Metadata = { additionalProperties?: { [k: string]: any } | undefined; }; +/** @internal */ +export const MetadataGuid$inboundSchema: z.ZodType< + MetadataGuid, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +export function metadataGuidFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MetadataGuid$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MetadataGuid' from JSON`, + ); +} + /** @internal */ export const Metadata$inboundSchema: z.ZodType< Metadata, @@ -274,66 +316,70 @@ export const Metadata$inboundSchema: z.ZodType< unknown > = collectExtraKeys$( z.object({ - title: z.any().optional(), - type: z.any().optional(), + title: z.string(), + type: z.string(), absoluteIndex: z.number().int().optional(), - addedAt: z.number().int().optional(), - art: z.any().optional(), + addedAt: z.number().int(), + art: z.string().optional(), audienceRating: z.number().optional(), - audienceRatingImage: z.any().optional(), + audienceRatingImage: z.string().optional(), Autotag: z.array(Tag$inboundSchema).optional(), - banner: z.any().optional(), - chapterSource: z.any().optional(), - composite: z.any().optional(), - contentRating: z.any().optional(), + banner: z.string().optional(), + chapterSource: z.string().optional(), + childCount: z.number().int().optional(), + composite: z.string().optional(), + contentRating: z.string().optional(), Country: z.array(Tag$inboundSchema).optional(), Director: z.array(Tag$inboundSchema).optional(), duration: z.number().int().optional(), Filter: z.array(Filter$inboundSchema).optional(), Genre: z.array(Tag$inboundSchema).optional(), grandparentArt: z.string().optional(), + grandparentGuid: z.string().optional(), grandparentHero: z.string().optional(), grandparentKey: z.string().optional(), grandparentRatingKey: z.string().optional(), grandparentTheme: z.string().optional(), grandparentThumb: z.string().optional(), grandparentTitle: z.string().optional(), - Guid: z.array(Tag$inboundSchema).optional(), - hero: z.any().optional(), + guid: z.string().optional(), + Guid: z.array(z.lazy(() => MetadataGuid$inboundSchema)).optional(), + hero: z.string().optional(), Image: z.array(Image$inboundSchema).optional(), index: z.number().int().optional(), - key: z.any().optional(), + key: z.string(), lastViewedAt: z.number().int().optional(), leafCount: z.number().int().optional(), Media: z.array(Media$inboundSchema).optional(), - originallyAvailableAt: z.any().optional(), - originalTitle: z.any().optional(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), + originalTitle: z.string().optional(), + parentGuid: z.string().optional(), parentHero: z.string().optional(), parentIndex: z.number().int().optional(), parentKey: z.string().optional(), parentRatingKey: z.string().optional(), parentThumb: z.string().optional(), parentTitle: z.string().optional(), - primaryExtraKey: z.any().optional(), + primaryExtraKey: z.string().optional(), prompt: z.string().optional(), rating: z.number().optional(), Rating: z.array(Tag$inboundSchema).optional(), ratingCount: z.number().int().optional(), - ratingImage: z.any().optional(), - ratingKey: z.any().optional(), + ratingImage: z.string().optional(), + ratingKey: z.string().optional(), Role: z.array(Tag$inboundSchema).optional(), search: z.boolean().optional(), secondary: z.boolean().optional(), skipChildren: z.boolean().optional(), skipParent: z.boolean().optional(), Sort: z.array(Sort$inboundSchema).optional(), - studio: z.any().optional(), - subtype: z.any().optional(), - summary: z.any().optional(), - tagline: z.any().optional(), - theme: z.any().optional(), - thumb: z.any().optional(), - titleSort: z.any().optional(), + studio: z.string().optional(), + subtype: z.string().optional(), + summary: z.string().optional(), + tagline: z.string().optional(), + theme: z.string().optional(), + thumb: z.string().optional(), + titleSort: z.string().optional(), updatedAt: z.number().int().optional(), userRating: z.number().optional(), viewCount: z.number().int().optional(), @@ -351,7 +397,7 @@ export const Metadata$inboundSchema: z.ZodType< "Director": "director", "Filter": "filter", "Genre": "genre", - "Guid": "guid", + "Guid": "guids", "Image": "image", "Media": "media", "Rating": "ratingArray", diff --git a/src/sdk/models/shared/part.ts b/src/sdk/models/shared/part.ts index e297d7ff..da3a7ae1 100644 --- a/src/sdk/models/shared/part.ts +++ b/src/sdk/models/shared/part.ts @@ -18,32 +18,41 @@ import { Stream, Stream$inboundSchema } from "./stream.js"; * @remarks */ export type Part = { - audioProfile?: any | undefined; + /** + * Indicates if the part is accessible. + */ + accessible?: boolean | undefined; + audioProfile?: string | undefined; /** * The container of the media file, such as `mp4` or `mkv` */ - container?: any | undefined; + container?: string | undefined; /** * The duration of the media item, in milliseconds */ duration?: number | undefined; + /** + * Indicates if the part exists. + */ + exists?: boolean | undefined; /** * The local file path at which the part is stored on the server */ - file?: any | undefined; + file?: string | undefined; has64bitOffsets?: boolean | undefined; - id?: number | undefined; + id: number; + indexes?: string | undefined; /** * The key from which the media can be streamed */ - key?: any | undefined; + key: string; optimizedForStreaming?: boolean | undefined; /** * The size of the media, in bytes */ size?: number | undefined; stream?: Array | undefined; - videoProfile?: any | undefined; + videoProfile?: string | undefined; additionalProperties?: { [k: string]: any } | undefined; }; @@ -51,17 +60,20 @@ export type Part = { export const Part$inboundSchema: z.ZodType = collectExtraKeys$( z.object({ - audioProfile: z.any().optional(), - container: z.any().optional(), + accessible: z.boolean().optional(), + audioProfile: z.string().optional(), + container: z.string().optional(), duration: z.number().int().optional(), - file: z.any().optional(), + exists: z.boolean().optional(), + file: z.string().optional(), has64bitOffsets: z.boolean().optional(), - id: z.number().int().optional(), - key: z.any().optional(), + id: z.number().int(), + indexes: z.string().optional(), + key: z.string(), optimizedForStreaming: z.boolean().optional(), size: z.number().int().optional(), Stream: z.array(Stream$inboundSchema).optional(), - videoProfile: z.any().optional(), + videoProfile: z.string().optional(), }).catchall(z.any()), "additionalProperties", true, diff --git a/src/sdk/models/shared/plexdevice.ts b/src/sdk/models/shared/plexdevice.ts new file mode 100644 index 00000000..4bfe68c3 --- /dev/null +++ b/src/sdk/models/shared/plexdevice.ts @@ -0,0 +1,154 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +/** + * The protocol used for the connection (http, https, etc) + */ +export enum PlexDeviceProtocol { + Http = "http", + Https = "https", +} + +export type Connection = { + /** + * The protocol used for the connection (http, https, etc) + */ + protocol: PlexDeviceProtocol; + /** + * The (ip) address or domain name used for the connection + */ + address: string; + /** + * The port used for the connection + */ + port: number; + /** + * The full URI of the connection + */ + uri: string; + /** + * If the connection is local address + */ + local: boolean; + /** + * If the connection is relayed through plex.direct + */ + relay: boolean; + /** + * If the connection is using IPv6 + */ + iPv6: boolean; +}; + +export type PlexDevice = { + name: string; + product: string; + productVersion: string; + platform: string | null; + platformVersion: string | null; + device: string | null; + clientIdentifier: string; + createdAt: Date; + lastSeenAt: Date; + provides: string; + /** + * ownerId is null when the device is owned by the token used to send the request + */ + ownerId: number | null; + sourceTitle: string | null; + publicAddress: string; + accessToken: string; + owned: boolean; + home: boolean; + synced: boolean; + relay: boolean; + presence: boolean; + httpsRequired: boolean; + publicAddressMatches: boolean; + dnsRebindingProtection: boolean; + natLoopbackSupported: boolean; + connections: Array; +}; + +/** @internal */ +export const PlexDeviceProtocol$inboundSchema: z.ZodNativeEnum< + typeof PlexDeviceProtocol +> = z.nativeEnum(PlexDeviceProtocol); + +/** @internal */ +export const Connection$inboundSchema: z.ZodType< + Connection, + z.ZodTypeDef, + unknown +> = z.object({ + protocol: PlexDeviceProtocol$inboundSchema, + address: z.string(), + port: z.number().int(), + uri: z.string(), + local: z.boolean(), + relay: z.boolean(), + IPv6: z.boolean(), +}).transform((v) => { + return remap$(v, { + "IPv6": "iPv6", + }); +}); + +export function connectionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Connection$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Connection' from JSON`, + ); +} + +/** @internal */ +export const PlexDevice$inboundSchema: z.ZodType< + PlexDevice, + z.ZodTypeDef, + unknown +> = z.object({ + name: z.string(), + product: z.string(), + productVersion: z.string(), + platform: z.nullable(z.string()), + platformVersion: z.nullable(z.string()), + device: z.nullable(z.string()), + clientIdentifier: z.string(), + createdAt: z.string().datetime({ offset: true }).transform(v => new Date(v)), + lastSeenAt: z.string().datetime({ offset: true }).transform(v => new Date(v)), + provides: z.string(), + ownerId: z.nullable(z.number().int()), + sourceTitle: z.nullable(z.string()), + publicAddress: z.string(), + accessToken: z.string(), + owned: z.boolean(), + home: z.boolean(), + synced: z.boolean(), + relay: z.boolean(), + presence: z.boolean(), + httpsRequired: z.boolean(), + publicAddressMatches: z.boolean(), + dnsRebindingProtection: z.boolean(), + natLoopbackSupported: z.boolean(), + connections: z.array(z.lazy(() => Connection$inboundSchema)), +}); + +export function plexDeviceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PlexDevice$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PlexDevice' from JSON`, + ); +} diff --git a/src/sdk/models/shared/protocol.ts b/src/sdk/models/shared/protocolparameter.ts similarity index 52% rename from src/sdk/models/shared/protocol.ts rename to src/sdk/models/shared/protocolparameter.ts index cb5e7a73..ea8fdfe5 100644 --- a/src/sdk/models/shared/protocol.ts +++ b/src/sdk/models/shared/protocolparameter.ts @@ -4,12 +4,13 @@ import * as z from "zod/v3"; -export enum Protocol { +export enum ProtocolParameter { Http = "http", Hls = "hls", Dash = "dash", } /** @internal */ -export const Protocol$outboundSchema: z.ZodNativeEnum = z - .nativeEnum(Protocol); +export const ProtocolParameter$outboundSchema: z.ZodNativeEnum< + typeof ProtocolParameter +> = z.nativeEnum(ProtocolParameter); diff --git a/src/sdk/models/shared/stream.ts b/src/sdk/models/shared/stream.ts index 07da4eb0..0640f9af 100644 --- a/src/sdk/models/shared/stream.ts +++ b/src/sdk/models/shared/stream.ts @@ -3,6 +3,7 @@ */ import * as z from "zod/v3"; +import { remap as remap$ } from "../../../lib/primitives.js"; import { collectExtraKeys as collectExtraKeys$, safeParse, @@ -16,55 +17,200 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js"; * @remarks */ export type Stream = { + /** + * Indicates if this stream is default. + */ default?: boolean | undefined; - audioChannelLayout?: any | undefined; + /** + * Audio channel layout. + */ + audioChannelLayout?: string | undefined; + /** + * Number of audio channels (for audio streams). + */ + channels?: number | undefined; + /** + * Bit depth of the video stream. + */ bitDepth?: number | undefined; + /** + * Dolby Vision BL compatibility ID. + */ + doviblCompatID?: number | undefined; + /** + * Indicates if Dolby Vision BL is present. + */ + doviblPresent?: boolean | undefined; + /** + * Indicates if Dolby Vision EL is present. + */ + dovielPresent?: boolean | undefined; + /** + * Dolby Vision level. + */ + doviLevel?: number | undefined; + /** + * Indicates if Dolby Vision is present. + */ + doviPresent?: boolean | undefined; + /** + * Dolby Vision profile. + */ + doviProfile?: number | undefined; + /** + * Indicates if Dolby Vision RPU is present. + */ + dovirpuPresent?: boolean | undefined; + /** + * Dolby Vision version. + */ + doviVersion?: string | undefined; + /** + * Bitrate of the stream. + */ bitrate?: number | undefined; /** - * For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. + * Indicates if the stream can auto-sync. */ canAutoSync?: boolean | undefined; - chromaLocation?: any | undefined; - chromaSubsampling?: any | undefined; /** - * The codec of the stream, such as `h264` or `aac` + * Chroma sample location. */ - codec?: any | undefined; - colorPrimaries?: any | undefined; - colorRange?: any | undefined; - colorSpace?: any | undefined; - colorTrc?: any | undefined; + chromaLocation?: string | undefined; /** - * A friendly name for the stream, often comprised of the language and codec information + * Chroma subsampling format. + */ + chromaSubsampling?: string | undefined; + /** + * Coded video height. + */ + codedHeight?: number | undefined; + /** + * Coded video width. + */ + codedWidth?: number | undefined; + closedCaptions?: boolean | undefined; + /** + * Codec used by the stream. + */ + codec: string; + /** + * Color primaries used. + */ + colorPrimaries?: string | undefined; + /** + * Color range (e.g., tv). + */ + colorRange?: string | undefined; + /** + * Color space. + */ + colorSpace?: string | undefined; + /** + * Color transfer characteristics. + */ + colorTrc?: string | undefined; + /** + * Display title for the stream. + */ + displayTitle: string; + /** + * Extended display title for the stream. + */ + extendedDisplayTitle?: string | undefined; + /** + * Frame rate of the stream. */ - displayTitle?: any | undefined; frameRate?: number | undefined; - hasScalingMatrix?: any | undefined; - height?: number | undefined; - id?: number | undefined; + hasScalingMatrix?: boolean | undefined; /** - * If the stream is part of the `Part` and not an external resource, the index of the stream within that part + * Height of the video stream. + */ + height?: number | undefined; + /** + * Unique stream identifier. + */ + id: number; + /** + * Index of the stream. */ index?: number | undefined; /** - * If the stream is independently streamable, the key from which it can be streamed + * Key to access this stream part. */ - key?: any | undefined; - language?: any | undefined; + key: string; /** - * The three character language code for the stream contents + * Language of the stream. + */ + language?: string | undefined; + /** + * ISO language code. + */ + languageCode?: string | undefined; + /** + * Language tag (e.g., en). + */ + languageTag?: string | undefined; + /** + * Format of the stream (e.g., srt). + */ + format?: string | undefined; + /** + * Indicates whether header compression is enabled. + */ + headerCompression?: boolean | undefined; + /** + * Video level. */ - languageCode?: any | undefined; level?: number | undefined; - profile?: any | undefined; + /** + * Indicates if this is the original stream. + */ + original?: boolean | undefined; + /** + * Video profile. + */ + profile?: string | undefined; + /** + * Number of reference frames. + */ refFrames?: number | undefined; + /** + * Sampling rate for the audio stream. + */ samplingRate?: number | undefined; + scanType?: string | undefined; + embeddedInVideo?: string | undefined; + /** + * Indicates if this stream is selected (applicable for audio streams). + */ selected?: boolean | undefined; + forced?: boolean | undefined; + /** + * Indicates if the stream is for the hearing impaired. + */ + hearingImpaired?: boolean | undefined; + /** + * Indicates if the stream is a dub. + */ + dub?: boolean | undefined; + /** + * Optional title for the stream (e.g., language variant). + */ + title?: string | undefined; streamIdentifier?: number | undefined; /** - * A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics + * Stream type: + * + * @remarks + * - VIDEO = 1 + * - AUDIO = 2 + * - SUBTITLE = 3 + */ + streamType?: 1 | undefined; + /** + * Width of the video stream. */ - streamType?: number | undefined; width?: number | undefined; additionalProperties?: { [k: string]: any } | undefined; }; @@ -74,38 +220,72 @@ export const Stream$inboundSchema: z.ZodType = collectExtraKeys$( z.object({ default: z.boolean().optional(), - audioChannelLayout: z.any().optional(), + audioChannelLayout: z.string().optional(), + channels: z.number().int().optional(), bitDepth: z.number().int().optional(), + DOVIBLCompatID: z.number().int().optional(), + DOVIBLPresent: z.boolean().optional(), + DOVIELPresent: z.boolean().optional(), + DOVILevel: z.number().int().optional(), + DOVIPresent: z.boolean().optional(), + DOVIProfile: z.number().int().optional(), + DOVIRPUPresent: z.boolean().optional(), + DOVIVersion: z.string().optional(), bitrate: z.number().int().optional(), canAutoSync: z.boolean().optional(), - chromaLocation: z.any().optional(), - chromaSubsampling: z.any().optional(), - codec: z.any().optional(), - colorPrimaries: z.any().optional(), - colorRange: z.any().optional(), - colorSpace: z.any().optional(), - colorTrc: z.any().optional(), - displayTitle: z.any().optional(), + chromaLocation: z.string().optional(), + chromaSubsampling: z.string().optional(), + codedHeight: z.number().int().optional(), + codedWidth: z.number().int().optional(), + closedCaptions: z.boolean().optional(), + codec: z.string(), + colorPrimaries: z.string().optional(), + colorRange: z.string().optional(), + colorSpace: z.string().optional(), + colorTrc: z.string().optional(), + displayTitle: z.string(), + extendedDisplayTitle: z.string().optional(), frameRate: z.number().optional(), - hasScalingMatrix: z.any().optional(), + hasScalingMatrix: z.boolean().optional(), height: z.number().int().optional(), - id: z.number().int().optional(), + id: z.number().int(), index: z.number().int().optional(), - key: z.any().optional(), - language: z.any().optional(), - languageCode: z.any().optional(), + key: z.string(), + language: z.string().optional(), + languageCode: z.string().optional(), + languageTag: z.string().optional(), + format: z.string().optional(), + headerCompression: z.boolean().optional(), level: z.number().int().optional(), - profile: z.any().optional(), + original: z.boolean().optional(), + profile: z.string().optional(), refFrames: z.number().int().optional(), samplingRate: z.number().int().optional(), + scanType: z.string().optional(), + embeddedInVideo: z.string().optional(), selected: z.boolean().optional(), + forced: z.boolean().optional(), + hearingImpaired: z.boolean().optional(), + dub: z.boolean().optional(), + title: z.string().optional(), streamIdentifier: z.number().int().optional(), - streamType: z.number().int().optional(), + streamType: z.literal(1).default(1).optional(), width: z.number().int().optional(), }).catchall(z.any()), "additionalProperties", true, - ); + ).transform((v) => { + return remap$(v, { + "DOVIBLCompatID": "doviblCompatID", + "DOVIBLPresent": "doviblPresent", + "DOVIELPresent": "dovielPresent", + "DOVILevel": "doviLevel", + "DOVIPresent": "doviPresent", + "DOVIProfile": "doviProfile", + "DOVIRPUPresent": "dovirpuPresent", + "DOVIVersion": "doviVersion", + }); + }); export function streamFromJSON( jsonString: string, diff --git a/src/sdk/models/shared/tag.ts b/src/sdk/models/shared/tag.ts index 4b54df8d..34d84a70 100644 --- a/src/sdk/models/shared/tag.ts +++ b/src/sdk/models/shared/tag.ts @@ -21,23 +21,26 @@ export type Tag = { /** * A filter parameter that can be used to query for more content that matches this tag value. */ - filter?: any | undefined; + filter?: string | undefined; id?: number | undefined; + /** + * 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. + */ ratingKey?: string | undefined; /** * The role this actor played */ - role?: any | undefined; + role?: string | undefined; /** * The value of the tag (the name) */ - tag?: any | undefined; + tag: string; /** * Plex identifier for this tag which can be used to fetch additional information from plex.tv */ - tagKey?: any | undefined; + tagKey?: string | undefined; tagType?: number | undefined; - thumb?: any | undefined; + thumb?: string | undefined; }; /** @internal */ @@ -45,14 +48,14 @@ export const Tag$inboundSchema: z.ZodType = z .object({ confidence: z.number().optional(), context: z.string().optional(), - filter: z.any().optional(), + filter: z.string().optional(), id: z.number().int().optional(), ratingKey: z.string().optional(), - role: z.any().optional(), - tag: z.any().optional(), - tagKey: z.any().optional(), + role: z.string().optional(), + tag: z.string(), + tagKey: z.string().optional(), tagType: z.number().int().optional(), - thumb: z.any().optional(), + thumb: z.string().optional(), }); export function tagFromJSON( diff --git a/src/sdk/models/shared/userplexaccount.ts b/src/sdk/models/shared/userplexaccount.ts new file mode 100644 index 00000000..3e981795 --- /dev/null +++ b/src/sdk/models/shared/userplexaccount.ts @@ -0,0 +1,419 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { safeParse } from "../../../lib/schemas.js"; +import * as openEnums from "../../types/enums.js"; +import { OpenEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { UserProfile, UserProfile$inboundSchema } from "./userprofile.js"; + +/** + * Your current mailing list status + */ +export enum MailingListStatus { + Active = "active", + Unsubscribed = "unsubscribed", + Removed = "removed", +} + +export enum ServiceStatus { + Online = "online", + Offline = "offline", +} +export type ServiceStatusOpen = OpenEnum; + +export type Service = { + identifier: string; + endpoint: string; + token: string | null; + secret: string | null; + status: ServiceStatusOpen; +}; + +/** + * String representation of subscriptionActive + */ +export enum SubscriptionStatus1 { + Inactive = "Inactive", + Active = "Active", +} +/** + * String representation of subscriptionActive + */ +export type SubscriptionStatus1Open = OpenEnum; + +/** + * If the account's Plex Pass subscription is active + */ +export type Subscription1 = { + /** + * List of features allowed on your Plex Pass subscription + */ + features?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + active?: boolean | undefined; + /** + * Date the account subscribed to Plex Pass + */ + subscribedAt?: string | null | undefined; + /** + * String representation of subscriptionActive + */ + status?: SubscriptionStatus1Open | undefined; + /** + * Payment service used for your Plex Pass subscription + */ + paymentService?: string | null | undefined; + /** + * Name of Plex Pass subscription plan + */ + plan?: string | null | undefined; +}; + +/** + * String representation of subscriptionActive + */ +export enum SubscriptionStatus2 { + Inactive = "Inactive", + Active = "Active", +} +/** + * String representation of subscriptionActive + */ +export type SubscriptionStatus2Open = OpenEnum; + +export type Subscription2 = { + /** + * List of features allowed on your Plex Pass subscription + */ + features?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + active?: boolean | undefined; + /** + * Date the account subscribed to Plex Pass + */ + subscribedAt?: string | null | undefined; + /** + * String representation of subscriptionActive + */ + status?: SubscriptionStatus2Open | undefined; + /** + * Payment service used for your Plex Pass subscription + */ + paymentService?: string | null | undefined; + /** + * Name of Plex Pass subscription plan + */ + plan?: string | null | undefined; +}; + +export type UserPlexAccount = { + /** + * Unknown + */ + adsConsent?: boolean | null | undefined; + adsConsentReminderAt?: number | null | undefined; + adsConsentSetAt?: number | null | undefined; + /** + * Unknown + */ + anonymous?: boolean | null | undefined; + /** + * The account token + */ + authToken: string; + /** + * If the two-factor authentication backup codes have been created + */ + backupCodesCreated?: boolean | undefined; + /** + * If the account has been confirmed + */ + confirmed?: boolean | undefined; + /** + * The account country + */ + country?: string | undefined; + /** + * The account email address + */ + email: string; + /** + * If login with email only is enabled + */ + emailOnlyAuth?: boolean | undefined; + /** + * If experimental features are enabled + */ + experimentalFeatures?: boolean | undefined; + /** + * Your account full name + */ + friendlyName: string; + /** + * List of devices your allowed to use with this account + */ + entitlements?: Array | undefined; + /** + * If the account is a Plex Home guest user + */ + guest?: boolean | undefined; + /** + * If the account has a password + */ + hasPassword?: boolean | undefined; + /** + * If the account is a Plex Home user + */ + home?: boolean | undefined; + /** + * If the account is the Plex Home admin + */ + homeAdmin?: boolean | undefined; + /** + * The number of accounts in the Plex Home + */ + homeSize?: number | undefined; + /** + * The Plex account ID + */ + id: number; + /** + * Unix epoch datetime in seconds + */ + joinedAt: number; + /** + * The account locale + */ + locale?: string | null | undefined; + /** + * If you are subscribed to the Plex newsletter + */ + mailingListActive?: boolean | undefined; + /** + * Your current mailing list status + */ + mailingListStatus?: MailingListStatus | undefined; + /** + * The maximum number of accounts allowed in the Plex Home + */ + maxHomeSize?: number | undefined; + /** + * [Might be removed] The hashed Plex Home PIN + * + * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. + */ + pin?: string | undefined; + profile?: UserProfile | undefined; + /** + * If the account has a Plex Home PIN enabled + */ + protected?: boolean | undefined; + /** + * Unix epoch datetime in seconds + */ + rememberExpiresAt?: number | undefined; + /** + * If the account is a Plex Home managed user + */ + restricted?: boolean | undefined; + /** + * [Might be removed] List of account roles. Plexpass membership listed here + */ + roles?: Array | undefined; + /** + * Unknown + */ + scrobbleTypes?: string | undefined; + services?: Array | undefined; + /** + * If the account's Plex Pass subscription is active + */ + subscription?: Subscription1 | undefined; + /** + * Description of the Plex Pass subscription + */ + subscriptionDescription?: string | null | undefined; + subscriptions?: Array | undefined; + /** + * URL of the account thumbnail + */ + thumb?: string | undefined; + /** + * The title of the account (username or friendly name) + */ + title: string; + /** + * If two-factor authentication is enabled + */ + twoFactorEnabled?: boolean | undefined; + /** + * The account username + */ + username: string; + /** + * The account UUID + */ + uuid: string; + attributionPartner?: string | null | undefined; +}; + +/** @internal */ +export const MailingListStatus$inboundSchema: z.ZodNativeEnum< + typeof MailingListStatus +> = z.nativeEnum(MailingListStatus); + +/** @internal */ +export const ServiceStatus$inboundSchema: z.ZodType< + ServiceStatusOpen, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(ServiceStatus); + +/** @internal */ +export const Service$inboundSchema: z.ZodType = + z.object({ + identifier: z.string(), + endpoint: z.string(), + token: z.nullable(z.string()), + secret: z.nullable(z.string()), + status: ServiceStatus$inboundSchema, + }); + +export function serviceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Service$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Service' from JSON`, + ); +} + +/** @internal */ +export const SubscriptionStatus1$inboundSchema: z.ZodType< + SubscriptionStatus1Open, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(SubscriptionStatus1); + +/** @internal */ +export const Subscription1$inboundSchema: z.ZodType< + Subscription1, + z.ZodTypeDef, + unknown +> = z.object({ + features: z.array(z.string()).optional(), + active: z.boolean().optional(), + subscribedAt: z.nullable(z.string()).optional(), + status: SubscriptionStatus1$inboundSchema.optional(), + paymentService: z.nullable(z.string()).optional(), + plan: z.nullable(z.string()).optional(), +}); + +export function subscription1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subscription1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subscription1' from JSON`, + ); +} + +/** @internal */ +export const SubscriptionStatus2$inboundSchema: z.ZodType< + SubscriptionStatus2Open, + z.ZodTypeDef, + unknown +> = openEnums.inboundSchema(SubscriptionStatus2); + +/** @internal */ +export const Subscription2$inboundSchema: z.ZodType< + Subscription2, + z.ZodTypeDef, + unknown +> = z.object({ + features: z.array(z.string()).optional(), + active: z.boolean().optional(), + subscribedAt: z.nullable(z.string()).optional(), + status: SubscriptionStatus2$inboundSchema.optional(), + paymentService: z.nullable(z.string()).optional(), + plan: z.nullable(z.string()).optional(), +}); + +export function subscription2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subscription2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subscription2' from JSON`, + ); +} + +/** @internal */ +export const UserPlexAccount$inboundSchema: z.ZodType< + UserPlexAccount, + z.ZodTypeDef, + unknown +> = z.object({ + adsConsent: z.nullable(z.boolean()).optional(), + adsConsentReminderAt: z.nullable(z.number().int()).optional(), + adsConsentSetAt: z.nullable(z.number().int()).optional(), + anonymous: z.nullable(z.boolean().default(false)), + authToken: z.string(), + backupCodesCreated: z.boolean().default(false), + confirmed: z.boolean().default(false), + country: z.string().optional(), + email: z.string(), + emailOnlyAuth: z.boolean().default(false), + experimentalFeatures: z.boolean().default(false), + friendlyName: z.string(), + entitlements: z.array(z.string()).optional(), + guest: z.boolean().default(false), + hasPassword: z.boolean().default(true), + home: z.boolean().default(false), + homeAdmin: z.boolean().default(false), + homeSize: z.number().int().optional(), + id: z.number().int(), + joinedAt: z.number().int(), + locale: z.nullable(z.string()).optional(), + mailingListActive: z.boolean().default(false), + mailingListStatus: MailingListStatus$inboundSchema.optional(), + maxHomeSize: z.number().int().optional(), + pin: z.string().optional(), + profile: UserProfile$inboundSchema.optional(), + protected: z.boolean().default(false), + rememberExpiresAt: z.number().int().optional(), + restricted: z.boolean().default(false), + roles: z.array(z.string()).optional(), + scrobbleTypes: z.string().optional(), + services: z.array(z.lazy(() => Service$inboundSchema)).optional(), + subscription: z.lazy(() => Subscription1$inboundSchema).optional(), + subscriptionDescription: z.nullable(z.string()).optional(), + subscriptions: z.array(z.lazy(() => Subscription2$inboundSchema)).optional(), + thumb: z.string().optional(), + title: z.string(), + twoFactorEnabled: z.boolean().default(false), + username: z.string(), + uuid: z.string(), + attributionPartner: z.nullable(z.string()).optional(), +}); + +export function userPlexAccountFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UserPlexAccount$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UserPlexAccount' from JSON`, + ); +} diff --git a/src/sdk/models/shared/userprofile.ts b/src/sdk/models/shared/userprofile.ts new file mode 100644 index 00000000..e79c6151 --- /dev/null +++ b/src/sdk/models/shared/userprofile.ts @@ -0,0 +1,171 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v3"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +/** + * The audio accessibility mode (0 = Prefer non-accessibility audio, 1 = Prefer accessibility audio, 2 = Only show accessibility audio, 3 = Only show non-accessibility audio) + */ +export enum DefaultAudioAccessibility { + PreferNonAccessibility = 0, + PreferAccessibility = 1, + OnlyAccessibility = 2, + OnlyNonAccessibility = 3, +} + +/** + * The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) + */ +export enum AutoSelectSubtitle { + ManuallySelected = 0, + ShownWithForeignAudio = 1, + AlwaysEnabled = 2, +} + +/** + * The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) + */ +export enum DefaultSubtitleAccessibility { + PreferNonSdh = 0, + PreferSdh = 1, + OnlySdh = 2, + OnlyNonSdh = 3, +} + +/** + * The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) + */ +export enum DefaultSubtitleForced { + PreferNonForced = 0, + PreferForced = 1, + OnlyForced = 2, + OnlyNonForced = 3, +} + +/** + * Whether or not media watched indicators are enabled (little orange dot on media) + */ +export enum WatchedIndicator { + None = 0, + MoviesAndTvShows = 1, + Movies = 2, + TvShows = 3, +} + +/** + * Whether or not the account has media reviews visibility enabled + */ +export enum MediaReviewsVisibility { + NoOne = 0, + CriticsOnly = 1, + PlexUsersOnly = 2, + PlexUsersAndCritics = 3, +} + +export type UserProfile = { + /** + * If the account has automatically select audio and subtitle tracks enabled + */ + autoSelectAudio?: boolean | undefined; + /** + * The preferred audio language for the account + */ + defaultAudioLanguage: string | null; + defaultAudioAccessibility?: DefaultAudioAccessibility | undefined; + /** + * The preferred audio languages for the account + */ + defaultAudioLanguages?: Array | null | undefined; + /** + * The preferred subtitle language for the account + */ + defaultSubtitleLanguage: string | null; + /** + * The preferred subtitle languages for the account + */ + defaultSubtitleLanguages?: Array | null | undefined; + autoSelectSubtitle?: AutoSelectSubtitle | undefined; + defaultSubtitleAccessibility?: DefaultSubtitleAccessibility | undefined; + defaultSubtitleForced?: DefaultSubtitleForced | undefined; + watchedIndicator?: WatchedIndicator | undefined; + mediaReviewsVisibility?: MediaReviewsVisibility | undefined; + /** + * The languages for media reviews visibility + */ + mediaReviewsLanguages?: Array | null | undefined; +}; + +/** @internal */ +export const DefaultAudioAccessibility$inboundSchema: z.ZodNativeEnum< + typeof DefaultAudioAccessibility +> = z.nativeEnum(DefaultAudioAccessibility); + +/** @internal */ +export const AutoSelectSubtitle$inboundSchema: z.ZodNativeEnum< + typeof AutoSelectSubtitle +> = z.nativeEnum(AutoSelectSubtitle); + +/** @internal */ +export const DefaultSubtitleAccessibility$inboundSchema: z.ZodNativeEnum< + typeof DefaultSubtitleAccessibility +> = z.nativeEnum(DefaultSubtitleAccessibility); + +/** @internal */ +export const DefaultSubtitleForced$inboundSchema: z.ZodNativeEnum< + typeof DefaultSubtitleForced +> = z.nativeEnum(DefaultSubtitleForced); + +/** @internal */ +export const WatchedIndicator$inboundSchema: z.ZodNativeEnum< + typeof WatchedIndicator +> = z.nativeEnum(WatchedIndicator); + +/** @internal */ +export const MediaReviewsVisibility$inboundSchema: z.ZodNativeEnum< + typeof MediaReviewsVisibility +> = z.nativeEnum(MediaReviewsVisibility); + +/** @internal */ +export const UserProfile$inboundSchema: z.ZodType< + UserProfile, + z.ZodTypeDef, + unknown +> = z.object({ + autoSelectAudio: z.boolean().default(true), + defaultAudioLanguage: z.nullable(z.string()), + defaultAudioAccessibility: DefaultAudioAccessibility$inboundSchema.default( + DefaultAudioAccessibility.PreferNonAccessibility, + ), + defaultAudioLanguages: z.nullable(z.array(z.string())).optional(), + defaultSubtitleLanguage: z.nullable(z.string()), + defaultSubtitleLanguages: z.nullable(z.array(z.string())).optional(), + autoSelectSubtitle: AutoSelectSubtitle$inboundSchema.default( + AutoSelectSubtitle.ManuallySelected, + ), + defaultSubtitleAccessibility: DefaultSubtitleAccessibility$inboundSchema + .default(DefaultSubtitleAccessibility.PreferNonSdh), + defaultSubtitleForced: DefaultSubtitleForced$inboundSchema.default( + DefaultSubtitleForced.PreferNonForced, + ), + watchedIndicator: WatchedIndicator$inboundSchema.default( + WatchedIndicator.None, + ), + mediaReviewsVisibility: MediaReviewsVisibility$inboundSchema.default( + MediaReviewsVisibility.NoOne, + ), + mediaReviewsLanguages: z.nullable(z.array(z.string())).optional(), +}); + +export function userProfileFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UserProfile$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UserProfile' from JSON`, + ); +} diff --git a/src/sdk/plex.ts b/src/sdk/plex.ts new file mode 100644 index 00000000..2b8f8dee --- /dev/null +++ b/src/sdk/plex.ts @@ -0,0 +1,27 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { plexGetServerResources } from "../funcs/plexGetServerResources.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as operations from "./models/operations/index.js"; +import { unwrapAsync } from "./types/fp.js"; + +export class Plex extends ClientSDK { + /** + * Get Server Resources + * + * @remarks + * Get Plex server access tokens and server connections + */ + async getServerResources( + request: operations.GetServerResourcesRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(plexGetServerResources( + this, + request, + options, + )); + } +} diff --git a/src/sdk/sdk.ts b/src/sdk/sdk.ts index c4efcb1f..1e47ba76 100644 --- a/src/sdk/sdk.ts +++ b/src/sdk/sdk.ts @@ -4,6 +4,7 @@ import { ClientSDK } from "../lib/sdks.js"; import { Activities } from "./activities.js"; +import { Authentication } from "./authentication.js"; import { Butler } from "./butler.js"; import { Collections } from "./collections.js"; import { Content } from "./content.js"; @@ -21,6 +22,7 @@ import { LiveTV } from "./livetv.js"; import { Log } from "./log.js"; import { Playlist } from "./playlist.js"; import { PlayQueue } from "./playqueue.js"; +import { Plex } from "./plex.js"; import { Preferences } from "./preferences.js"; import { Provider } from "./provider.js"; import { Rate } from "./rate.js"; @@ -31,6 +33,7 @@ import { Timeline } from "./timeline.js"; import { Transcoder } from "./transcoder.js"; import { UltraBlur } from "./ultrablur.js"; import { Updater } from "./updater.js"; +import { Users } from "./users.js"; export class PlexAPI extends ClientSDK { private _general?: General; @@ -163,6 +166,21 @@ export class PlexAPI extends ClientSDK { return (this._updater ??= new Updater(this._options)); } + private _authentication?: Authentication; + get authentication(): Authentication { + return (this._authentication ??= new Authentication(this._options)); + } + + private _users?: Users; + get users(): Users { + return (this._users ??= new Users(this._options)); + } + + private _plex?: Plex; + get plex(): Plex { + return (this._plex ??= new Plex(this._options)); + } + private _content?: Content; get content(): Content { return (this._content ??= new Content(this._options)); diff --git a/src/sdk/types/enums.ts b/src/sdk/types/enums.ts index 32ad7bcf..aba0ffd2 100644 --- a/src/sdk/types/enums.ts +++ b/src/sdk/types/enums.ts @@ -3,34 +3,14 @@ */ import * as z from "zod/v3"; +import { Unrecognized, unrecognized } from "./unrecognized.js"; -declare const __brand: unique symbol; -export type Unrecognized = T & { [__brand]: "unrecognized" }; export type ClosedEnum>> = T[keyof T]; export type OpenEnum>> = | T[keyof T] | Unrecognized; -function unrecognized(value: T): Unrecognized { - unrecognizedCount++; - return value as Unrecognized; -} - -let unrecognizedCount = 0; -let refCount = 0; -export function unrecognizedCounter() { - refCount++; - const start = unrecognizedCount; - return { - count: () => { - const count = unrecognizedCount - start; - if (--refCount === 0) unrecognizedCount = 0; - return count; - }, - }; -} - export function inboundSchema>( enumObj: T, ): z.ZodType, z.ZodTypeDef, unknown> { diff --git a/src/sdk/types/index.ts b/src/sdk/types/index.ts index 92d9f734..abf0b7ab 100644 --- a/src/sdk/types/index.ts +++ b/src/sdk/types/index.ts @@ -3,8 +3,9 @@ */ export { blobLikeSchema, isBlobLike } from "./blobs.js"; -export type { ClosedEnum, OpenEnum, Unrecognized } from "./enums.js"; +export type { ClosedEnum, OpenEnum } from "./enums.js"; export type { Result } from "./fp.js"; export type { PageIterator, Paginator } from "./operations.js"; export { createPageIterator } from "./operations.js"; export { RFCDate } from "./rfcdate.js"; +export * from "./unrecognized.js"; diff --git a/src/sdk/types/unrecognized.ts b/src/sdk/types/unrecognized.ts new file mode 100644 index 00000000..b7a2a13f --- /dev/null +++ b/src/sdk/types/unrecognized.ts @@ -0,0 +1,35 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +declare const __brand: unique symbol; +export type Unrecognized = T & { [__brand]: "unrecognized" }; + +function unrecognized(value: T): Unrecognized { + globalCount++; + return value as Unrecognized; +} + +let globalCount = 0; +let refCount = 0; +export function startCountingUnrecognized() { + refCount++; + const start = globalCount; + return { + /** + * Ends counting and returns the delta. + * @param delta - If provided, only this amount is added to the parent counter + * (used for nested unions where we only want to record the winning option's count). + * If not provided, records all counts since start(). + */ + end: (delta?: number) => { + const count = globalCount - start; + // Reset globalCount back to start, then add only the specified delta + globalCount = start + (delta ?? count); + if (--refCount === 0) globalCount = 0; + return count; + }, + }; +} + +export { unrecognized }; diff --git a/src/sdk/users.ts b/src/sdk/users.ts new file mode 100644 index 00000000..c76bfd77 --- /dev/null +++ b/src/sdk/users.ts @@ -0,0 +1,27 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { usersGetUsers } from "../funcs/usersGetUsers.js"; +import { ClientSDK, RequestOptions } from "../lib/sdks.js"; +import * as operations from "./models/operations/index.js"; +import { unwrapAsync } from "./types/fp.js"; + +export class Users extends ClientSDK { + /** + * Get list of all connected users + * + * @remarks + * Get list of all users that are friends and have library access with the provided Plex authentication token + */ + async getUsers( + request: operations.GetUsersRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(usersGetUsers( + this, + request, + options, + )); + } +} diff --git a/tsconfig.json b/tsconfig.json index 94d81a34..0c1134eb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "incremental": true, - "tsBuildInfoFile": ".tsbuildinfo", "target": "ES2020", "lib": ["ES2022", "DOM", "DOM.Iterable"], "jsx": "react-jsx", diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 00000000..ab935d4d --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/lib/http.ts","./node_modules/zod/dist/types/v3/helpers/typeAliases.d.ts","./node_modules/zod/dist/types/v3/helpers/util.d.ts","./node_modules/zod/dist/types/v3/ZodError.d.ts","./node_modules/zod/dist/types/v3/locales/en.d.ts","./node_modules/zod/dist/types/v3/errors.d.ts","./node_modules/zod/dist/types/v3/helpers/parseUtil.d.ts","./node_modules/zod/dist/types/v3/helpers/enumUtil.d.ts","./node_modules/zod/dist/types/v3/helpers/errorUtil.d.ts","./node_modules/zod/dist/types/v3/helpers/partialUtil.d.ts","./node_modules/zod/dist/types/v3/standard-schema.d.ts","./node_modules/zod/dist/types/v3/types.d.ts","./node_modules/zod/dist/types/v3/external.d.ts","./node_modules/zod/dist/types/v3/index.d.ts","./node_modules/zod/dist/types/index.d.ts","./src/sdk/models/shared/accepts.ts","./src/sdk/models/shared/advancedsubtitles.ts","./src/sdk/models/shared/boolint.ts","./src/sdk/models/errors/sdkvalidationerror.ts","./src/sdk/types/fp.ts","./src/lib/schemas.ts","./src/sdk/models/shared/channel.ts","./src/sdk/models/shared/channelmapping.ts","./src/sdk/models/shared/composite.ts","./src/lib/primitives.ts","./src/sdk/models/shared/device.ts","./src/sdk/models/shared/directory.ts","./src/sdk/models/shared/dvrrequesthandlerslashgetresponses200.ts","./src/sdk/models/shared/filter.ts","./src/sdk/models/shared/getresponses200.ts","./src/sdk/models/shared/historyallgetresponses200.ts","./src/sdk/types/rfcdate.ts","./src/sdk/models/shared/image.ts","./src/sdk/models/shared/stream.ts","./src/sdk/models/shared/part.ts","./src/sdk/models/shared/media.ts","./src/sdk/models/shared/sort.ts","./src/sdk/models/shared/tag.ts","./src/sdk/models/shared/metadata.ts","./src/sdk/models/shared/hub.ts","./src/sdk/models/shared/items.ts","./src/sdk/models/shared/mediatypestring.ts","./src/sdk/models/shared/librarysection.ts","./src/sdk/models/shared/librarysections.ts","./src/sdk/models/shared/lineup.ts","./src/sdk/models/shared/locationparameter.ts","./src/sdk/models/shared/mediacontainer.ts","./src/sdk/models/shared/mediacontainerwithartwork.ts","./src/sdk/models/shared/mediacontainerwithdecision.ts","./src/sdk/models/shared/mediacontainerwithdevice.ts","./src/sdk/models/shared/mediacontainerwithdirectory.ts","./src/sdk/models/shared/mediacontainerwithhubs.ts","./src/sdk/models/shared/mediacontainerwithlineup.ts","./src/sdk/models/shared/mediacontainerwithmetadata.ts","./src/sdk/models/shared/mediacontainerwithnestedmetadata.ts","./src/sdk/models/shared/mediacontainerwithplaylistmetadata.ts","./src/sdk/models/shared/setting.ts","./src/sdk/models/shared/mediacontainerwithsettings.ts","./src/sdk/models/shared/mediagraboperation.ts","./src/sdk/models/shared/mediasubscription.ts","./src/sdk/models/shared/mediacontainerwithsubscription.ts","./src/sdk/models/shared/mediatype.ts","./src/sdk/models/shared/mediaquery.ts","./src/sdk/models/shared/player.ts","./src/sdk/models/shared/plexdevice.ts","./src/sdk/models/shared/postresponses200.ts","./src/sdk/models/shared/protocolparameter.ts","./src/sdk/models/shared/security.ts","./src/sdk/models/shared/session.ts","./src/sdk/models/shared/slashgetresponses200.ts","./src/sdk/models/shared/subtitles.ts","./src/sdk/models/shared/transcodesession.ts","./src/sdk/models/shared/transcodetype.ts","./src/sdk/models/shared/user.ts","./src/sdk/types/unrecognized.ts","./src/sdk/types/enums.ts","./src/sdk/models/shared/userprofile.ts","./src/sdk/models/shared/userplexaccount.ts","./src/sdk/models/shared/index.ts","./src/lib/logger.ts","./src/lib/retries.ts","./src/lib/url.ts","./src/lib/config.ts","./src/lib/security.ts","./src/hooks/types.ts","./src/hooks/registration.ts","./src/hooks/hooks.ts","./src/sdk/models/errors/httpclienterrors.ts","./src/lib/base64.ts","./src/lib/is-plain-object.ts","./src/lib/encodings.ts","./src/lib/sdks.ts","./src/core.ts","./src/lib/files.ts","./src/sdk/models/errors/plexapierror.ts","./src/sdk/models/errors/responsevalidationerror.ts","./src/sdk/models/errors/sdkerror.ts","./src/lib/matchers.ts","./src/sdk/models/operations/addcollectionitems.ts","./src/sdk/models/operations/adddevice.ts","./src/sdk/models/operations/adddevicetodvr.ts","./src/sdk/models/operations/adddownloadqueueitems.ts","./src/sdk/models/operations/addextras.ts","./src/sdk/models/operations/addlineup.ts","./src/sdk/models/operations/addplaylistitems.ts","./src/sdk/models/operations/addprovider.ts","./src/sdk/models/operations/addsection.ts","./src/sdk/models/operations/addsubtitles.ts","./src/sdk/models/operations/addtoplayqueue.ts","./src/sdk/models/operations/analyzemetadata.ts","./src/sdk/models/operations/applyupdates.ts","./src/sdk/models/operations/autocomplete.ts","./src/sdk/models/operations/cancelactivity.ts","./src/sdk/models/operations/cancelgrab.ts","./src/sdk/models/operations/cancelrefresh.ts","./src/sdk/models/operations/checkupdates.ts","./src/sdk/models/operations/cleanbundles.ts","./src/sdk/models/operations/clearplaylistitems.ts","./src/sdk/models/operations/clearplayqueue.ts","./src/sdk/models/operations/computechannelmap.ts","./src/sdk/models/operations/connectwebsocket.ts","./src/sdk/models/operations/createcollection.ts","./src/sdk/models/operations/createcustomhub.ts","./src/sdk/models/operations/createdownloadqueue.ts","./src/sdk/models/operations/createdvr.ts","./src/sdk/models/operations/createmarker.ts","./src/sdk/models/operations/createplaylist.ts","./src/sdk/models/operations/createplayqueue.ts","./src/sdk/models/operations/createsubscription.ts","./src/sdk/models/operations/deletecaches.ts","./src/sdk/models/operations/deletecollection.ts","./src/sdk/models/operations/deletecollectionitem.ts","./src/sdk/models/operations/deletecustomhub.ts","./src/sdk/models/operations/deletedvr.ts","./src/sdk/models/operations/deletehistory.ts","./src/sdk/models/operations/deleteindexes.ts","./src/sdk/models/operations/deleteintros.ts","./src/sdk/models/operations/deletelibrarysection.ts","./src/sdk/models/operations/deletelineup.ts","./src/sdk/models/operations/deletemarker.ts","./src/sdk/models/operations/deletemediaitem.ts","./src/sdk/models/operations/deletemediaprovider.ts","./src/sdk/models/operations/deletemetadataitem.ts","./src/sdk/models/operations/deleteplaylist.ts","./src/sdk/models/operations/deleteplaylistitem.ts","./src/sdk/models/operations/deleteplayqueueitem.ts","./src/sdk/models/operations/deletestream.ts","./src/sdk/models/operations/deletesubscription.ts","./src/sdk/models/operations/detectads.ts","./src/sdk/models/operations/detectcredits.ts","./src/sdk/models/operations/detectintros.ts","./src/sdk/models/operations/detectvoiceactivity.ts","./src/sdk/models/operations/discoverdevices.ts","./src/sdk/models/operations/editmarker.ts","./src/sdk/models/operations/editmetadataitem.ts","./src/sdk/models/operations/editsection.ts","./src/sdk/models/operations/editsubscriptionpreferences.ts","./src/sdk/models/operations/emptytrash.ts","./src/sdk/models/operations/enablepapertrail.ts","./src/sdk/models/operations/generatethumbs.ts","./src/sdk/models/operations/getalbums.ts","./src/sdk/models/operations/getallhubs.ts","./src/sdk/models/operations/getallitemleaves.ts","./src/sdk/models/operations/getalllanguages.ts","./src/sdk/models/operations/getallleaves.ts","./src/sdk/models/operations/getallpreferences.ts","./src/sdk/models/operations/getallsubscriptions.ts","./src/sdk/models/operations/getarts.ts","./src/sdk/models/operations/getaugmentationstatus.ts","./src/sdk/models/operations/getavailablegrabbers.ts","./src/sdk/models/operations/getavailablesorts.ts","./src/sdk/models/operations/getbackgroundtasks.ts","./src/sdk/models/operations/getcategories.ts","./src/sdk/models/operations/getchannels.ts","./src/sdk/models/operations/getchapterimage.ts","./src/sdk/models/operations/getcluster.ts","./src/sdk/models/operations/getcollectionimage.ts","./src/sdk/models/operations/getcollectionitems.ts","./src/sdk/models/operations/getcollections.ts","./src/sdk/models/operations/getcolors.ts","./src/sdk/models/operations/getcommon.ts","./src/sdk/models/operations/getcontinuewatching.ts","./src/sdk/models/operations/getcountries.ts","./src/sdk/models/operations/getcountrieslineups.ts","./src/sdk/models/operations/getcountryregions.ts","./src/sdk/models/operations/getdevicedetails.ts","./src/sdk/models/operations/getdeviceschannels.ts","./src/sdk/models/operations/getdownloadqueue.ts","./src/sdk/models/operations/getdownloadqueueitems.ts","./src/sdk/models/operations/getdownloadqueuemedia.ts","./src/sdk/models/operations/getdvr.ts","./src/sdk/models/operations/getextras.ts","./src/sdk/models/operations/getfile.ts","./src/sdk/models/operations/getfirstcharacters.ts","./src/sdk/models/operations/getfolders.ts","./src/sdk/models/operations/gethistoryitem.ts","./src/sdk/models/operations/gethubitems.ts","./src/sdk/models/operations/getidentity.ts","./src/sdk/models/operations/getimage.ts","./src/sdk/models/operations/getimagefrombif.ts","./src/sdk/models/operations/getitemartwork.ts","./src/sdk/models/operations/getitemdecision.ts","./src/sdk/models/operations/getitemtree.ts","./src/sdk/models/operations/getlibrarydetails.ts","./src/sdk/models/operations/getlibraryitems.ts","./src/sdk/models/operations/getlibrarymatches.ts","./src/sdk/models/operations/getlineup.ts","./src/sdk/models/operations/getlineupchannels.ts","./src/sdk/models/operations/getlivetvsession.ts","./src/sdk/models/operations/getmediapart.ts","./src/sdk/models/operations/getmetadatahubs.ts","./src/sdk/models/operations/getmetadataitem.ts","./src/sdk/models/operations/getnotifications.ts","./src/sdk/models/operations/getpartindex.ts","./src/sdk/models/operations/getperson.ts","./src/sdk/models/operations/getplaylist.ts","./src/sdk/models/operations/getplaylistgenerator.ts","./src/sdk/models/operations/getplaylistgeneratoritems.ts","./src/sdk/models/operations/getplaylistgenerators.ts","./src/sdk/models/operations/getplaylistitems.ts","./src/sdk/models/operations/getplayqueue.ts","./src/sdk/models/operations/getpostplayhubs.ts","./src/sdk/models/operations/getpreference.ts","./src/sdk/models/operations/getpromotedhubs.ts","./src/sdk/models/operations/getrandomartwork.ts","./src/sdk/models/operations/getrelatedhubs.ts","./src/sdk/models/operations/getrelateditems.ts","./src/sdk/models/operations/getscheduledrecordings.ts","./src/sdk/models/operations/getsectionfilters.ts","./src/sdk/models/operations/getsectionhubs.ts","./src/sdk/models/operations/getsectionimage.ts","./src/sdk/models/operations/getsectionpreferences.ts","./src/sdk/models/operations/getsections.ts","./src/sdk/models/operations/getsectionsprefs.ts","./src/sdk/models/operations/getserverinfo.ts","./src/sdk/models/operations/getserverresources.ts","./src/sdk/models/operations/getsessionplaylistindex.ts","./src/sdk/models/operations/getsessions.ts","./src/sdk/models/operations/getsessionsegment.ts","./src/sdk/models/operations/getsonicallysimilar.ts","./src/sdk/models/operations/getsonicpath.ts","./src/sdk/models/operations/getsourceconnectioninformation.ts","./src/sdk/models/operations/getstream.ts","./src/sdk/models/operations/getstreamlevels.ts","./src/sdk/models/operations/getstreamloudness.ts","./src/sdk/models/operations/getsubscription.ts","./src/sdk/models/operations/gettags.ts","./src/sdk/models/operations/gettasks.ts","./src/sdk/models/operations/gettemplate.ts","./src/sdk/models/operations/getthumb.ts","./src/sdk/models/operations/gettokendetails.ts","./src/sdk/models/operations/gettransienttoken.ts","./src/sdk/models/operations/getupdatesstatus.ts","./src/sdk/models/operations/getusers.ts","./src/sdk/models/operations/ingesttransientitem.ts","./src/sdk/models/operations/listactivities.ts","./src/sdk/models/operations/listcontent.ts","./src/sdk/models/operations/listdevices.ts","./src/sdk/models/operations/listdownloadqueueitems.ts","./src/sdk/models/operations/listdvrs.ts","./src/sdk/models/operations/listhubs.ts","./src/sdk/models/operations/listlineups.ts","./src/sdk/models/operations/listmatches.ts","./src/sdk/models/operations/listmoments.ts","./src/sdk/models/operations/listpersonmedia.ts","./src/sdk/models/operations/listplaybackhistory.ts","./src/sdk/models/operations/listplaylists.ts","./src/sdk/models/operations/listproviders.ts","./src/sdk/models/operations/listsessions.ts","./src/sdk/models/operations/listsimilar.ts","./src/sdk/models/operations/listsonicallysimilar.ts","./src/sdk/models/operations/listtopusers.ts","./src/sdk/models/operations/makedecision.ts","./src/sdk/models/operations/markplayed.ts","./src/sdk/models/operations/matchitem.ts","./src/sdk/models/operations/mergeitems.ts","./src/sdk/models/operations/modifydevice.ts","./src/sdk/models/operations/modifyplaylistgenerator.ts","./src/sdk/models/operations/movecollectionitem.ts","./src/sdk/models/operations/movehub.ts","./src/sdk/models/operations/moveplaylistitem.ts","./src/sdk/models/operations/moveplayqueueitem.ts","./src/sdk/models/operations/optimizedatabase.ts","./src/sdk/models/operations/postuserssignindata.ts","./src/sdk/models/operations/processsubscriptions.ts","./src/sdk/models/operations/refreshitemsmetadata.ts","./src/sdk/models/operations/refreshplaylist.ts","./src/sdk/models/operations/refreshproviders.ts","./src/sdk/models/operations/refreshsection.ts","./src/sdk/models/operations/refreshsectionsmetadata.ts","./src/sdk/models/operations/reloadguide.ts","./src/sdk/models/operations/removedevice.ts","./src/sdk/models/operations/removedevicefromdvr.ts","./src/sdk/models/operations/removedownloadqueueitems.ts","./src/sdk/models/operations/reordersubscription.ts","./src/sdk/models/operations/report.ts","./src/sdk/models/operations/resetplayqueue.ts","./src/sdk/models/operations/resetsectiondefaults.ts","./src/sdk/models/operations/restartprocessingdownloadqueueitems.ts","./src/sdk/models/operations/scan.ts","./src/sdk/models/operations/searchhubs.ts","./src/sdk/models/operations/setchannelmap.ts","./src/sdk/models/operations/setdevicepreferences.ts","./src/sdk/models/operations/setdvrpreferences.ts","./src/sdk/models/operations/setitemartwork.ts","./src/sdk/models/operations/setitempreferences.ts","./src/sdk/models/operations/setpreferences.ts","./src/sdk/models/operations/setrating.ts","./src/sdk/models/operations/setsectionpreferences.ts","./src/sdk/models/operations/setstreamoffset.ts","./src/sdk/models/operations/setstreamselection.ts","./src/sdk/models/operations/shuffle.ts","./src/sdk/models/operations/splititem.ts","./src/sdk/models/operations/startanalysis.ts","./src/sdk/models/operations/startbifgeneration.ts","./src/sdk/models/operations/starttask.ts","./src/sdk/models/operations/starttasks.ts","./src/sdk/models/operations/starttranscodesession.ts","./src/sdk/models/operations/stopallrefreshes.ts","./src/sdk/models/operations/stopdvrreload.ts","./src/sdk/models/operations/stopscan.ts","./src/sdk/models/operations/stoptask.ts","./src/sdk/models/operations/stoptasks.ts","./src/sdk/models/operations/terminatesession.ts","./src/sdk/models/operations/transcodeimage.ts","./src/sdk/models/operations/transcodesubtitles.ts","./src/sdk/models/operations/triggerfallback.ts","./src/sdk/models/operations/tunechannel.ts","./src/sdk/models/operations/unmatch.ts","./src/sdk/models/operations/unscrobble.ts","./src/sdk/models/operations/unshuffle.ts","./src/sdk/models/operations/updatehubvisibility.ts","./src/sdk/models/operations/updateitemartwork.ts","./src/sdk/models/operations/updateitems.ts","./src/sdk/models/operations/updateplaylist.ts","./src/sdk/models/operations/uploadplaylist.ts","./src/sdk/models/operations/voicesearchhubs.ts","./src/sdk/models/operations/writelog.ts","./src/sdk/models/operations/writemessage.ts","./src/sdk/models/operations/index.ts","./src/sdk/types/async.ts","./src/funcs/activitiesCancelActivity.ts","./src/funcs/activitiesListActivities.ts","./src/sdk/activities.ts","./src/sdk/models/errors/getserverresources.ts","./src/sdk/models/errors/gettokendetails.ts","./src/sdk/models/errors/getusers.ts","./src/sdk/models/errors/postuserssignindata.ts","./src/sdk/models/errors/index.ts","./src/funcs/authenticationGetTokenDetails.ts","./src/funcs/authenticationPostUsersSignInData.ts","./src/sdk/authentication.ts","./src/funcs/butlerGetTasks.ts","./src/funcs/butlerStartTask.ts","./src/funcs/butlerStartTasks.ts","./src/funcs/butlerStopTask.ts","./src/funcs/butlerStopTasks.ts","./src/sdk/butler.ts","./src/funcs/collectionsCreateCollection.ts","./src/sdk/collections.ts","./src/funcs/contentGetAlbums.ts","./src/funcs/contentGetAllLeaves.ts","./src/funcs/contentGetArts.ts","./src/funcs/contentGetCategories.ts","./src/funcs/contentGetCluster.ts","./src/funcs/contentGetCollectionImage.ts","./src/funcs/contentGetCollectionItems.ts","./src/funcs/contentGetFolders.ts","./src/funcs/contentGetMetadataItem.ts","./src/funcs/contentGetSonicallySimilar.ts","./src/funcs/contentGetSonicPath.ts","./src/funcs/contentListContent.ts","./src/funcs/contentListMoments.ts","./src/sdk/content.ts","./src/funcs/devicesAddDevice.ts","./src/funcs/devicesDiscoverDevices.ts","./src/funcs/devicesGetAvailableGrabbers.ts","./src/funcs/devicesGetDeviceDetails.ts","./src/funcs/devicesGetDevicesChannels.ts","./src/funcs/devicesGetThumb.ts","./src/funcs/devicesListDevices.ts","./src/funcs/devicesModifyDevice.ts","./src/funcs/devicesRemoveDevice.ts","./src/funcs/devicesScan.ts","./src/funcs/devicesSetChannelmap.ts","./src/funcs/devicesSetDevicePreferences.ts","./src/funcs/devicesStopScan.ts","./src/sdk/devices.ts","./src/funcs/downloadQueueAddDownloadQueueItems.ts","./src/funcs/downloadQueueCreateDownloadQueue.ts","./src/funcs/downloadQueueGetDownloadQueue.ts","./src/funcs/downloadQueueGetDownloadQueueItems.ts","./src/funcs/downloadQueueGetDownloadQueueMedia.ts","./src/funcs/downloadQueueGetItemDecision.ts","./src/funcs/downloadQueueListDownloadQueueItems.ts","./src/funcs/downloadQueueRemoveDownloadQueueItems.ts","./src/funcs/downloadQueueRestartProcessingDownloadQueueItems.ts","./src/sdk/downloadqueue.ts","./src/funcs/dvRsAddDeviceToDVR.ts","./src/funcs/dvRsAddLineup.ts","./src/funcs/dvRsCreateDVR.ts","./src/funcs/dvRsDeleteDVR.ts","./src/funcs/dvRsDeleteLineup.ts","./src/funcs/dvRsGetDVR.ts","./src/funcs/dvRsListDVRs.ts","./src/funcs/dvRsReloadGuide.ts","./src/funcs/dvRsRemoveDeviceFromDVR.ts","./src/funcs/dvRsSetDVRPreferences.ts","./src/funcs/dvRsStopDVRReload.ts","./src/funcs/dvRsTuneChannel.ts","./src/sdk/dvrs.ts","./src/funcs/epgComputeChannelMap.ts","./src/funcs/epgGetAllLanguages.ts","./src/funcs/epgGetChannels.ts","./src/funcs/epgGetCountries.ts","./src/funcs/epgGetCountriesLineups.ts","./src/funcs/epgGetCountryRegions.ts","./src/funcs/epgGetLineup.ts","./src/funcs/epgGetLineupChannels.ts","./src/funcs/epgListLineups.ts","./src/sdk/epg.ts","./src/funcs/eventsConnectWebSocket.ts","./src/funcs/eventsGetNotifications.ts","./src/sdk/events.ts","./src/funcs/generalGetIdentity.ts","./src/funcs/generalGetServerInfo.ts","./src/funcs/generalGetSourceConnectionInformation.ts","./src/funcs/generalGetTransientToken.ts","./src/sdk/general.ts","./src/funcs/hubsCreateCustomHub.ts","./src/funcs/hubsDeleteCustomHub.ts","./src/funcs/hubsGetAllHubs.ts","./src/funcs/hubsGetContinueWatching.ts","./src/funcs/hubsGetHubItems.ts","./src/funcs/hubsGetMetadataHubs.ts","./src/funcs/hubsGetPostplayHubs.ts","./src/funcs/hubsGetPromotedHubs.ts","./src/funcs/hubsGetRelatedHubs.ts","./src/funcs/hubsGetSectionHubs.ts","./src/funcs/hubsListHubs.ts","./src/funcs/hubsMoveHub.ts","./src/funcs/hubsResetSectionDefaults.ts","./src/funcs/hubsUpdateHubVisibility.ts","./src/sdk/hubs.ts","./src/funcs/libraryAddExtras.ts","./src/funcs/libraryAddSection.ts","./src/funcs/libraryAddSubtitles.ts","./src/funcs/libraryAnalyzeMetadata.ts","./src/funcs/libraryAutocomplete.ts","./src/funcs/libraryCancelRefresh.ts","./src/funcs/libraryCleanBundles.ts","./src/funcs/libraryCreateMarker.ts","./src/funcs/libraryDeleteCaches.ts","./src/funcs/libraryDeleteCollection.ts","./src/funcs/libraryDeleteIndexes.ts","./src/funcs/libraryDeleteIntros.ts","./src/funcs/libraryDeleteLibrarySection.ts","./src/funcs/libraryDeleteMarker.ts","./src/funcs/libraryDeleteMediaItem.ts","./src/funcs/libraryDeleteMetadataItem.ts","./src/funcs/libraryDeleteStream.ts","./src/funcs/libraryDetectAds.ts","./src/funcs/libraryDetectCredits.ts","./src/funcs/libraryDetectIntros.ts","./src/funcs/libraryDetectVoiceActivity.ts","./src/funcs/libraryEditMarker.ts","./src/funcs/libraryEditMetadataItem.ts","./src/funcs/libraryEditSection.ts","./src/funcs/libraryEmptyTrash.ts","./src/funcs/libraryGenerateThumbs.ts","./src/funcs/libraryGetAllItemLeaves.ts","./src/funcs/libraryGetAugmentationStatus.ts","./src/funcs/libraryGetAvailableSorts.ts","./src/funcs/libraryGetChapterImage.ts","./src/funcs/libraryGetCollections.ts","./src/funcs/libraryGetCommon.ts","./src/funcs/libraryGetExtras.ts","./src/funcs/libraryGetFile.ts","./src/funcs/libraryGetFirstCharacters.ts","./src/funcs/libraryGetImageFromBif.ts","./src/funcs/libraryGetItemArtwork.ts","./src/funcs/libraryGetItemTree.ts","./src/funcs/libraryGetLibraryDetails.ts","./src/funcs/libraryGetLibraryItems.ts","./src/funcs/libraryGetLibraryMatches.ts","./src/funcs/libraryGetMediaPart.ts","./src/funcs/libraryGetPartIndex.ts","./src/funcs/libraryGetPerson.ts","./src/funcs/libraryGetRandomArtwork.ts","./src/funcs/libraryGetRelatedItems.ts","./src/funcs/libraryGetSectionFilters.ts","./src/funcs/libraryGetSectionImage.ts","./src/funcs/libraryGetSectionPreferences.ts","./src/funcs/libraryGetSections.ts","./src/funcs/libraryGetSectionsPrefs.ts","./src/funcs/libraryGetStream.ts","./src/funcs/libraryGetStreamLevels.ts","./src/funcs/libraryGetStreamLoudness.ts","./src/funcs/libraryGetTags.ts","./src/funcs/libraryIngestTransientItem.ts","./src/funcs/libraryListMatches.ts","./src/funcs/libraryListPersonMedia.ts","./src/funcs/libraryListSimilar.ts","./src/funcs/libraryListSonicallySimilar.ts","./src/funcs/libraryListTopUsers.ts","./src/funcs/libraryMatchItem.ts","./src/funcs/libraryMergeItems.ts","./src/funcs/libraryOptimizeDatabase.ts","./src/funcs/libraryRefreshItemsMetadata.ts","./src/funcs/libraryRefreshSection.ts","./src/funcs/libraryRefreshSectionsMetadata.ts","./src/funcs/librarySetItemArtwork.ts","./src/funcs/librarySetItemPreferences.ts","./src/funcs/librarySetSectionPreferences.ts","./src/funcs/librarySetStreamOffset.ts","./src/funcs/librarySetStreamSelection.ts","./src/funcs/librarySplitItem.ts","./src/funcs/libraryStartAnalysis.ts","./src/funcs/libraryStartBifGeneration.ts","./src/funcs/libraryStopAllRefreshes.ts","./src/funcs/libraryUnmatch.ts","./src/funcs/libraryUpdateItemArtwork.ts","./src/funcs/libraryUpdateItems.ts","./src/sdk/library.ts","./src/funcs/libraryCollectionsAddCollectionItems.ts","./src/funcs/libraryCollectionsDeleteCollectionItem.ts","./src/funcs/libraryCollectionsMoveCollectionItem.ts","./src/sdk/librarycollections.ts","./src/funcs/libraryPlaylistsAddPlaylistItems.ts","./src/funcs/libraryPlaylistsClearPlaylistItems.ts","./src/funcs/libraryPlaylistsCreatePlaylist.ts","./src/funcs/libraryPlaylistsDeletePlaylist.ts","./src/funcs/libraryPlaylistsDeletePlaylistItem.ts","./src/funcs/libraryPlaylistsGetPlaylistGenerator.ts","./src/funcs/libraryPlaylistsGetPlaylistGeneratorItems.ts","./src/funcs/libraryPlaylistsGetPlaylistGenerators.ts","./src/funcs/libraryPlaylistsModifyPlaylistGenerator.ts","./src/funcs/libraryPlaylistsMovePlaylistItem.ts","./src/funcs/libraryPlaylistsRefreshPlaylist.ts","./src/funcs/libraryPlaylistsUpdatePlaylist.ts","./src/funcs/libraryPlaylistsUploadPlaylist.ts","./src/sdk/libraryplaylists.ts","./src/funcs/liveTVGetLiveTVSession.ts","./src/funcs/liveTVGetSessionPlaylistIndex.ts","./src/funcs/liveTVGetSessions.ts","./src/funcs/liveTVGetSessionSegment.ts","./src/sdk/livetv.ts","./src/funcs/logEnablePapertrail.ts","./src/funcs/logWriteLog.ts","./src/funcs/logWriteMessage.ts","./src/sdk/log.ts","./src/funcs/playlistGetPlaylist.ts","./src/funcs/playlistGetPlaylistItems.ts","./src/funcs/playlistListPlaylists.ts","./src/sdk/playlist.ts","./src/funcs/playQueueAddToPlayQueue.ts","./src/funcs/playQueueClearPlayQueue.ts","./src/funcs/playQueueCreatePlayQueue.ts","./src/funcs/playQueueDeletePlayQueueItem.ts","./src/funcs/playQueueGetPlayQueue.ts","./src/funcs/playQueueMovePlayQueueItem.ts","./src/funcs/playQueueResetPlayQueue.ts","./src/funcs/playQueueShuffle.ts","./src/funcs/playQueueUnshuffle.ts","./src/sdk/playqueue.ts","./src/funcs/plexGetServerResources.ts","./src/sdk/plex.ts","./src/funcs/preferencesGetAllPreferences.ts","./src/funcs/preferencesGetPreference.ts","./src/funcs/preferencesSetPreferences.ts","./src/sdk/preferences.ts","./src/funcs/providerAddProvider.ts","./src/funcs/providerDeleteMediaProvider.ts","./src/funcs/providerListProviders.ts","./src/funcs/providerRefreshProviders.ts","./src/sdk/provider.ts","./src/funcs/rateSetRating.ts","./src/sdk/rate.ts","./src/funcs/searchSearchHubs.ts","./src/funcs/searchVoiceSearchHubs.ts","./src/sdk/search.ts","./src/funcs/statusDeleteHistory.ts","./src/funcs/statusGetBackgroundTasks.ts","./src/funcs/statusGetHistoryItem.ts","./src/funcs/statusListPlaybackHistory.ts","./src/funcs/statusListSessions.ts","./src/funcs/statusTerminateSession.ts","./src/sdk/status.ts","./src/funcs/subscriptionsCancelGrab.ts","./src/funcs/subscriptionsCreateSubscription.ts","./src/funcs/subscriptionsDeleteSubscription.ts","./src/funcs/subscriptionsEditSubscriptionPreferences.ts","./src/funcs/subscriptionsGetAllSubscriptions.ts","./src/funcs/subscriptionsGetScheduledRecordings.ts","./src/funcs/subscriptionsGetSubscription.ts","./src/funcs/subscriptionsGetTemplate.ts","./src/funcs/subscriptionsProcessSubscriptions.ts","./src/funcs/subscriptionsReorderSubscription.ts","./src/sdk/subscriptions.ts","./src/funcs/timelineMarkPlayed.ts","./src/funcs/timelineReport.ts","./src/funcs/timelineUnscrobble.ts","./src/sdk/timeline.ts","./src/funcs/transcoderMakeDecision.ts","./src/funcs/transcoderStartTranscodeSession.ts","./src/funcs/transcoderTranscodeImage.ts","./src/funcs/transcoderTranscodeSubtitles.ts","./src/funcs/transcoderTriggerFallback.ts","./src/sdk/transcoder.ts","./src/funcs/ultraBlurGetColors.ts","./src/funcs/ultraBlurGetImage.ts","./src/sdk/ultrablur.ts","./src/funcs/updaterApplyUpdates.ts","./src/funcs/updaterCheckUpdates.ts","./src/funcs/updaterGetUpdatesStatus.ts","./src/sdk/updater.ts","./src/funcs/usersGetUsers.ts","./src/sdk/users.ts","./src/sdk/sdk.ts","./src/index.ts","./src/hooks/index.ts","./src/lib/dlv.ts","./src/sdk/index.ts","./src/sdk/types/blobs.ts","./src/sdk/types/constdatetime.ts","./src/sdk/types/operations.ts","./src/sdk/types/index.ts","./src/sdk/types/streams.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts"],"fileIdsList":[[73],[61,62,73],[63,64],[61,62,63,65,66,71],[62,63],[71],[72],[63],[61,62,63,66,67,68,69,70],[151],[78,79,80,84,141,143,147,150,151,152,154,155,157,399,400],[78,79,84,141,143,147,151,152,154,155,157,399,400],[78,79,80,84,141,143,147,150,151,152,154,155,157,310,399,400,408],[78,79,80,84,141,147,150,151,152,154,155,157,343,399,400,408],[74,78,79,80,84,141,143,147,151,152,154,155,157,399,400],[78,79,80,84,141,143,147,150,151,152,154,155,157,295,399,400,408],[78,79,80,84,141,143,147,150,151,152,154,155,157,313,399,400,408],[60,144,145],[144,146],[144],[60,140,142,143],[60,142,153,678],[74],[60,138,139,140,141],[148,149],[60,79,149,155,156],[60],[74,78,79],[60,79,139,140,142,143,144,146,147,148,150],[138],[79,151,399,401,402],[79,151,399,409,410],[79,151,399,412,413,414,415,416],[79,151,399,418],[79,151,399,420,421,422,423,424,425,426,427,428,429,430,431,432],[79,151,399,434,435,436,437,438,439,440,441,442,443,444,445,446],[79,151,399,448,449,450,451,452,453,454,455,456],[79,151,399,458,459,460,461,462,463,464,465,466,467,468,469],[79,151,399,471,472,473,474,475,476,477,478,479],[79,151,399,481,482],[79,151,399,484,485,486,487],[79,151,399,489,490,491,492,493,494,495,496,497,498,499,500,501,502],[678],[79,151,399,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582],[79,151,399,584,585,586],[79,151,399,588,589,590,591,592,593,594,595,596,597,598,599,600],[79,151,399,602,603,604,605],[79,151,399,607,608,609],[74,84,154,399],[78,147,154,155,156,404,405,406,407],[74,78,154],[154],[74,78,79,80,84,138],[74,78,79,80,84],[74,78,79,80,84,91,138],[158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398],[74,78,79,80,84,135,138],[74,78,79,80],[74,78,79,80,82,84],[74,78,79,80,84,85],[74,78,79,80,84,98],[75,76,77,81,82,83,85,86,87,88,89,90,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,136,137],[74,78,79,80,84,88,91,92,95,96,97],[74,78,79,80,84,101],[74,78,79,80,84,94],[74,78,79,80,84,88,91,92,96,97],[74,78,79,80,84,86],[74,78,79,80,84,99],[74,78,79,80,84,104],[74,78,79,80,84,88,91,92,95,96,97,100],[74,78,79,80,84,116],[74,78,79,80,84,119],[74,121],[74,78,79,80,84,116,118],[74,78,79,80,84,93],[74,78,79,80,135,136],[79,151,399,611,612,613],[79,151,399,615,616,617,618,619,620,621,622,623],[79,151,399,625],[79,151,399,627,628,629],[79,151,399,631,632,633,634],[79,151,399,636],[151,403,411,417,419,433,447,457,470,480,483,488,503,583,587,601,606,610,614,624,626,630,635,637,640,647,658,662,668,671,675,677],[79,151,399,638,639],[79,151,399,641,642,643,644,645,646],[79,151,399,648,649,650,651,652,653,654,655,656,657],[79,151,399,659,660,661],[79,151,399,663,664,665,666,667],[74,134],[79,91,134,135,683,685],[79],[79,151,399,669,670],[79,151,399,672,673,674],[79,151,399,676]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7d4040171221b4d6225a59a74c5d091fa4ccbb95c5edb88601ce1f046cf81624","signature":"7748b5e81a4ae1ea5d8e89e879053cec4a29ffc29cbdcd1d3f6e742abddd323a","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"f0b0faa1124572012fe96d969dbe3420e6c8c4dcc07a823c7e7251377a451adb","signature":"8880831ad6a317ab7ffed3958a4c454a2a0e3f4f482019a119be0b6d74414703","impliedFormat":1},{"version":"9fa7efedaa6d25785a704d15d84eb3f98452df66df3e236e8ae5c3182d9735b6","signature":"c2ff684c281e0fb640ff9494edc2315f6cc30c256773416e25e8ba3b453d8617","impliedFormat":1},{"version":"f307eee7aa646a65456f94d5751705d93cfe12649af2410058b538ec41c35c68","signature":"2b4a02c120dbaa8119706fc2030bb00f3ab985987515e6637a05413cc8b753d2","impliedFormat":1},{"version":"397b7b2590803a6daa8f432891e40bc840d7ce353c9e0600adee12a0db07454c","signature":"512c1bfc76a43fbe8fcdd7a674663e1aee064292c5d81cd050bdb37716cbd8e6","impliedFormat":1},{"version":"86504e23a63d55878dd54b9b4b69c0bca3d907d7d47cb318abcf356516e72f7c","signature":"24294e95d086f5fddd2e79f58837d15822acb2a317daf9d4ada7bdf2259e0af2","impliedFormat":1},{"version":"f0ef28ecef1a9a37148a5c56c10ba490d9f8e9e66f517ee65acd5a012d7a27c9","signature":"3501431713a28061eff927c87f524ee1d20420e7610fb472eb3b2689d4a9ec05","impliedFormat":1},{"version":"d96bbfe3fa9701bdedcc30ece28ba0895be039b45c3929a8e5d2ad40e40e2d0f","signature":"b577360a26fa2a4837129a1b35d8521ac5b57972df6f52e985813baf1b47b823","impliedFormat":1},{"version":"60e70fd9b5fd21f13445928a632d0f7f30849fce0c4ca624b3e9efe8f11b83d8","signature":"099a5f7e9728f9f418a13ac04ae8d231a1745a6b77ba553c537c9b592b7c1097","impliedFormat":1},{"version":"a07fd941bceb5bf1ced916a07f485313b231521a65910f536eeb3066f7b54906","signature":"546c6a13b1917fa5072723bfd4dffcb480cffa9fce9d2e824862ded098689535","impliedFormat":1},{"version":"59baa6b0600894f8b7ff2a5b50e6ae026b714f06cca13b51406f37eae5a2288f","signature":"c923edcbb2702bea342f2a52a1e1ccfea2e7ab1246b3b32f96ba18f5b1cb0af4","impliedFormat":1},{"version":"d67ca7d29ee8f6572ad6ebcca2fd550e78eb8210cb2d10e797579b8f1437d7ad","signature":"8a61e21be8485d2b9b2652d745fcbf2166485cd6c6b40a5d90273dda86a4876d","impliedFormat":1},{"version":"4274eb800d7a524e6457eacd4b5bbbba90498afe139f7ee47c546a490bbb0ff7","signature":"8fa37dc97cb052b211330a9b59913693aacec221e7bef622c1d98ee5acfa44b9","impliedFormat":1},{"version":"109cd18731c89e59a1ac7e2a2ef04bcc42c789549076eb0671922c24d3a9434f","signature":"ec0bba9edbdc48d37521c0e67b7fd926db6c003431d25c388ffa5dccf872c6c8","impliedFormat":1},{"version":"fc64bc505e72ab1d51dbd170beb93c676848858b3d2a790d1ca84eda43b5fbb9","signature":"f863c64f63cd76f64af40633819baee359e2bebd2fe9f4c0ec50060926f644d6","impliedFormat":1},{"version":"abfb12199845c2ccae2e0288cfd7f265dba0e31deef022920fd5254b1543b56a","signature":"f7493c4ab78bf58502c5f6a30cc4076b08b64301bee7d42bfac124037cf4a4c9","impliedFormat":1},{"version":"7fbcf2f09d6d69c3739d7abf8a7d6e5c8f2ef4afae8ddf844b1fa2c82f0fd06a","signature":"29cb22e7c11558414c27c1d130396967798b6e3cbe21ae9f1e3ad3183bdd1eab","impliedFormat":1},{"version":"66ac7f0b04b446564190f7b177c1bf1362459f596308a4664f2d6bdc685b4c0c","signature":"df95d1def9641a949d1b863875ac231727a29b213c9c711ef44a5ff53990aeb3","impliedFormat":1},{"version":"f78365175a56119ca8ebc707f38e4899b237072dea70661ffafa9b4a3860387a","signature":"ac29635a0252f733f7edd1936e387e3120ae647ac5748683a8e51ce127626fb7","impliedFormat":1},{"version":"eba716ca211e61b473badef49a06ee15b7c81b1eba2bb3e0aa01e1e12d5411ad","signature":"38b80437a7cb4d8c6f1fc0e3ea8d4c6cfe719699de45dec29937959d2aa9a548","impliedFormat":1},{"version":"9a6a1f28f9fcf514eaa7e7251623fb1671a3f00209c00cccf6cd63d6919a3e43","signature":"49ea3e19671b55d4946fd7b3799efb556af98b1a0b9c82fa33cb1de3a5fc6252","impliedFormat":1},{"version":"80e2167470ba522ceee9ba38d3d3fbccc1e8ae9f7c9189c0ce13013ee89bfd32","signature":"d8aba4f156464108d4e85dbbc0adc935add6beb0c001623bacf1537a98c370cc","impliedFormat":1},{"version":"cfb9ab18d0a7a54bd56189750ec2e9e93ae338900ee7b5754e3981f5f54cd18b","signature":"b499b9ab942d5ce1a9c89572787e2948f281fabc32f248af68e93b2c5b593862","impliedFormat":1},{"version":"36ece0463cde8edcb6a0a4d4552da3dc6777551e30a8b347fe6d5ac78cf79302","signature":"8a1429b6ad71fd933695fbffeb48106d774f614dd801ab17a25b5cb3823e8872","impliedFormat":1},{"version":"18723aa45221eb36b54ed4f2fb000ebc03310ecdeb7104c20098a82d62a3c74e","signature":"ac1804ebb06b80a6228c50ac6f8cd9ca6c44e475773bdc83b710652993f351ce","impliedFormat":1},{"version":"4fa1d6643cf5f14b0cf01ec24b318379c9ba665b8398fa5b0a75c789f3027ff2","signature":"3d7f058053c7c4f852cb9e1546e3ca1e2998128003969f7c4799657a376edc3d","impliedFormat":1},{"version":"f04a92807ea7a47a4cbc31a97f92c793987138cc6dc244a3a7ef294380dfa6c4","signature":"7a5978461949c3adfe2d526792966a1d08c1d6aa560dd05bf93528f0aea7e1a7","impliedFormat":1},{"version":"aa905f60848b6a5b454f63000c2e1c059d34ab268ba4f29eeea87a799b8ff9b1","signature":"c83b55d5a0d8f1131802102bf3e5164865b4ccc1dcc36f3239b57e1559ee297e","impliedFormat":1},{"version":"fd03c85707f87fc1bdf35bb8aa70745a65fee0ddbf4f783d1e17334a19bd6a03","signature":"002af280e8792354a546de5d0050c4632e30c360b6e22cbaf16c8c5546997fe4","impliedFormat":1},{"version":"7bbe7f087c2dcb844b1009371c69ac3e58a43fd818040476a1cef7b2e5432143","signature":"dea2f618a0250cc24f833cbca5a8d1ced322d6c27268a048f76eb03ffa22e8b5","impliedFormat":1},{"version":"a47a3a395c01a52989a2f76fdd874b397de49cad0255f22c7d04d6f826936ae4","signature":"4db7d2732b9ef2d14e63d0d90c5b86a9c269b1e03318c13997f17c42368b35db","impliedFormat":1},{"version":"7284ac3f5995f1c4fe060a27057d15c8fb9e559765c4b743e68042dbf5bb0602","signature":"f2d22498a2a95c1f6302fa5c09d996f71ee802759ebcb7f48f7239fbae25fbe5","impliedFormat":1},{"version":"6053a5111c1bd5dd203bfeed0acdfe309da6aafad1981169a6d3c9542a841b68","signature":"67461a5e3f66aa612dbdc3a07886ee70593b8f8cda48fd56f003f8693ffa0d53","impliedFormat":1},{"version":"9ff24f2100cafbb265432a140605cc524506ce6b2a30bb4cda9e02f6d10b3e1c","signature":"3c376a4bfbfdf63f223840ff7522bda29a5ad86116c50997b732614002037275","impliedFormat":1},{"version":"8b91059a43ca4846c956268a02d2571c87770b72a488fa4baacfe3341ca0adb1","signature":"1921799ae2b8cc7a5c9ae79712cf1f903c76a6d645936ad46ec9feb781967682","impliedFormat":1},{"version":"cc872e11ca155f4b56c8c573fed5f6b9b9b3eef4b906280029d8d790c731767f","signature":"ec488f61f6b313513b3960ef94ba3711ed7ed426e064786ea2d5174e21bc5c75","impliedFormat":1},{"version":"4af6966580d22366dc7c3513cba19f4a725388925c8bf542d73304f56d09c77e","signature":"d959b6075c44763cd56bc98cd9466027a797b628abdec52e40fef4f3453e2909","impliedFormat":1},{"version":"7857f030bf4730a670451584f35b56ada30d93efc18b0f9cefba5258b54e836a","signature":"a44261e67929aaacb4767ef107b3be4f505e356f4e7a4c4bd23a9c66162f2d88","impliedFormat":1},{"version":"289d2cbc927a4abb3c4a0b6f756e3122cdb061d0bfe54a6ad613b3174338097a","signature":"e054fd427242b147b6c6c1aae8a05c1a343dad96d727a41bd0b80336465fd929","impliedFormat":1},{"version":"dd95ea4bebcfad33c0a63f33b3fc0f3253ec9fd45da93f5331c9d4b9a60713c3","signature":"114a501e6fc284e94279fd8262884f57128144b9370e7cb8ac9ad1e74f3f1a0a","impliedFormat":1},{"version":"83891cfb86a7015673e7ffc7ed09040d0ae58bb4c5216b51aa98e9c86c553039","signature":"aaf03ad4207450a75e5871d78758edf5800b7e51d2b7dc1e62eadd3bfa4b9698","impliedFormat":1},{"version":"366904c3581e7aa75d5496cf36305f4b6b86df6e2e266e9617da09372e143de0","signature":"85932b666cc0b739e8dd4a641403ec4a5ffab2ae121d86e3659848ae3fa21101","impliedFormat":1},{"version":"87666c392385a45e24bb62e048693755cf9d1d89705ab2281175f57b3c527371","signature":"ca62c7370e3189e5effd0ba3444f4e0ef69882f8fe0f7cc9bf408fa6e7be0b8b","impliedFormat":1},{"version":"ee7c8facce2308545c85a06190a06e2e095bd327c3f2cf41b9049b1a3e28a392","signature":"6c20c0d32e331a97e947b73d247d1aa130b076d0341dd4110dd8333f5e425a33","impliedFormat":1},{"version":"fa995a9bd6a288c4b64948f2ce43635e0f8731f3f25f0ee41e687f0ab5cb785c","signature":"e0b8a052d6e304a1cf37140100b99c06a38f9e85fb0e29e18d30f0249d6c34b7","impliedFormat":1},{"version":"69931d85ffcf74bf9583d1556cd164aa22ab2650a0b4c1e3a4ad3f51c5d3de1d","signature":"633732030c6c530f4ff69088018cb57ff6baf187f6460c522f613374e2729b5c","impliedFormat":1},{"version":"3fa4d7450bf9c3d4c4ea9a00a489752c850da77d95511d730aedcc36fc80a2f2","signature":"59723be6ff6f6887bcfe79bd215fb00aa5571f63d77782137c85cb17549e69cf","impliedFormat":1},{"version":"ddac572c925f34d0d2ff87d6195e6a270b82f248d5be3c306e5b696ccaee607f","signature":"916955a06d7e9cc894d6d3b265abad2520430a37c1a2f4449324fae188c92b31","impliedFormat":1},{"version":"1d4ce87f838983c6f6fd3a65c89895f8f0106ab521731133b9957ea1104b6d79","signature":"7b7b9520e46f440ca0fef09acd9a757e7df33c80408b32d3014fad9fda4fd69c","impliedFormat":1},{"version":"47056be6e2bd1f6756643408d69dfae26cec57c9750a0009aeae475b9d302aa4","signature":"4de315b437ea8714ae78ac895fae55a9c4b0750a78a1af69206212edbc09aa9b","impliedFormat":1},{"version":"987ed01a8b7da0eb3b9794d47251b54bca46b890839944a433fc093086f6d9bb","signature":"02d0b9a09b703a6e7284275c538e2f25ee6aac3298c2dd28415a2b045d27b8dc","impliedFormat":1},{"version":"f1aaa4a0e420b87b8fc99c95a18668d39429a509fa0fa8fc600ae51fe7452b8e","signature":"0a55e711e4bc2e3fb2f60e168500157ea7b376babd0c2a3345cf6325ae8cee68","impliedFormat":1},{"version":"daefc1cc519710e97a1a649ddbcb9960def7ad9fb6c9989b70dd91bbb05e9b01","signature":"3a39abb8a448deafe266e8cbd8d068da4bafc10b946827e2124a56fe5f14176f","impliedFormat":1},{"version":"f6c9e050b22728c724b703e20d3b2008c3497ca368296efcaf39251f2525ac9c","signature":"95cdb44cea16260d83138571c890ca3e13ca737251ec21171444938f8dd62146","impliedFormat":1},{"version":"8adcedb88729994d1be152f5db912900b393169383ba00b9302beb11809b3c70","signature":"fbac0cd8b47b87e4e36264d9c9640749398c282cf25e9e58f54c9853cb1c201c","impliedFormat":1},{"version":"0550a267a92b3d6996a02f377cb7b995f6a65941b910c34a6ab5fa9f3977d2ff","signature":"a5003f75ef138f031b63984bc7ee59f7d7a3a9a70349d9898c685eb2891d053d","impliedFormat":1},{"version":"7b11b5d1acbb09137f3559867f8420fa88691ceb8b4f2ffca80e82b814e585ab","signature":"1d8fc1dd276b9a604d4fbbca6fbb15162d2ec09a17467e5454a716c64e3accf8","impliedFormat":1},{"version":"3c1287b5d757ee81741828d97a28b0f25fc1b8e8262fddcf2e647b8656517879","signature":"6f636617e3c9fe4323e3854006c6c3d01d880d65f951490ba0a01bc521abd30a","impliedFormat":1},{"version":"587ab67e3b20355e08b28824ec70680816aecbbe44b238101b093f25fb3e6446","signature":"8fd06aca0aef6b307662586a44591b3672072d85765c7f21789c856dff3e01f5","impliedFormat":1},{"version":"ad8e371b12ef4d15de5025128cace7c610c67d059c8e1ac05b5d4abf7fb0985f","signature":"f0dace6e2a327ccc78b6e39809e3689449fa324233c3bbb71c1beaa33b70b80b","impliedFormat":1},{"version":"29ab6d4d940aa67837da835a55451ee0edb24d3a9932f6c93835be4f1da27871","signature":"584d1df6d3ce7081c9287a49b2306bb0d725d3886ff0fe257d4bde6cd6b9e6c8","impliedFormat":1},{"version":"9168e8639eba63a806de942915678df36928e73da9680681cdcb57341dcf7403","signature":"fca86a4c931a81470e424a67a43345eccd6c88a01a4b0e2abe7c51ab0f8d1671","impliedFormat":1},{"version":"0cc77f954066a7cdabc0ec5bd626b97732c8a0fa6593d749b5e1296e098f7b2b","signature":"6ecc1474630b48e8594329d26018c58c9d7d88307ab59323638f32df117a4213","impliedFormat":1},{"version":"82ec64549099a993eed62df27fd56122cd1e99f061b530bea61ded7f01081b31","signature":"0e4cef759d7ac8ce0f8e7771ef5a5e9b30bd38d2f43c3f63c2308c60028329b9","impliedFormat":1},{"version":"8ad244eb261b6d7820fdafb517899bf7623088b842e9661657a99ea9d3680c3e","signature":"b09770480dc7094c46daa3d44af6291f90c595b781894bf3ba7fe596c8787e9f","impliedFormat":1},{"version":"c0146e6f59d1156f543ece1f49bbc929884268b7a65872bb9a9f84881e1bdac3","signature":"12f8d4f27ee799ccf99ede024c87fa05a5082628e5eaca169ff8c3a4a410f76f","impliedFormat":1},{"version":"79296a51fdebb9cfe63296ace1d3ab915817d4833a5ec6e224afe6df9ebc1234","signature":"a824859468126eeefbc4df716a1b889f7221af8347c640bdc864cab776fc331f","impliedFormat":1},{"version":"fc6f268e706c6520be093fd6d7e4a4395a96b5dc723d6687c8686154f02595bb","signature":"82432f71846d3117b09e8c099578770069e9bf1f260e5f92760f5763886f7414","impliedFormat":1},{"version":"4048c71d4391a730b5b314540b709c04120ebda10b54937dbe48955f32df079a","signature":"3982eda40ca38668bd574c02244cca25bb8fcb221c290d68ad858cff64c140dc","impliedFormat":1},{"version":"21dd1e7413d098307757aa7a77bf4c2d8a12c32ad45b62168508e1aca9db37db","signature":"37079cff78fc2293e278480ad4825e14639754761f65f9041fa9f99d043a0882","impliedFormat":1},{"version":"fcce700ea57e0d5bd79dedb75050352e6ff1b00e9a77b58e9eb11450c5984146","signature":"501e498352b01df17994bcda386d0b2f30bff3ff0bfa61e180313178404154d8","impliedFormat":1},{"version":"135e216bbcafc10cab779ca6efb81b6e5e187c925107cf8720b7874e69848d12","signature":"15942eb3e543360c3893a898ff7b14a61773e31884e53b47ca6ffeaa4dfb92d5","impliedFormat":1},{"version":"05d1c20bd62d65c9d6fa9ee03fc55bc87123175327165b4c179cfa0a9f894f1a","signature":"24d77fb79a50a14d95b7670275714b1f08e2f60fac3bd62f8498ee224ce52359","impliedFormat":1},{"version":"96b418a8dcd6a5f181c90a435855eafe3e346d7ebd18b8d08149d9d0408caa82","signature":"d0b8f49339483e126e3d9c798e2afdbd2354633dea017d1da43ad71c504c3628","impliedFormat":1},{"version":"7ca87995ebcdcae79b4a44c6748c529676ef675ea2d08295e8ac0a4baab3114d","signature":"c4c425750af59623b74952845b8c0db9233b9b93c9b615b1e3171ab8918f9e86","impliedFormat":1},{"version":"6c6c6c25a40a9edcd06ae0cf8e47a14726dbc3c5ec51c41dddfe7d3728314012","signature":"f2ed2ad0d0ff2e8a3fb29206f0be5dd9efff09963993c710adb697dcb5f36784","impliedFormat":1},{"version":"b4d248ae51b961b7eccb9fe6e778a362b4d24e25927810015569904dfd4b7aa5","signature":"62ff2132c1ce292763711aaccfe181697472d740d964894593fc7ad63cabbfdd","impliedFormat":1},{"version":"193a73a85ca1462cadac967c1437adcb5f46a3a6983f02c395195a0225d70fc3","signature":"2222503093f109ae624013ba4e9b797bc14dbd45b5906110c8707301d6bebb78","impliedFormat":1},{"version":"dc5f6d50091bb91edac3653e3d014bf3180ca9bb0f9d825f154cc4adcc45e98a","signature":"e193b920407ceb7e84805f303d1c549ebfe17ccac06cc5514c08eb4cb9f9f973","impliedFormat":1},{"version":"5f3c7019b4085d32e728b5ffccffac2649d0981d5397b805b20764b9be7421fe","signature":"1f2494189707f9cd4a6415bae634addec32ace3f85248ed9c2181e4320b1bfe9","impliedFormat":1},{"version":"b9c7ef02600af260c049896a75c8874b784cc329bc2ea862e0fca8da5673fe02","signature":"d740fdfcdb66d397d63c4fedb43fe3e6f86c48265d7cf1af3b1884069bc66a7f","impliedFormat":1},{"version":"f8c9b57f19b804af82a7d547249b8327c16985937d8dc397b4a1821ae7a8d4c4","signature":"373b7bef7100cf91c9c7fc5ce639966c2d3521eb14b5f8de093b5ee18336e20c","impliedFormat":1},{"version":"79cc69bf5d4393b9ef182c820bbec978a600bee8a3895b0f6ad24c6fbb640d2e","signature":"5be7964616985eb2fbc5fed25cff4efcf6e4db543f1f04b5cc4157130e35655d","impliedFormat":1},{"version":"35913e9fddd12c64caaf385ee0bd092848b3a84830b5dbc1ec89d9ceb167c63a","signature":"e5ec01f2693782716c2835987f7c395eece28c293c2a550ef7315279a3d46052","impliedFormat":1},{"version":"b0af1e63fdb231853fbe60c91db7ac38070cf47d29d6819eb594f85703154a1d","signature":"6bf06478cdcff84587457c743fcd08b4ae6cf26099efa3c5276bdf579f86e457","impliedFormat":1},{"version":"f7a1d87a22c743d7c48530eb6b7e15df3f784216a2c2110946f66594c4152e1c","signature":"a78025cb0d48a4ec587bf1506c1d82742942dd387cdec46478dd53a1a2fe7a12","impliedFormat":1},{"version":"f21c2759505f454952a4767c6b499bc55e5a51019f86f2e1d3c2a54424c80dcb","signature":"0de3e4ff6b97e0f7bcdaa23e0dfc0b76acda06ff9fdd43b58c36f4e6790179c8","impliedFormat":1},{"version":"0bafece1fab1760043288797a5ff0bdc6920d8c7dd4fcd65ca89e20839a74f42","signature":"bc61305a755ba5d1b9d3498170e2c9b372c8e2c48817cb44f121a02d3c2e3a99","impliedFormat":1},{"version":"63ffbf7a82fce9265d53964526823beeafc3d3f295904326a1b1d08ee78c780d","signature":"0a50792bc31916ec3afbd4597831eb1729f2ced0c1e83dccd80f089f42635159","impliedFormat":1},{"version":"6ef4e66c471065de501876a15df554a353c7d2a2e29bae596effcef34bb6268f","signature":"0667d0a7a1d26e4041997eb09cfe459987c8f287adb98f265a9bd0712c2aa430","impliedFormat":1},{"version":"d25aa0408bfc2283dd347a2b21c023dfd4fab5ad4211d8282b66289c48e5659f","signature":"0dfa71c09681d8479c5b8f03dd87bae326dfc7c8d83629fdb3ed75d0126132a3","impliedFormat":1},{"version":"147003c63e378b1b90d5a86bad581b406461c20ddaac8a275687cc51aa229c14","signature":"d09f55e65775bbb95bca7f5746268373841c63be0c924d2a31f658da520b9bcd","impliedFormat":1},{"version":"e7e9bca42937c2ed79829cfd55f877d02d7c4a4bdd10b01532f1a5fb46f75bc5","signature":"01fdcc2c224c173e26341962cf9d1da54c22193d4326ea078c8d44314c3cf8ac","impliedFormat":1},{"version":"e50fac12c9fb04266c97ef8bcedd40cd9dc3882d5dd74686f0b4333463e4c005","signature":"121f82e40d6e11422cda0c41110df1fcfae68335b653445df13ab41cfb4c92ee","impliedFormat":1},{"version":"cbc88083ba8474618c0d80352fdfb44bbd300b441be8642095c117dd47ba9850","signature":"b12e9fdad2f1328b5e9dbdfe383b1ae6a176a2d9d0557d21482c1e1ee167dc91","impliedFormat":1},{"version":"7d8878a173c6c91564ba4dac3f4319d8bd2b7315d89ea6ee632693e5cb8eb507","signature":"e72424bbaada579d7d6cdc32eec021ca461d12f4833f54db2a11269dc0d206f1","impliedFormat":1},{"version":"bc0e2bf3325bff271ce0056cb3697a5e9f622f52d3a20d4c0df7f3fa31ee5bd0","signature":"c5d3dbcd5752f6b5f49043d65d5f7235acac392c076980165dc0655c6012b68b","impliedFormat":1},{"version":"092eab8f3c864d466d99f4193d9cbbd3a28c3dc0c64623749f6552cf6ce83181","signature":"02208c1e1b0e2aa8100c89791f6a0fe3d76b9c09626b6e10a9341ddba1a3174c","impliedFormat":1},{"version":"43ea4eebe7bc22e839f13937b0163e9aa29f40e08cac5b5052c866d30c154a1b","signature":"ab3b471658926ceb6c8e7a74abbc02990d4e449055a68f8007bf0b0094d587ab","impliedFormat":1},{"version":"14853365eda51457f31d69ebbf43e866e16ea5008622bb75602ae3f7569ee118","signature":"44a6f09639cd1f7932432a91d23f869a97e9091397a8c7645f5e0c4244a0cc33","impliedFormat":1},{"version":"ace1c7df44a7e6f7699418a70f097d676365f384a90fc994de11d8a2592f159d","signature":"66d83c84513d39a45a50be590187e2d14c8d9b4754ac06eef031b8cb3e5bd9df","impliedFormat":1},{"version":"1557812207c3064b96c4c65f4d2b58ca950817061a7b2f7f86612e38fd3681e9","signature":"f0ad639f0d84b6857c33c09cbdb34d600f47ddb28b670c6a45d03863f6424de0","impliedFormat":1},{"version":"10e595e28bfbe881207e072660d1bfc79519a87e28bfba84c58a83d379ca8db2","signature":"785da3bbb9f5fdea0dc38ea1d03a971866d7d37785efc9d123fba70165e1008e","impliedFormat":1},{"version":"8ca381bf2be28e52886b8b2b5ba0601b17e6aa6bcd1c58dc88146f1b1c169c01","signature":"537899ee2221679d05d68afb3e5186ce233bbed18614bba4d878bfeda9da585e","impliedFormat":1},{"version":"be1020f19a3f33eb907fc9e4aa9c27b57fd5673207c199f888e4bd9cd08bbcd9","signature":"10cca85d37e592401632b06d6d5c7555559ce8eb99326f95328e879a3a31f1e6","impliedFormat":1},{"version":"78e673a2bfc6b46ca1ef890fe42e5deecf19fab8a3b6ee9112f9e0edf194e4b3","signature":"c5914c0eb716b4670a77d01fdc3328258f32919df03c5648483e7e6e7572db0a","impliedFormat":1},{"version":"dc93f364fa675068a90ab27f78b797195e35419a3080b2beb623450542e64756","signature":"e6e2443c556b1ac0e8b71ebb7ffc1e07ca6a762f8f6c954994da84e34d27480d","impliedFormat":1},{"version":"5729ff56fc21b096c9dad20a9d8662cb12b39f34543be62dc0ff9e0bbe5f6e18","signature":"e32c4edf360a18e1cc6afa811f6913fdb6b1a26bbbcd212913f1bc0283144eb8","impliedFormat":1},{"version":"f4e8726b0747e624fb190a4cda22a8ffcfbcd72f6cfc325fb6922bced889c102","signature":"7b1d463789f1ad89923e8b9e11401b1567cb345e368423c476e1643ccac6a5fb","impliedFormat":1},{"version":"ae67586d01248ae32227be7a89ab0f7896d90d899dd24622454a7478d17c1d8f","signature":"d417aee133bbc19b0aecca2f3b294a6bd04d00becf706818e4a1973690301d6b","impliedFormat":1},{"version":"5283ac344af93fe8a392861dda226a9bedef086a51b4de6d44223abeb459d880","signature":"9e3ac192506a375ad84602c1a9d0bf81c9d34a7710962d7c4e317df7ec019c64","impliedFormat":1},{"version":"49a5fb25840c7fc59d28b00550ec545bf1a34a0611fc6328e762be396a952b8e","signature":"945ac767f2536b646a1c1203b35a721d1d626d0b8a4bf18d96331393e17f9d53","impliedFormat":1},{"version":"3f12f1e3971bf1945302773d205a9508c1ebbf157cf8cc40ba068a7d2f7948aa","signature":"904ace5de530eaee6482460de957634b4deaf1dde6182dbd642adc0fbf99d637","impliedFormat":1},{"version":"68c7052161144436757db31c0e9ef30240eff78a905c147e9277bbb208c9d5df","signature":"79ec0039dbac6a18e72d631b6418f28a68b52041128191c81afc31561e7a7936","impliedFormat":1},{"version":"4d2c8c12e17e01a5f1283543bbf088d5651d273d5ccd946fcc18c25f02dfb8b8","signature":"08522247ed8473ad28bdfb3e79758303cf25f791c8aa0e455aaaa30efe318458","impliedFormat":1},{"version":"2ab868bc23a4a0ef29a9a462960766148ac8dea4900f17c1cf2c3770221cea54","signature":"cc253013be133c517938ff44cb7e33db5d1a7ca7f527b173c7025b21fc70b85c","impliedFormat":1},{"version":"116eca2eb41292a7b150aa0aa64cb2b2ca2aadcf403d5f5b6739d1f852c1f0eb","signature":"f231674570c88f1c8f6cbb6579d633a0dc728d5d9c717f65d5e30cc98a43ab33","impliedFormat":1},{"version":"99757eacad7f7f90b5f1503d733d3d64555e0cffa1380e9b2925381bd39cfc0e","signature":"7cf3798305252c3881c0982d484e31508316f726fc6450247072c8c318aeefc8","impliedFormat":1},{"version":"430605cd22e9b3a55149da0f1f1955746268586e5526964258f6ead0e86c4cdb","signature":"e01ef383ed0cb1d7f26dfd629e90291254d0d0459834b7ff6eed6180459d8fa9","impliedFormat":1},{"version":"4d890c892117c7aadefd128aaeb14d00b99db35b7999eb7f082852b189baf419","signature":"27e469ef3b5215efbefbb9c2e3fcef80a75491358044c5a462c6b668a76b781f","impliedFormat":1},{"version":"76d324e571b784fc96838565b90bacc0aa83591c2cf56c6ab8a885a45542ede0","signature":"9c584120e79747a5c7ca4fd63005d498bd3990f3754456b765afb568be8aaea3","impliedFormat":1},{"version":"a2b52f4c12d8c5ed7f2f617af78853f4b2b4f51033061be96cc40b1a002c70ae","signature":"0258f9c9d545fc7876ef9e52e41d164112d647065547ddb1bb9511f37cbf2c47","impliedFormat":1},{"version":"4b9466638892bc1926080ef2a61fa77f918bec4caa4e015e41317a35973c788c","signature":"dbd574e671cffe123bba2708ff906bd7154cea31db3d940596dbe7734dfc3227","impliedFormat":1},{"version":"c2267ec195c1cfa817febba26ce4484cedfab4905711fe4c38d353a644477e56","signature":"57f097d533d543446f0fa234886d8dfed3d78fb72fd6e130d0e07a7e260002fa","impliedFormat":1},{"version":"5ade85b97d0a486d32c66f313cf0c7dd12fbd397ebc1e1028e3e731204bb8206","signature":"de672da2d9a887c1886d66e3c738a931c45b6b918e8a48b778517c95dc003746","impliedFormat":1},{"version":"a41e2851a31ac4b8e1972576f84c75748b90ce97f872fec8418ff369b9e14a3c","signature":"978f0c6d8be047be852db9b5c1d31e816ab1b49d269cdf50224959a4d50c8015","impliedFormat":1},{"version":"30761ff128bc7179fad7807c2e6a5116bd5ba266195960531e144f6928336b85","signature":"c28057a459aed5e837d0abd2fe8c03f44c07754d05a9eac4f698569673f6ff24","impliedFormat":1},{"version":"e22ef2fbc20a4d2ec139a47acc6e8132ec82b886ec9c8854cca350c7525da97a","signature":"529fb7cc75fbbdd353dc68a4bee78cad7ab43d058dd278d2fc38ab71740914db","impliedFormat":1},{"version":"b36bde4b7fcb86b67c8d4dcc5950e3ad0776c0d4165b508bcf68fdd751892e77","signature":"4c80b6c7f905e22a68e4110618dcbe19c63774a4e574d01d5cca5636c7dceb64","impliedFormat":1},{"version":"a5a8266c2268e8eb64cf53e5dfb7a5fa978c7b9e418d261703d71663d85c8a09","signature":"88c5368e3124879d7b43d37ce765d474d255ac3580bece203b61319cf5ba7139","impliedFormat":1},{"version":"bea41540f72b23f719a1f60097f9d355642e7e196c0bb485aae3f2ee4a7b34f0","signature":"03ae76288047e6e383bfa6c31a2ce767363136487ad2498f80d450291f00de0b","impliedFormat":1},{"version":"2483f959ae89a2e788d4ce50dd98d93bcfe264474d46fe57092fe33ff824d121","signature":"9da08cd09a194da56fe6eeed09a7f3afdb00ce75edbd83ecbc9fc0b368a57e86","impliedFormat":1},{"version":"bea2db94931a65582ed04aa96089506b86eb90caabe90980ee368d35273874e4","signature":"897da83a053cab5bca39d009e392412958b6d7004b0e3df1f6dec8fb0a1696f8","impliedFormat":1},{"version":"5edfda1c2e95246a14cde3d79160d32875371a676b0c0f7bc4659bfcfafd45ce","signature":"bf35a255a7f61c838995da4f5a68f5476d6f2214cb764b6bab7b3c28c7b3eacd","impliedFormat":1},{"version":"e6d1ecd5a45a34823ff1eaf5b618c16f73cfa6122f78db50cc76cb55942c2a44","signature":"25e98ba135c93920983b0d4781a70628d5d8f87c6c33a6a7e0f07b16feea6f11","impliedFormat":1},{"version":"6fb48ccbe71dc7079889c0367a412fc4926855bbcb2366753a084e3bc9f36b22","signature":"85222c4b940610751aa92ae7bb370d4963cce8b2b46b2e2bfc2afeaee283e592","impliedFormat":1},{"version":"655ddbf240c8f015cfb9cb7ee98cb7b0df6a06bdde4bb6b01656b14372144d10","signature":"6857b56acef5eb88ddd6cdc100affed63da6813015f52241f9d1521de35c7983","impliedFormat":1},{"version":"11c41218414872ea05b02ca911319dcbff72ac2ca23ab066c4abf5c47fc9aa8c","signature":"fbf289ad33ef0446fa85d1040e4cfb5e5feb63a57ddb5157284feed05690270e","impliedFormat":1},{"version":"9bd38baf7aa95bb59d691f92b4a84f276ac19f7c088e1297a9a39ccb598b2ce8","signature":"cb42bf75849e6ee8a381a1615a343e5da8cd89d04d3d63f416f146dc1ceb12e7","impliedFormat":1},{"version":"43a8b19b0bbfa96eddd5b775cdd204183f8d93c3fd4cb7edb48dde7cfb9ca23e","signature":"d5281ccf01fd530779664e072d2062d053b20ccdbe305ee55e26c2cc76b9a3db","impliedFormat":1},{"version":"e773a08a8f466a2a5c15f0f283a0eec0f1965376008769a0aa4c28757d7da498","signature":"6729ebba69313ff2a1257df25a2a3f1d24f5ddc4910b512878fc6dcbc4cc5f11","impliedFormat":1},{"version":"428a9c1266ce3146c5b5c7e0e21ce67910d63579d7a3867947bc204f537c41f3","signature":"a3b4525f9675e3f84844416227fbaed2a76a08a9726774781124c0483d317d3b","impliedFormat":1},{"version":"3891d243ba2b7bd8676c253cd3af58c33b0bdd6b991abc47a853cda6fe38a515","signature":"a322b726f5549c4036a8b447bb8a90a5f42f88050cfc769a532e8dd02580a0ee","impliedFormat":1},{"version":"52c6f968573ec325962d5a17ac457a0bab00209ed3b7fb815ae9013421ff6f48","signature":"743511999e587f68128b1fb810f19087246684e3e792e5b64e715412a16b9659","impliedFormat":1},{"version":"02991005b49c7dff4cd88784d0f90f5d4024c9294c1d7ae1c2e008eaf81b9402","signature":"73ca1b7b4674c45412a3a6cc9f419e22725ee08a51a1941604d3efda3214982f","impliedFormat":1},{"version":"64aaf4953e9f82fb5de879f4eb12ba2c2e94c368c7757467e218a8841828ceb9","signature":"5cdad1e1c61b68cb0a0da51b3127982e90cace938e7f72ffb7ff6cafde29d7f4","impliedFormat":1},{"version":"090922f43979f382a4ae559accc655ce34f6dcda9de0d637129ed5d54ead136d","signature":"ad5627e1d5956e0ff65766a6bf564cb0f28f6ea88efbbfc8a4a60adfe5462259","impliedFormat":1},{"version":"8ab0a35f7677ea283871c7357e44d1a51631c95f40226c6c09b43704a3b74667","signature":"fde97a52ce90249c6beb3aa7f7ac67a2f2749274c8e48b07bc74b0c7beb5c28f","impliedFormat":1},{"version":"dd99eec1c0e8f012cca1e7b31787cf2ee1ff890e22ecf15a542656ef5ad955c1","signature":"1da68d6a7ca3a6e8565dde6a2734e73197af2cd3546140007f633b6cfc373ad5","impliedFormat":1},{"version":"1217b6b35164cd4402c3c0b905e4a4066620c171534fc1856b10bf808ee0493c","signature":"cb17d4d5f90e226fe12da5e38e4b27ec91c268ced42a9f35be4da6dd30970970","impliedFormat":1},{"version":"8e0bd43109d8558a4ac1a4d71ae711c0728dc9e7f04a48931a16a827dfc145d3","signature":"562df07055d4857cc38d2db9ef6feec97bfef035a2762256a25f9c154b96a71a","impliedFormat":1},{"version":"844d40db1511b55f10c7e727f79088638387d45fc111a54437debbb4277f1e22","signature":"0e44fdb69a979309b0251658d9ead9cf273cf41672bb058c6f974dad361d1d0c","impliedFormat":1},{"version":"9870578324960346b725de652cb431d6fa76aedf3e21001e9c8415fdb45dafd8","signature":"83f21dbf6f8a4e3faab4a7a7bfad0d9cfb48e731fb603abbed6ca19becdbf08f","impliedFormat":1},{"version":"89d22272404cf33c682406b108f6218825a5d86334f60f63fd6ddf297763f6df","signature":"d00c7511bae7ef49f3dadb59a0fb4948f46cff0474960a87f4f2baa617e43619","impliedFormat":1},{"version":"f8abc32a1c56aca4f8f49bba6fcb4879054780560bcc6a068629e871750b9888","signature":"56151fcbcac84d143dc12c28b0453632e31b5c2f059344e99234063591603b2b","impliedFormat":1},{"version":"eed91e6b6b8f2b956903b6e1dd06b3ce8858345b7026c0eb1ee83f4c26b36d96","signature":"3588d65993414dbd8004454d4f2bd6efd291ea59200a4b0d36fc33140761d37d","impliedFormat":1},{"version":"85378777d409619abb9fbdc90c2a8a82b78b6cf07174ce3fa6fbc6173a5b5332","signature":"11bd59ba6f5d067970bd72f72116f884fe73cd7c138f1eb687a5d921233c63be","impliedFormat":1},{"version":"a79238886fef02831367a968ab440adfa97e50f55ccedd9b6505bfffb367007d","signature":"f81a796f0154b17216743f27ad2dfee85368d9f894aaaa3fe08dc4a09cf4b317","impliedFormat":1},{"version":"ac68bca6eef0e9aaf5b9ea474b21946b543eed64db5945016dd81adf6e684b49","signature":"4e84ae5ad231c83c86524e784415559dcf340db83d45a0ff90ebc5833a6ed2af","impliedFormat":1},{"version":"1e2c6d2ec9bbc85112d1fe3fc404b3d36a465b700093d49177c129cb34b2bfab","signature":"b043b26397d1174c0a0c0a921375d47f5fd0481b7a15a73d84582c8fa7eaa997","impliedFormat":1},{"version":"489c6dbebe58ab6a3eb4c6f17431c6795e97f168770dd5f6cb6657a0cedfd8cc","signature":"e3289d7e08808d0e1ce062224dfeb781e5e708c0abfbf562be959b36a523f773","impliedFormat":1},{"version":"03e6bb85e815b086205afe2320efb1bef0ea479263940477857b1b7dfdd42669","signature":"0e40e25d6c8abda2e01d008717529750adcad32d4ab050b2f784209e0d46b77e","impliedFormat":1},{"version":"fcf0f39a212f5e871f7784288a34eed2517d355ec4f45f50ba24b05b0cb72610","signature":"e8ede9480c347b16ad36c0dbbf984361612112f116eb6fc6a6968488824ffcbf","impliedFormat":1},{"version":"d1da51aba1735d8757ad690f6fb2e99ad761c6a78f8b681ff33b076a1a4e3364","signature":"7b3c82aa1a8e42028062b47d00311d7f644793ffdcaea6ff5f0129526a396a07","impliedFormat":1},{"version":"7941bb8fb34a84aa5be8a4113be234d611e75eea944a8cfa7792e7c274edc4d1","signature":"a2b6a186b267eb997663842243aef9b32851bd0ea058a918a7e6365523565cc8","impliedFormat":1},{"version":"ed9d2d0c51185fc4a731485bbecd4a32f91061a67c1f7df9d60d8d2860a58da4","signature":"c5f0439b79524b4d1f0e48e05022333746f8ab86f35faebcf3bcb8e174ba4321","impliedFormat":1},{"version":"c693a436606b1da2dd1ab225590d290b6bf802b448fdfd1d49df6f4f847b1a62","signature":"1fc937ef9f1d344db26a7859ee45963f005b0ccf82c159d4bcf7c4006d499514","impliedFormat":1},{"version":"055ae10f3fbb58d246eba9fe3e5f7522c7d2fb05ffb0fdc29e39ab44312a8030","signature":"b90bf724fd749e145eb1a3cd4d827d9765ff5e27d85314fc9e1dd6c113f4fdcc","impliedFormat":1},{"version":"2bdb1504ec9819184dc88be03dada8dceaa86d582fc9bbfa99884444ae6ac56e","signature":"6defb13f4f70d5c656cbdea50eb7a27244eed74d49550adec04255dd3f126a6c","impliedFormat":1},{"version":"1eea2f2ee131e04800015a36122370a3f26cc0cdc2981fd0f48bff938518429d","signature":"e87ac0f83537ef2504e602f9a2f4ba53db120cab73d5b7ab773829816e81a9aa","impliedFormat":1},{"version":"e04c5d842f59c6b7a1ffccbcb309f8401741734f9b7924515d234718510ed039","signature":"5edfc8988b5f5c640502a1ea0f3b457ba64cfc7755029bc6d085104de30a8083","impliedFormat":1},{"version":"f2be667b239ad30d085d0abab6d0de12f7a30a240a17164fffb2ed440808aeae","signature":"47d7f4ef8400ef18c92a769e142730e10b2ff933a187fb25f95ee5b15dd8fe5f","impliedFormat":1},{"version":"89dd073b62d8cadbe854bb05ff520e2fce84471e74286ba8ef780d08a2f1c5f1","signature":"f7c19f306d152290868f502bf45d36ecf5ffe4c6b386b375edab81858021c25c","impliedFormat":1},{"version":"aabd46f6d23557897f1f1512e9730a03b84092fdc3a66123ffc45920b821dcfd","signature":"14f517a8ec32de71eee86e6177d297640bb998a80dc42e37ec37915eb0beb02e","impliedFormat":1},{"version":"c25dbb0c8cf256c4ba418e385c67780fca4fa5106f2206f94f89201c72ae789c","signature":"b96641fcf01bfb1586936b9cf703995eba8ed263febde9aee2ae3fe3d896fd78","impliedFormat":1},{"version":"971f519a550a769603cca5b37ac9126ca871b6b0df6f83e51c2855878fb0707a","signature":"3a54da7091dbcd5832335c38095d48f67183fc5376ea69021529ec70a6ce181e","impliedFormat":1},{"version":"2927b777fd0dabd29258d354eda21a75a526ef86da95fc75fa3b3c993d4be5df","signature":"1dd62d9f63286cb3e24e1147dd2c7b1c39592c51166ef85fb0b395b99aa4ec30","impliedFormat":1},{"version":"dc7bc3577f88ae383662dfff96bae43a32461e6a6a91e6d370135911fecf57ad","signature":"93fdc51457445933905e56106ff88397d3d24dc5f6de678f69872664077afc55","impliedFormat":1},{"version":"6fb5253211e33fd4556fe0b0ea17e578a7d9e4c45147fd56fab0546ca1fc57f9","signature":"d0c4adbaecf3f0f2875ce5edeb50522526061a0baeda3a0dfa30a5f220632c0d","impliedFormat":1},{"version":"eaaff4c0277027533a0ea9da09b78e8ec44e60a4550db9cf6530c96f706d900c","signature":"c64eb4db183bafc9013d672e5b9065643760a4280f621f87cb98ef7e81568bd9","impliedFormat":1},{"version":"b03e6f6800d9fcc010ab2180296894c7c80f4894f089e8718e0a4c9c9f20ad7b","signature":"20ee025fb2e226c6c9ffb84e45dc6af95722dfef34a0d52b25e37beb51e9d84f","impliedFormat":1},{"version":"afd7a1203c5e333d4ee51b9935374e63e74aa931b7978a1df01441aa1c2fab97","signature":"35d8912b08e65748dff3356a925f9faba3492a4fb0cb3cdcd094c0224c02e849","impliedFormat":1},{"version":"6bcffdf2d22aae62fc70fc916921c9fcbbf6426dfa7410fcaba63bfb2d690027","signature":"20980e813773467756de4b5388d04feb5c6a7371fe46de7fa35e6a892876048d","impliedFormat":1},{"version":"47d41b7d0c62a649c1bcae094bc812acfa026d84bca26f5caff6d4581dbfb043","signature":"66aadfd91048c22a2cf771418c53a9ffb5460d459e303e32bb110590901fe59d","impliedFormat":1},{"version":"f5211eb2ecccdb8bd410b830d75b0f8a0f86643cd6cac22556c8b592116b8176","signature":"36369361d46a8e5b9950f6a712a6206842eb469e9daaa242c9209ee2b4ba9826","impliedFormat":1},{"version":"d6b02f8284e0ec3209bc301bd392d523c703573f898563954defa141d1dc8d7b","signature":"002e6731e3d00996e32f2941e11defe790f4aa965dec45e24a9499f86cdafe45","impliedFormat":1},{"version":"5f286a4c94dcf27832b98cf19f392fbeccb71aa6b47065495f26adb8cdf2bf41","signature":"5223ccc535d1baf5752ec08b3ff9a6c83e56aff482ec04c8bea1b1b191a6af15","impliedFormat":1},{"version":"27cf6cf4cb39b252285a7c20bf1c308e9391a0a4a8c35ebbf0ba83af31fdc2fd","signature":"0b3a3a3b336e0a57348421b81eaa72325e5feb818cea9c70ea076ae3d45d8e2b","impliedFormat":1},{"version":"10020808ae71656691fbe294437811cd6dd04a709d44c2524377ce95b7e6f04a","signature":"e8bb31145c46f03c17ae8971364c19c5c5aa98f5553771e3d7c99694f34ec892","impliedFormat":1},{"version":"2bdd9f3bec00cf97672a9215e892ecafeaea9ea003c0fcd11967cb4088755f3a","signature":"a7791406c36a1c231c1ac2a4219fb3f82ea09b301d8f4dcc0848d7ca617ec836","impliedFormat":1},{"version":"3013ff69b55e0e6dd2e60f0738f42563b6be333736dc73f7320907f019d2bc76","signature":"c680b837d907ca7d813d072bdc2e93b516e31ab5664b9919a92735f6a2e69ba8","impliedFormat":1},{"version":"d3f2a7970182769ab205b4dc35728345267bc6963b15c6ad1ae49d25f97b7d78","signature":"a419d3a6a31d248a623704f53c0a4cba866544a088feac2c331adf19f0210392","impliedFormat":1},{"version":"203e1eef3856ce7a2931c5069eb4bd53dcb463d75b737477125edb95f5bc2919","signature":"5f6ff9f900ef204a4e09faacb7e88ac781e5bd5c3bfb0888ebae405e18d04530","impliedFormat":1},{"version":"65bc8138b7f6bfec4f55dba45e1456fbcbd757aa7e1d2cd47ae8b173ca38d6f5","signature":"028d236c734120afe22e09756a056843a37e18169fe3666baf1dfcfa7b303ab2","impliedFormat":1},{"version":"7cd8ae4c88608c0b6037a176be8ce0b372b14dbe00d476e21ba61de3bf393260","signature":"81e3a5ad76b503cd89039aec480b51596dc7a204721f27704645aefcd6fbc110","impliedFormat":1},{"version":"ffb8253752656b5d8fd8064088192973aca076684f753ea5d17b2cd8db8ada04","signature":"c3c4b5d1eec2fac09146cc914a3885280c3b14b2edbf831b492b5e38beb69b8d","impliedFormat":1},{"version":"7c11abf1320cd7f362bfaa658322a459b781879475a73aed4f11011937f3a8ac","signature":"62efb8290ceb000f75e076051ad7cb058fd054560c54a1885591c61191201b3b","impliedFormat":1},{"version":"a1ca0a083cfb954db8ff969b123dd3cb9c4e3e42accd132c1e008599d0e1c805","signature":"2210f2c7b011a840a24d350b879ea26bff496108ee9d3cc4ba2b86310e367767","impliedFormat":1},{"version":"973e98cc76edcd753db085910eb281dde979b3cec3b01dcdad27a4edb0576e7e","signature":"64646eb527c737e9ac946182ea62df08323b9899781b55fe5706c1a87420452c","impliedFormat":1},{"version":"9e894ce6525ac98919229daebf8b7f5edd592635300876511e309cf4a28cfa8e","signature":"fee581273c2e52a210befe3afb814c6fd035c1c189c6f3ec40ffe9606881917d","impliedFormat":1},{"version":"97363681ac12ec522a3ba61103de29146c3c82d85b66900035cadc8d3bd26819","signature":"b924ab2b45a8baf4a4b2320ce3e2b7a4464087f655afd88abd35968db359a1e1","impliedFormat":1},{"version":"ac73458d4472a9126c2a0a3ad2f1a905b6361720ead3a2619399e545a42a7924","signature":"00d2ab127379e0a204e1c32eb3db0f5f3fee7cf25d3d3c399beb6c2e6637906a","impliedFormat":1},{"version":"29760b77301c58e7c8e0e99ac0dd829981b7434847444123d15b945382b7a2cd","signature":"3c4241c06a1d297e3fff7fea093e2f7b893588141d41d1ddbce2250e57a69e8e","impliedFormat":1},{"version":"3b3fafd98cca58d3d050db0c0484580a80884ad4ba30a0e178d33172d7dea72c","signature":"990d55b724dae1681545e99a6b7ddd8ea8eb6820276accc26bfb6e36497a3a05","impliedFormat":1},{"version":"92584056b5b988c70f58e4035d07f2971cf9fc6c46ca433decdf8a6f635faeda","signature":"91f115ffa5b732524635f9084e0688ef66722cb56bf34b3353c0b666f219f020","impliedFormat":1},{"version":"0f349c1dd3c17111dd26a775eca74c9fb12b91c2feb351ea917f968a4f771aa7","signature":"8cc0dfad62ad4e9bbff1b3133a325789198e496ef051e85cba33924692a55496","impliedFormat":1},{"version":"4ceb18eacc5c8ecde2f391e108d7ced3076f6a26a2393af4780eb47831414686","signature":"e6c0f1a2a0df7a308439b9ebdc1223f1967acd996fbe646b8eb6673a2c0363f2","impliedFormat":1},{"version":"9b6d66aee8da5956e1f4d36a0271fe92ff0832fc3447e0a269d60680f215c186","signature":"678ec9ae7e3dddd5973ef02e5ba83aa40608df05729b130c8d438d2c072978ca","impliedFormat":1},{"version":"0dcece4247203616cfc15155d05ba83e39af7afd287fef9e98aeff5e78467cc3","signature":"2b8c442742084fd5ce813f9dd9373c599d886f75223da242d1dee4747ab4f63b","impliedFormat":1},{"version":"d041498b05663de1d0c934c3361ec659d9fba9f32dabf0034f8247e54f90ecde","signature":"7144bb2e8fc0cb9ddcab2e6d49ca59a5a9f1d4319153e84bc3c0bc0d78df9b49","impliedFormat":1},{"version":"ce7434a8d8d1fc8d7d2856c7bcccf3b861ad77708937459c4945faddd1fd82cf","signature":"98e1280eba2a3fcc540ce5d0b6d8e04892286c5be1220abab485ddb6fd380173","impliedFormat":1},{"version":"ef968045cae02fa795d5aae95609b9023f4338f73c0988802ecb7ec4c49421bf","signature":"6b9f1fad8361faa149313c1096bb153fb6f9a6020423ae50688b064b0abaafcb","impliedFormat":1},{"version":"adbeacb464778caba9138f764017056f8b2e52e5467a4d143603dc18a2b2d5fd","signature":"71d97cbc8063ac5dd8cd87a2ee704d3faf16707e442c87688d507c01c4d817fe","impliedFormat":1},{"version":"ceb88c88e24b8eeeb79eef3e9c6189574d9d4ca3c8b5ab2860817d749c35f289","signature":"bda6a239299293984dc2c627c46448a10ff20725f2fb8fd5a3b4a05c956632ed","impliedFormat":1},{"version":"5041aa39f59febaee0cc1350d32bfdd59a180de332970826a9ac97f806f05827","signature":"7f7483089b230f49722a00a36c529186d949a3e4d229167f9f0cae0dddb7204e","impliedFormat":1},{"version":"1f835a5cad3961ddb1c0cad1fd6a44187022debad61de1570a6b1158cb02113c","signature":"6d8ccf3bf2e7401d84a690ae7233af17b8169462314a25da0b0ad133123ef42d","impliedFormat":1},{"version":"cf4c02174f143d57819a9ffe554933b379b7ee62377b55ccf0882cc9900c99d3","signature":"2f134267f0cfa2552b2cc7aa5506a04b0a3372e017d9e20b6a57ff1fb29ec1c0","impliedFormat":1},{"version":"84009868ebdf5acd475d720c15b3312a75d9f6d345428d640d78f1e1d2465f9b","signature":"581b3fa381afe3d2d8662b0af9cd59a134d1b8d042dcaaa0d095b222bcce588b","impliedFormat":1},{"version":"604e2df29bf0e128b665cdfe6262f99724c6aa578d16882e1f81f2193e614783","signature":"e93835da0846353bc1c728a9ddaff86288eb92f6cf0f92a80e69afb0b050e7f3","impliedFormat":1},{"version":"d3197ba087c37eb94b9c1d28dd240cc6c2ef5cb721875d18ed638829c9236f5e","signature":"cb55c8bdc7330668b4aeb68e76e25bcc6402cff6adf8973431fad78b0c82f1cd","impliedFormat":1},{"version":"d9b9a8bb042762ea685e99ed6660a61914395f45a361f1a60b780e2790d060b3","signature":"8ebe3a55813df7ce8f649f052f35b5be651491ee1f5aa3eaaf894d08dae0d4bf","impliedFormat":1},{"version":"1159409dd22f2afc67073ed1c2547911513901e4e35f07f9e9e6768ed816b046","signature":"90ef037905d71d97646b64f49adf693b5e5ef496638c29a6682ce56a2c971b4c","impliedFormat":1},{"version":"affaf216413f722c37f6dc158e4ca7932c449d4ae9db56fdd5bb72559dba2641","signature":"503998c644eb63aca776eb818fafa0f43cb4835fefcd0dfc6d85929bdb736219","impliedFormat":1},{"version":"241c2ce60d7d881664f5788f3d8b75623b30a9883b487642c860cabd4264c69a","signature":"35d7392a41f936915d18e2c106ba1862cd8944af383359a5c12e687e3c7e337b","impliedFormat":1},{"version":"971e94292dead7db77442a4804815a8292d596360fb08726ffec76d119afcc79","signature":"7d877746831984008c8a002a5ed9c22a079c5c0977b6394c3df05b9be66abd2b","impliedFormat":1},{"version":"c382dc7d2d60be7053d03ccaf04c47ca16c1fdecec2bf103fe328451b874b7b2","signature":"2bf0b64ed488715b31b701fdf04547122953ffa88de87a629a6646e623a5dd76","impliedFormat":1},{"version":"701cfda6ae296b813722f73f95a2d0460ed821b988a09e3017572d5d5e1f7c52","signature":"503713653e717ba1af59fbabf4b288132c0bdb1eff5f42878e0eaf1699f103fa","impliedFormat":1},{"version":"3612fd003d8db874b06e47db7629955d088f8854324c01e17a5c046e276846aa","signature":"6f60b3d54d3dbd0f119ca326c795637829e268070cc21a06ee97b10e2842f94e","impliedFormat":1},{"version":"c157db140d3f890b4c29c5f87b96965db192fbdfa457238967796af16f3a527a","signature":"e746dff9982dfaae6ced2ba76d6d27ec483ff76a8ada860268d32ff90223a92a","impliedFormat":1},{"version":"dff459e34d8135b8ef449f380e8af651cfe159dd0b08ade167e1a29f1871bbd0","signature":"d87de487ef482ca390cd410491af90aa108e7ba53aee86a0759cfba40e17c803","impliedFormat":1},{"version":"0b0db8b7e379a32f6b8209a1c0160a2121b0643dfdb939846a563c833e3536ae","signature":"0b20f79dc496e7d8d8d27b6e65f5d2a679b0522e87b7c7ee857364ecc4d2c0a0","impliedFormat":1},{"version":"f0884481b8ef82013e90fa8fb3091dcc85d288bacdef8ced862926ec1f798863","signature":"3880b15e7443b85634c0122724f96822db6bee55d18debcb66bd6f7431048bea","impliedFormat":1},{"version":"65cdab1419b2bc76e998120675cce39bd5030719aa31edc5fef0409192da8467","signature":"2994fb8ca6ca27125fe962010b9d385b83920614c036530349f16865f1d97aa2","impliedFormat":1},{"version":"be9465efbc9afd0804c11b739c59f96e981197fa9291cb1018f4f69995dedeb8","signature":"9d5962d976e2abaa6e45f549ae2261fb22c9f9f11900ca5d79e2c8c0b9a1eb87","impliedFormat":1},{"version":"2eeb5ff592e454322ea2136410659c02250fa625c424107c683426b58687b9bd","signature":"193b924fa1b5f872391a17b7cb616b9618abb869ded362740216b3cfcd418bcd","impliedFormat":1},{"version":"7435d4afaed3431ae198c329cb48cc915d315aab6c773c269994ffee024b7c46","signature":"564e025b34741bc86b9e8ee8fa634dc217179c40bc301cc8e25b4eba9869f137","impliedFormat":1},{"version":"6b7626146e88fb6569d5264c25a5cb72af23935ed91aa88d68f53967f0b2f689","signature":"5279b1a9a71f9a668212bd647931ed312e3a395972ea41ad99a8aff33561243d","impliedFormat":1},{"version":"c1e5fc6befb6acf6bc11a870a13d85e2599957350ccec43130dc0ea11bef7117","signature":"d9bc1b92b6fa17905c02886ef4ffd8ad91edf1a6a22e57999b5eb726379805ae","impliedFormat":1},{"version":"025573c67681613d3c30f303ed94823f4b49c7e37bfceddb255b05f793525c94","signature":"6754c6cba5a787746106f147123326a772a34afeb97e87094b2c8bc3d187c8e9","impliedFormat":1},{"version":"ee359fd957d5a1cf643cb4901c2a5a5344cea1e88861480f0727698e46adad46","signature":"81831c8ddc4212acb6bed3067724714a8b38b0457ee2b40809f171d31f948fd6","impliedFormat":1},{"version":"f0d0397f35a4f9b80b500932c02642590a5be6de03a8c97b8c80af1034e223a5","signature":"c1bcc31fc049258e81eef1238a7f37fe58c2539b1a6e8b979ea640ec055d9836","impliedFormat":1},{"version":"cab8034d99c1d70b31b5a54b011f02ec7acfd8769a23173dbd3c9104d0681041","signature":"018c780ccc75f5e7b37b59045917d13da514f78e2c9b3f94a193a01fda8b0456","impliedFormat":1},{"version":"33b9cc64b527b482a83fdc3db0c28c338d435be90f3e38e4e60e9082c722dbe4","signature":"3d30826ea87eaf18939de2a9b3a1b7cf27530f7df081f3d6dd2ffb7bab6294ff","impliedFormat":1},{"version":"5b81841e29eb7d83c5f94d1999c42bd374fe4dafb46c3b5a293f0078a7292ea0","signature":"5d2aa65ee7dda57d3ce8b4faac6081a3b350ab3effd6c95d59dadd9596b54a7c","impliedFormat":1},{"version":"16eb724c8755d806af332ed87c5e59422010190f7670b41b179fe877465add34","signature":"0c272d061b8881c646f520c318d2ab3197370dc4077c6b145c1278e30b52d1c1","impliedFormat":1},{"version":"d72ab793d7fe6a523bd5898a0f1618bea0d941f1a07b4f1ccebe33da7a84d181","signature":"2b323ce8c31bd76e1d38fd495e4826b5e4cb954c5957e9217194c96db156cd9e","impliedFormat":1},{"version":"6cef70cab277c6a800ad95c577bf0415c9b4960878899bacdcd2767beee1626f","signature":"abc8d4a0a08b93c6bc67a5867f7a738b47b79c93e5f0cf63b422cac3fba94875","impliedFormat":1},{"version":"a0ed9c4a7e8bff327b7c3e453fd9bca1feef8b511ce2c1327508cb8f23173524","signature":"3074b9c86cac778263aacaff9aaf42a21d2f103ef9742b37247f3de9070e8995","impliedFormat":1},{"version":"8f78059349adcaffb3302a19c51790222d8e9452209074b41f7726c885a24d70","signature":"7db840502a9cf7bd0ff12f066f9ece476dfa35e51d3fce1925f0f27f2d21b9da","impliedFormat":1},{"version":"50da2c1e2bb9f80ae4c4838cea5544303dcfd09858dafa5fbec911e9c0c40a50","signature":"e5b04f13a638a9fde6e22d9851beb41f2cfb542d104b1ce6e8bf26c101bf0759","impliedFormat":1},{"version":"bcd637b32d8fdf74eb7074753aa77a14c6a6ed4252da5f50eb12f0764ce56656","signature":"769be4381aa79dbeff843189d4109cb58c84ca0b529586e90df7337b23276adf","impliedFormat":1},{"version":"25e15402719d1b2fcf77cc955229b2cc45e90925874a1ac8fbdaea56de8b3c04","signature":"363ab355e50a5b814e5692d50da5289ea1f0dd08a05c3381be57101fc2bf1c1d","impliedFormat":1},{"version":"b643454cfc9a381c7d32363c29d382c2aec54a7be0907fa7e2e17a4e15da1f3d","signature":"d1dc7719852df18b4c42675e358012a5cb27377efb8d5da0db863821272bf9f0","impliedFormat":1},{"version":"460707fb890a9f0b105fa7712758dd76770f3c4b9571b0c01a5a26dde4e748d8","signature":"b78d89608e0cb8fe679caf16e6b8c6bbf0a1bcdebcda46b95949dd7fb136e8a7","impliedFormat":1},{"version":"e9fb006ac85742fd2fe5c1d87b207fd39e7822751d0417c5f328742c0976d9f8","signature":"01251f6b79177a6e5e7dd101be23d5a6c340d2687a08df03abddd719ad100937","impliedFormat":1},{"version":"e8173f95bf5dc1bd3714cd6f1ffd4de31cc72bafebecb08283e2f7bee98b4e66","signature":"2768fb98fa4250c313b44216283ef02848ada7006ea540fb246512e315f347fa","impliedFormat":1},{"version":"2dcc0e82b24b1fb4b154ed47f84d95ec61cf988804567a26d5a30fee42bebcb0","signature":"73a616cf3c7ab2f60c75f1a5363cc14ef9217cf93a741d5b129661f124d23263","impliedFormat":1},{"version":"dd705ce8504584ff07dfefa7faacefe89673cb99b54401d937f68d9e3958b54d","signature":"f1dd068566a46abf40766f692f4dcf8c833bc4158e70f620273565268354d562","impliedFormat":1},{"version":"75c77431c6467fe6ac78821a1c7cf9ac9b3b95946ad61aaf1959fc1dd0ff48b0","signature":"667171066db80106b9af7758db47c7211ead46461295a4fef084bc5a3dd18b8d","impliedFormat":1},{"version":"cb6ae3ed2eed430d661af43e8ac033e617d3cab9d3620eb4ffb8ff7664c1211d","signature":"ff0745d45a24faf60b69a3a4f1253f137aa9921ebd7f102c826a4546b8969e58","impliedFormat":1},{"version":"642d72fb2184c98c3e60312e1ae45ddb9e67e0c96a1b9750cae9d5506c718005","signature":"543878cc80f33464e7c6ce1257b372e03b859005b8374204fba3fa917b965f27","impliedFormat":1},{"version":"fd8e61dcd7f890a3ce6bc1300c0e45ca3c70b69d37af7c83bd2a1a5baa7305de","signature":"46a3061a1b4a2126923ee3aebc6fd5d0fb54e0b5f9866efd9011996bfacd8bc2","impliedFormat":1},{"version":"c5a4700b5bab2f7ae53c0fad27810a81f1a78a20ab47222dc96735c57e1022c5","signature":"2f5a1faf36e23666a5d2a98c25fbec8be61cd6bbed973b47e00dec11dcfb12a6","impliedFormat":1},{"version":"8f9c8ca395f649597c77faf17bfa58862d90f1038402449c5e6cc98b4ebfa803","signature":"baffa33b49765b6ded8d2c538bb231221c778ffcde83b3bc03c66e7f96ecda4a","impliedFormat":1},{"version":"6e71f518d7d37cb8784a3f5f83d54dd6930d493e7572a9edad41ebe879d9c0fc","signature":"f51f0f45e26aaea743b02a1a5865ad3e32a59c2abd1dcf2e4cf23ea9528f5882","impliedFormat":1},{"version":"b0fbc71676b2714631a5a907785f9b5e187058a51a0683f89146a57c5e6fe3f6","signature":"51beda85537d4475207777a51848a436925affb97fc43618e1cdfb1491cdebe5","impliedFormat":1},{"version":"69eeddf4d77b0ca315a2481951336483c05703404cc6880fb7896dfbc3963d85","signature":"f0cf6ee22b8d2a2364ce6574961e010ecce6fa9920baf11646b670a365bbe11e","impliedFormat":1},{"version":"09c04f5b139726fea9ba8ec382cf4e57ae67af7807c9489c749c46d0145756cd","signature":"0d281b248b75a3a09dc2b61a8355ce8f7547474766d9cde7d67e73fc1d21616f","impliedFormat":1},{"version":"14c39dd63ad9fe4dcfa0313ffe8a48c558b10f6bc614bc88a49a9bb27034c47d","signature":"16a2acd4db796a92320ef5d4cbd322e32a4fdaae61996d37347d474301570baa","impliedFormat":1},{"version":"fb809bd889d410ba6e4217acb62db360eeedebcc806bb6b5b4ca3d9767654329","signature":"46dc32249b741792f6691c721eaa8fabdfeeacba49f6021415ed6fd29bb346de","impliedFormat":1},{"version":"c06727fab3464a25786e5d91698ecb897e67c7749ddadd4e638a073138864cf0","signature":"390e6be1564c45575bcad9ef641662d5c280456815850052fd4b06d2f7dd4106","impliedFormat":1},{"version":"c1e4f70f2b0f0f4c19b54377db9e7a91584c9d65152bc524750b5064925f9b7d","signature":"5de527c24bf87470b12b6ea95ba89f94ca52296be3e5ed9847fd3de25bbf6f7e","impliedFormat":1},{"version":"7b2bf72a8e2a070ad756c5ce2ade6844cd1c72fb51115c0b2e8c43bb0ec9f212","signature":"c48bb885f3b678f1a76415eeecfc0d0e0ac98db828a80b176c3be63860529180","impliedFormat":1},{"version":"e969fb5e0353e4dc61503644b94e27e778cc0a870ea4b4d634de58fde9209689","signature":"e1faed08acc7e51d108eb161eca221f2aead5e6fbd7bde9517440604cecd150b","impliedFormat":1},{"version":"1597700b072f9329bdb348104ea6079cdfd26cf3d4a8244d4aaa2f07c88dc009","signature":"46f40e16e939c841a4ccd9635ecd6e45f9426d7c91bd3c5a6e981009c7ed7d88","impliedFormat":1},{"version":"f455b433a9481f07d4f88063e495f9d13e86d7200505994109b5991e9bfebc3b","signature":"8ff220df4da156d1195a5cfd25ce0103f24257af08b221fd0ad288501015097f","impliedFormat":1},{"version":"d16fa18fe4d9c04a4408c7a023cb960cb911de772a81f3b9d1699a9226ecf3ba","signature":"fa027cb1a268dc579a1b78dbe2866293f40379ebfa39cd29e1e20bdc126a762f","impliedFormat":1},{"version":"d4a7f56de92773c788ef9c17bfa277350645d01b55f7dc951f4d6c92d0ab864f","signature":"a1a94a51f4535fdb4fcd0629a25679634a46345b734b236fc8ca32fdb4fa3576","impliedFormat":1},{"version":"0b4d1191ffd90a00a90dfa7d7907ec653b62c391609efaec92a86b0d88de0531","signature":"75b1d6788466e34989ca701450c6cc1e64a55828255bb10e103762f12e6fdf51","impliedFormat":1},{"version":"d973aa061ca79db14800f873e2e16826f7794f3487a6a5afed352bd51f5a10a6","signature":"8e0cd504c4bd755a458e2d0cbac726cd6b4b8f1069ca5e620f508115854f56fd","impliedFormat":1},{"version":"c459456df733e76df51d75d99afd2c2bded152fd30835d123982949a6eb2a977","signature":"033dfd5051404b9d2cf50e666903910c950058fbda3a045a348f6dccf53bd7f9","impliedFormat":1},{"version":"bf663f84b00cee17f0b333df23aa41f21016d953c339d691093300773ff039af","signature":"05101f44b6269c4b1f2c13eb5841db1a8fd4482df6ab53dfef6183eda9d474ca","impliedFormat":1},{"version":"47c4713bc31b7731fa301a6480b4d45b8751beb9c5fde88e60484612f19a8a41","signature":"4f234b444166016f27ef2abb7d939cd646c5f662ed53911143ae1c40011dcaf8","impliedFormat":1},{"version":"7eb4d7d7a258e2b2c1739f0fe1b59b006df67964aee0d544b6cb4ecbe52b8fbf","signature":"7306bd453f9accd250d28d5463c6a69c1b109c55dd61eaa0094c47df626bde85","impliedFormat":1},{"version":"19d40f216d2f11bf2cb2cde625576ad4a9e41c8bb991e7351e32c3168de142f8","signature":"e1da0f6408591318fdab36f7347423f81d0598fc9efa58bc4cdd50d79fb1b859","impliedFormat":1},{"version":"d9e4b1e7ab5061619b7573fba0b9de1622fd43e489d8c134a247e17a281a6a1f","signature":"e8416486ceb5d5c66e27e6f77aa9d55e633928170a1cf072806fd0907be14a19","impliedFormat":1},{"version":"5dcb8d291c6679454fcbd7e3be1fc6317c958b9d2604f25ec68ed3348d18002f","signature":"c33eac87d27b10c01e23fb6c4a059b409e3890accf6d0c6990eb57c02fcde5ea","impliedFormat":1},{"version":"167661a5566d8db841cb5699341f0c8e782944615a219d0de2c993ee12a278ad","signature":"9879e443295b95f7f67ab9b7d1b78dd3bea4e3b85ca2bac6dd1aeb67467fbbb4","impliedFormat":1},{"version":"2cb139d0ecdfaa8e3cbd7e461e6b912b0342b7e2b9e352437018593dffcfe45f","signature":"01535e68627baa0293b1f648eee1d7fdcc841c3cf5d0598b335954207e7f5d29","impliedFormat":1},{"version":"7e2eaa9a5d374644fe92ed372fdc7fe69e1ba58c7e0eddd212e63902d00c2b6e","signature":"ac0c9feabb74f830a588d6751037b05598111e7a39e95bb0ae952373d4b0502c","impliedFormat":1},{"version":"95ad5ed234879b072405fecafe1e98cdda3fbaa0e4ef285b42f9b80f0f4628ec","signature":"5fec6fbbc1ba096613facf0be0826e5ca6274c91fd6bfdbd6f43dedb89635bb4","impliedFormat":1},{"version":"1ae1a1144bd31ade89a74d14c2fed4b0c3591473fef281c445dca9ff7c109b58","signature":"b9b68b62c9b5aeb4006e6c4dde26d2cb1880d4e97c3a23502877036684eb959f","impliedFormat":1},{"version":"beeb12bb7b8dee5419592b99579e5d7ae8b6dc490a8845e0ea056980cc22eb78","signature":"4c4c481c80a3c3060ace92a2b25f3a4c7a5af2c6ff4056a7aa1a7f69f445b43c","impliedFormat":1},{"version":"0eea4622758cb9ecb1b25ad271243d2f84f822c14ee95e032ee1cb450de7a16a","signature":"c9b5e9f8814c823a3f5f08c0b21d4256992fd60a733f6b36513fb896b0f20d17","impliedFormat":1},{"version":"0a4c53a3c0f26320b5677a6577ebf6f870f75fb98d6c1d9955f01f022ce3c1ef","signature":"551d597777c5670c2e811970645df043d966a6523fe27bd6717926345a8e6d6e","impliedFormat":1},{"version":"1bef64495dbbb40385249cf5921ea197c610d25830e43c6b3798fc7084ffa7fa","signature":"be99fa528dbbef391bc8e7e2fe801aa01ebbc67fdeedae26cb011bc0ee9bfe7a","impliedFormat":1},{"version":"723cf9edc5b531108542670e9fba8a4c0a7ad525b57a26be9fe8a6f974e2948d","signature":"1cd0551f79c1ca4bdb234109df7006b6f0c9b0d88ac7cdff969b0f83e50fc088","impliedFormat":1},{"version":"f31d37f89d8c2a20d287f12332caf9663c7b386acd9490e553485337a5158b2c","signature":"2f02cd6c4bd1698642a654cf30408cc857d10b8b3181932101cd1ea14c867c63","impliedFormat":1},{"version":"a7de1c9ac611dc934b5a145411b54bb91c645c629302b128527ba7ac1a542963","signature":"10eae6ec93270609f36aa02b088208d3fb344fc6b5fed0effd7f7517dbc2023f","impliedFormat":1},{"version":"ca767f6ac450c77447cf4e4241c8d1adcdac931207c8f942f1ef0342631b5805","signature":"04df56ed45f263f890907a993100261dc1d2a0db594d77a3f08615fcf502edd0","impliedFormat":1},{"version":"8fae84107b792dc62c9df662e01c4c0c44b955c674bc54e27d7cee3f60899e12","signature":"43e8ac40470e822f3392afbceeb5aa56989b5fa37efeed5cc83ef7cd1e4309b6","impliedFormat":1},{"version":"1797173bd966cf1eaf31f1f6fa1aceada0c717719e0291b51e85f1bf61eb6b28","signature":"f738b94f4a0b5784ec85bcae60b594848046af4ac9b783406c68b21813020404","impliedFormat":1},{"version":"118b6c6f8338a6a061c089b42bc89be635dec570701abd1ee782b50b563c6758","signature":"03193859449553fe47e27005e5b03e2d7dcacfd6ef86cb4edb804a3af5980289","impliedFormat":1},{"version":"62352ee4bf20199e2c5bbce3f9200eba6bf1ad6ea3fec72efd41531bb2193651","signature":"3da7f45edea8e2eb7bf3647ad7ccd1c59ba8b2970fa38468d30297e7e064f965","impliedFormat":1},{"version":"f10ce61cdc2efe89adf7bdede3ac28d712bc35e1ad9899569e2a7f2a7b40beec","signature":"35ace7780625770dfb85b5d5a9d36fa279c0c5e59030753c8f7cd4505cdd6e6a","impliedFormat":1},{"version":"035fe6013e5948d4de13a105c51e0afbd4ca55337ae0967f992a1a25f6b555ce","signature":"e9547a991cbb9d8c35d25833f6aa525a6a068da4cfa8f71bd7e063ec36c2a95f","impliedFormat":1},{"version":"bc1791b0b133340a2f9d828e638821933d57d429b1e15ac9bfd453e5428a6226","signature":"ea82453e1a4f6e495e98b550d4d10589618bb9b86b0e8be903431dcfccd7b1c1","impliedFormat":1},{"version":"6547b172dd405513ecc794a5197bf92581cc1e4483fbd92469b545f5fb3f13c3","signature":"8c38465609cdf051a4f01e5fd2bf136b13fab5f228930f88a6f2acc0c99a095d","impliedFormat":1},{"version":"9bd9544f70b6ccb2b0cf5cbb79804b02efa09c6b0091b12338ec3c2303b31cd0","signature":"a9929114a2c619cba7556bd93753b36e8f40efa8cf4b9bf8d03aa1b6a4a0a78f","impliedFormat":1},{"version":"af0325be28ca7c40e71d3a2304ec0257018d881011c09f009332d4d38e59b4fd","signature":"5756fee6726b2ff1c09c4147bfe6ea44ff703f74d0d4449f390e430a3cb55cbd","impliedFormat":1},{"version":"679518e71455f84432bfc9d6d77d34903a4223662af8745203d2358667912915","signature":"e788ca63b13d06041f643598e890fcf4c11259d731d9b86f5a8d5201a84f438a","impliedFormat":1},{"version":"98fe85ab16a790e7bbc796c865996742a58f0f85c9866b4577fcf0703baf9de2","signature":"a5e1fda126a03c5698c9831a8a317718cf84108d19a3421858bee38985b0ea6b","impliedFormat":1},{"version":"6dd459ec3f2e675a7d597c2760d5d85610db651f4bb3071d4a745e05937bc547","signature":"3cfb75a8b3b9827dc0ee96e56e9b8189da6b15705673148173e1fcaad110500d","impliedFormat":1},{"version":"0c391c27ba93ae7f9462acc743f75039f4d7c43b8c99baf84f48c7d9a373d1f1","signature":"6d549f53754e7b9d23fee79dc07bb71b3e97e04604bbeb4dcc045bbd7f336553","impliedFormat":1},{"version":"80a56b8d50f58cb36591a92df33cb44df8f6a3f3e06de6a901f0e53e82264937","signature":"f75079c08d4f1130b3b8162d12dd406fe8652df41dda4c701d2d66aabb859bbd","impliedFormat":1},{"version":"65712770dba0913947668d2d6ef2a13f16f6a91880c3db0838c913d5ad91cff9","signature":"ba7894e76d012421baf9c2b52f457b056c0dfca8eb01b06b512f3f8379d04826","impliedFormat":1},{"version":"4314b7dd5d5d3240c6a353d69da26fe1ba50c3b797abdffd29d6382b531f5b53","signature":"3553d1640c6f3342be3e49316f9b4d0fc5ee389222f44e512db064c082e756a3","impliedFormat":1},{"version":"71212127bcac35431c9bf1b7940b3f8ac46dda7e8832feb19819ddc28ac31aa6","signature":"d9e2fb20e4c1cb9220edf8bbbe1139cb1b9670ae5becf917e5e8d8ab47dc032d","impliedFormat":1},{"version":"176f9ba3ae20ce04f497a7f62e84d408e9d1f32dd32d858aadf57e494f2e796c","signature":"74b24072fad5c0cee31295cc5fac685f6386f829b31b131d1ad1049a6c2c01d6","impliedFormat":1},{"version":"3a3b73b76397434e7928983a5a89da501b18bacd54845dc13f3ef4151470e3ea","signature":"9d471d2ad2a062fcf63e3201fe05f4dde9c0bb4a967c75e1af30e551fd4493da","impliedFormat":1},{"version":"27fee5feb5c4ba9c3a689aec3561465e9291a5324829f8855ecf747e02d98ab0","signature":"da6848e3541e9285f99c95ce975ed321d80b566fd73bd89e1bbe5a123c62bee5","impliedFormat":1},{"version":"332947e7d77d02ec4c3290a1b162383b1071ecc9f4d5397644f5cceed8ad900e","signature":"0640b34c7fe7d049999a6af765013f471dbce0ed68d7c49017c93afe2f805e0e","impliedFormat":1},{"version":"02a23286018231fdf185d752bb20da7470b7e7f83019a9bbabccfdfb37ac7d27","signature":"ecb28302ae5641f860772ba7bce1320cbf2949289e1371bc8bf01e421126fd66","impliedFormat":1},{"version":"1a4923ae038284d4db2ae932f79c9283f742d3e6b28ef40d1ed9a1e1e58d4362","signature":"190fbdd2e7f8efbf0f525dfa76c0240b999c133f0d6d0688197b7d651b0a9ce8","impliedFormat":1},{"version":"7008d7e609264b1f1e9573a10e7009da7b8be82dcd05d185d366c8352c4e1343","signature":"87c8e0284f964c3000d3802a57d46e22fedb4963852f329bd6a1f69161caa438","impliedFormat":1},{"version":"54a79e8d63fcb5ee371fe7dbfb2cb6f667276a63714dbe445d722da1e39e53dd","signature":"cb678f73b2df198b2cef9cfabb3de1e052ed8e0da113773c637f109bda5081f5","impliedFormat":1},{"version":"a44f9ec898024c0542155d67892646db8391128c4d34e1d2319daafbea399fa3","signature":"1ad56bb2852ad38fb8a21a03c77ffc43ae0509b9a184b15657d8cff5c9d77a52","impliedFormat":1},{"version":"9c78aa4fd4c6b55f0a31923f31732db94bec7566da20dcd13283a0d3735bdcdc","signature":"c24f359d7c3111c6ca2091a70aefe6397b6f378762c328544076b2dc229add8d","impliedFormat":1},{"version":"712462b7380284a4854a046d8be5c2ee2e419ccb65af0de217e577c345a7625c","signature":"fcc195b2f0a1379cefd1129eaf937ad86c87be92c432d88dc97a9b02104993b7","impliedFormat":1},{"version":"d054c284694bdbf21f27a6403b1cd01be3a20064f645ae5a2d20e069b1752f16","signature":"b9b1a5c09e9f9886446a8dd76a6fcedd21c7bd3222a45241220d225e598e2cb1","impliedFormat":1},{"version":"dbe1329b8fe0ad6ccfef2ea2e6ee85ccac8281310527b9016eaf23e7d8ba418e","signature":"44dc466eefb3d61100b2c66f41e955617517cf31b9d2df14fa1c1c3de79315aa","impliedFormat":1},{"version":"aab814e72513208e2e666afb1a44894cdf7c2b5f3da9dc8788a901548e37f80d","signature":"2b2393c22baabbf13e988cfdb0974e7c45f108f46f7dff20bbab22624b648ddb","impliedFormat":1},{"version":"c3b286fb99710f5b26c4091afd2542ab8da98080f5cd0503659f02b9e7943893","signature":"1091265b57d5455b67946b07b1e8d6e7de069bf1dd10573f84f4fe70eb78612e","impliedFormat":1},{"version":"860cea5c02ecc6bfa89e290b917fe0804cbd2d0fcd1d68c65f44e6cdf1a3a823","signature":"4e97dfe7480f52fb340b31741410569e428b74f2a81e712a6f86d99734766d66","impliedFormat":1},{"version":"ac76f838b776d43bf2651b1eec39f580d2b54877120a9037f623b4033faf3c4c","signature":"7353b99ad84125f62ad90227e000f34a439ea758007bb38651db32772a860107","impliedFormat":1},{"version":"73b4fb8c1109abcb0ee3ab28a447e32451ab9c3e869ddb6b3d4f879d49bd2c9c","signature":"1d2b5a6fc615cf2d2207c9a9dda1b005142ea3ba6ed13839fed92ab73442c6d5","impliedFormat":1},{"version":"e4d1ccb5c3af3f80b930da4c76654b582afcc325ed3b12827f6c471afac6b5b9","signature":"1dbb576ed1798061a1a2abe2fd6d9d022547f9f1008b23e9566423deff6bc6ac","impliedFormat":1},{"version":"d80e83cb7652581d1588dbe2a4918b404696d76cc0dc172671763e34672989ba","signature":"8e123bae4e163f9ef2d7856fbc93e6ef5f665405efe58451f3ede56b1760f695","impliedFormat":1},{"version":"b1f01b648b6c0ea920a235e1dc110f4fc50b8e6ae86e73db4f45687095567865","signature":"caab49f1d5cb892a1416db6ba9d5a21c494f8b31e70b58a825fff69cef6db3cc","impliedFormat":1},{"version":"8012e2d337392dbc4fba739a127a9267ab31aabea89dceb8d4d85bf4ee9334f4","signature":"a6dd1cc80af5637af74864a3d8506d1314e351957ca902096523e482c057c020","impliedFormat":1},{"version":"1b12f76bb4d35093921799a928c8d4738040298e4833c27f3e8917bd5b95f090","signature":"8e4eae247b45857734d46530342167866f2d8fd04a3c34c6c07c9fe9383ffc35","impliedFormat":1},{"version":"040d056afe54007f9107137849b6673e793456bc00fff587c7f79d52ace4761b","signature":"a349477e5aa57f7f68bf3cdf9800a1d94e76736f98af90f8e7709e05ad358199","impliedFormat":1},{"version":"2ec8a10807b520c581bd6c2d92626e2d3d25bd9903d9e3d9df006e97eb6630d2","signature":"48e471d8f1efe1354d896aa1e5853e21488f4e5c3e202589da85b6b056fa9b70","impliedFormat":1},{"version":"b781a5b452b9a9e7a4e31fd8cee0a45b5c168907ca6a388791eae14cecd6206b","signature":"17a814514881836ca35d1c3384d3f4379ecf4422ec044a28c86773c30231f07e","impliedFormat":1},{"version":"7ec647aa517cd86f57e944bfc2a6ca33156a79d92360c1eafa75a0a6c133166b","signature":"634b43f063c8cc46935f5d55a84512abcda4160b9081e51c3f60fac968a3f8dd","impliedFormat":1},{"version":"78617a5dfe72ab148f7743b9d9ca7db24fbc2f9d85f267ac42d7e861a707aafb","signature":"f9cf50b8c1947db6aaa8a4edcef16b24cb071813e36646abd6bd04f9d3b6564e","impliedFormat":1},{"version":"83525fe364a4cf08a260e489e8d8d2cb2da60eec682d63d55cc1c1aa656ba1e2","signature":"51c460ed5d509bef9ae4a747b7bb1360dfd1add64140175a03f8a521e890c108","impliedFormat":1},{"version":"3255b80607baa952a71c4445f2f99a6e267f1b0e3a9e8a7b99e07fb14f771b21","signature":"ff70fc0cdf9ba86a1b7af339911e4a03f7e8fca02387681735e88efaef83fe6e","impliedFormat":1},{"version":"143c74beb6fb993074bfb7128179231bb99e1f47c130278d266d6db3ec99e728","signature":"b8c5fe6c10a43e0082ced2f79a4b105c4c091106fbbf5f865fb6d8cfb9a504d7","impliedFormat":1},{"version":"4c39a1640fe01d07438546db1581a733b24f8202d1150a0347e80c8c34d6cb63","signature":"c7a7f10bd3e12b1b74b7301a5419859f74a769482f258bcf6b80dc6cc07a7db7","impliedFormat":1},{"version":"879ada747996f57f7832758a737f115738a1a4b4afd3b89ff6eb483f56710e21","signature":"6dafb2c86f1447e2e91c7823dbca4b710253c59a729b2e0cbe19e6d101d82ee7","impliedFormat":1},{"version":"b7c249dd248e26f3cf30b8897acdd85fb0e0f9a0310b896299c4ed1d5c80c70a","signature":"2830307ec7bd51b37c7548c6ff765283dc27c12ac92f23e8763108b86895771e","impliedFormat":1},{"version":"4837b2349fed928417408338aca2b2dde28f4c7f79579d974fad14135c55e082","signature":"3fcb7c7d5e1c3fd42d1d22bb62556bbc494e08edc9663f678b0d027bd2d9637c","impliedFormat":1},{"version":"7eee5acac12cf5e617b86442d1f424219b4d45088138c94205c45863e3f374a0","signature":"5c682571787c28a12d3da731812e164110380e55b14d8767e9a908fd7f2c3827","impliedFormat":1},{"version":"e330f4ed51a19916c7167dfe7a7068f3a776b5dc2b128df2571765363d6ba4ac","signature":"1a73ce1f5555aa4a81da0c1a0caef326abd4bb1ca9528405ada6aa25c32820ff","impliedFormat":1},{"version":"0030c86c2499a8e727721d16d3c0fa5eb1736ba7057bf550ff18f2e2e02fa7cb","signature":"58a5009b1431a8900bcf797d338906285346738ac0b620248563f7a44dfda2c5","impliedFormat":1},{"version":"76d944c1dbe484587406909308eb33b71ad064b520725f7333ea833f9cb6f300","signature":"9a695cd656ed098408e1bc3b8806e47cd6ddec23f40f138223395d0b36ffdc6c","impliedFormat":1},{"version":"13c4b0a5dce54212dfb73d9f3d952b274f85d4be3ecbf5caeab702953a5fe72e","signature":"e03c5370a4b6bed166c600f6e26a6894fad105cdba0104465c6808ec6bcee887","impliedFormat":1},{"version":"9726f075ac540404b382e8c3186841efc2c1935e3a1e7849f6e775a40e9d3438","signature":"d6d19b5bd0b2bf9892da8019ee26d9fbefd4fdf8beae03c1f1ca56b5020e3a4a","impliedFormat":1},{"version":"a761ab4d4df93a7b275e81b24219127943426511c9f2fceea33101bba028f753","signature":"e0fbc98e35e4f70d31131f0c834c538d249b0a76b00eccb672a79fc86b2170de","impliedFormat":1},{"version":"ee570201cb29af0bd6e4dac2f205e6ac15babba997b1a9e10d99235691afaea7","signature":"b0c26905f1ead9e6439f3f5816f3896807465402636db11908d9a235007dab86","impliedFormat":1},{"version":"15f2bb2da2745a41479c8f12d667a5d9e22fc8d62ddcb9e32df118ac49cd75d5","signature":"e1fe158a326a06f45d7bec081cc3bdc695dfc52961eb482b16bf37b75187b077","impliedFormat":1},{"version":"e4b1a97d85146f819685a81359872553c172525838e3442d52c90edebe6b5876","signature":"5fbf82bdca7ce4c0946e8efb425f03b4090ab8cca9e5efca884447af60d67d9c","impliedFormat":1},{"version":"03a28c8f3892fed6e88614937867f88308f7cda4f82744a1932ce7d9cb95cd23","signature":"c05641eda86ffdd8ef53f4ab75e96ef06e9cc05a913b259a26f2899a9fc811f1","impliedFormat":1},{"version":"0577bcde45922dc65dc5699866124ed3e2d6f255f7e1bd6f78abc7b718ed2a53","signature":"dbce2dfab0e6e889364bdc385d5ade83c04ebd2a03326c50dc53993bd06fbb40","impliedFormat":1},{"version":"ad885eb0651d3b4751cc6e4f545bf2816169cb59f58ae62ef1f8a9197f1cb121","signature":"3b9215cc84f268225fbe8490d2ce35664b94d1a7f39a8b325c99ac51dd0bb555","impliedFormat":1},{"version":"fdaf459480471498d9a6fa34fac7359ada925b3e53b31575baf2ea03b5b8ca06","signature":"ab86619436eff4402d1d921634d7e17434f934e3f05562cc81b5aad9dfa56d69","impliedFormat":1},{"version":"f60f91fab036682c1bde15b8051bf6a47c7a143991e6236dff34d251f12bdc4a","signature":"c97536171dd7ceee97c11dd379704f47257731c4d87192f6ca31c27ed4e0b5ea","impliedFormat":1},{"version":"c279e54a81f0959ad1c2baefe3c8d4fefecab5bba6017e3205735ee70f99bb8a","signature":"e5cd7bd0df59329b951fca827572e673fcaf9cae978f3e77d801024051bf3a39","impliedFormat":1},{"version":"89dfa6752a5c545488491ccbc88492c8bbc9dd1f214e9362f65d5df5354f7d8b","signature":"7efaafde79da3e50bb4a7284e8d4cffb9f0f9ad1ae9081fe6a9f5b751a2dd774","impliedFormat":1},{"version":"ba985709a7c2dab7bb34ef1e47fef9d237c8b6d08eb20ee7eba9c78c1bb52994","signature":"055ead70ca8f12d2e89cee1f659f1d5aba0d899a96947de7304cc73a81b96661","impliedFormat":1},{"version":"f81b544fb8d412631c35d150b799dd9d3550e5bd971fefc37cef526e0ef85747","signature":"2e5731132f7a257aa96d67f8882cee3ed8cdb8e3548f542036f1f588099aa412","impliedFormat":1},{"version":"7befd35ed34b7bc979bce050bf046959d58e7fd6edcafe4c08a0493058a942cc","signature":"2773a8b97f8a2a9ecd863fa2cee34eb54f8fc067cf82020dbfe877578b644e2c","impliedFormat":1},{"version":"24fdae21f8fa392d5a13555d8389323850e851f90bec66bacf44350df07dbeab","signature":"373ae169c7a24288656b13e05abfc19579316a577cb54b5b74ae968607d7650a","impliedFormat":1},{"version":"6c0927bf216885c7e46c725a928e52c6a2db3c3548b1e78944982537442e7bc0","signature":"e9c112812f6eb5682fc55f6cc5243b828fe6527187fde043655f208664d8b067","impliedFormat":1},{"version":"237b74bb446228bfb0b71980f14a788063e5c5b94adc00661a439de5241e04e8","signature":"94aa253537473bbef530171ffa33a3da74d1a634bbc462da4600461d5e5526e4","impliedFormat":1},{"version":"68e49051432cbb88f787024c00a233365d9b6075d7a5fa91b2672b2123d2646e","signature":"a260351700f3827b24f0c28abd6190572aa7d04cd1e4ecd2c0ffd26c0a8d289d","impliedFormat":1},{"version":"c8bf7147d96f27cce3a22a14d1b232105a555eaba51c28442e75f12f76211dde","signature":"0acd265a2a12aa3f6c5f49155133e473eaeb24d0021daa4ea301cbb0301a1c13","impliedFormat":1},{"version":"a1cf17f85796c1889da346d276fca69277806712e1c2de2164984e71e530e0c4","signature":"f04d0a8de4227ddf4d6fcc048c467ec6db4688708e4c20db5a922d92efac490c","impliedFormat":1},{"version":"8300241bdb9244b8902a98fee00436cc517f55b4457ae122babbf27ab2b9903d","signature":"6f7e8be681d64c526c24fc9971934268841e6f7440bfb406d1b5e7c4deaa4ed5","impliedFormat":1},{"version":"54aebf68a0a36b9e078de31912d4838311f87911e4c21028336ad74d21e4a306","signature":"a2b9701b0f9eb74062fd98870dee6b2e5fa6c6306611e4ab5b6b4d0f3b3361ed","impliedFormat":1},{"version":"60fdd86c9091993b34e38cbc2242cc0624f1eeaf33e41bcd77a4e1f510739c46","signature":"5e3b8f2aaabcc9b41786c8a6be976037124647b3b31d9deb4280584e712e8769","impliedFormat":1},{"version":"f88d8884a53f0736a05ff3c8f57eaf13ee8852e393792703ff5d3e4364ee7251","signature":"51db0b52373e42ad001c6746f2f86685906e538c586b01d672f3b5a1816e7b32","impliedFormat":1},{"version":"f70a8074a0675fe40d96c0c084fbb2b3eda00a18c6594a66b44c1d48310d8230","signature":"5e5baa553da03356228ec1cd50e8af5052fa733dbba8937bdd7abc82792d45a0","impliedFormat":1},{"version":"06f297890006fb2d48809ecdb7f41c45de173ea51d03195420aa689727ad43aa","signature":"e37ac64a70ab7e89138c90865c1e8688ba27e67c0ce80a10d2f087bcea6d598e","impliedFormat":1},{"version":"dee666999950be86fd63dd1bd3d8b48cd1b8f53c3399e207e68f6e8b99a0c773","signature":"848999e52fb0fdbefc5fa254b8272c9ca0da8cf4adac218fdf02c487932146e8","impliedFormat":1},{"version":"9de847a7b3d940a49ffd5770390d2c2b2fd93521c4ab9b1859e0ae0075be10aa","signature":"c6f49e7c2da8e3fa5864c8163e34faa5f6fc2f27f3525d5036c06a0c5f001036","impliedFormat":1},{"version":"f12753ccb3c9d97eb66a71e7fb1f31fc5556a744031efa7bcd271ce78f921449","signature":"1c395bea817d5987bc5d992c87446c9c6b0190059da3ab8739c30223f888f5a9","impliedFormat":1},{"version":"faaa6ce4206e3fadcc6275a7e559acf8f51b4a4647ebdbe5cb895650878cdf9c","signature":"842d4e8d54abb65087e13b1de024a07eb13193a12ce2bb30a59dc8ba6c8ac5cd","impliedFormat":1},{"version":"cafd94d1aa7b62c836eb04cf3a21ad972cd46c243d3f660148f3a22c4af06e2b","signature":"8bbbaaaa64eef5fe49a73d0f613431551103f5eea7cfb3994c11be1b454ae949","impliedFormat":1},{"version":"0674fe689cf050196e962fd8ee7e29edf3aeed24e0bd8b2fbfc69235791f8a81","signature":"69ac081fb0f3573ca0519a79b8c09429806a341ca456182f3a0c8e40bdf536c3","impliedFormat":1},{"version":"e5bef04b81023eed125b6d6598d709360c655d02ab580092bd355fd6dfd71780","signature":"4d4464cfb8b59cadf9ae09897a39236aa7c17fad1c4d25ad9f64bdadbe954dc1","impliedFormat":1},{"version":"24caced62238eb2518de84a250a363ff39035510f83b7b734871909488b69265","signature":"682cecc54b2754ee7769794c51a3c8a2875a9f5a7996153460cd6f5935e6be2d","impliedFormat":1},{"version":"6519d1df4897a8e37f57a3b1b8eab0b9b4a246ad765e423453c44849ed5bc8d5","signature":"0a941eec19ded702daa4f93d9eafa3f1bc1ad60edcf22248d83333b948c007c6","impliedFormat":1},{"version":"dea602d11ce1b7fd4bdc393800f3bb31dbc36e73fc171d3e385e1d36416f51d4","signature":"3be45092847edcfe9ae5b6f4c40d19c9ee86a29ece7dc7068ac8acf912e6bfce","impliedFormat":1},{"version":"d808c8aab58dfff7d2746ff7d068f867cdd0baebc5625f5b02db3188ddfeb7a2","signature":"163531aa57832e46b76c09019bb9fd5ff1d09ee08787c0e5d790a521efc55f31","impliedFormat":1},{"version":"ab80e88bd31af20210d05fb6db340db254264a88b9bb845af07d66007ff0492b","signature":"283a7eebca79a0bf5696e30839b88cb6ad4f0993a9ae5cb2416139eccae5b0e5","impliedFormat":1},{"version":"6713f19599c03e6a16f6bf4dc11f7dc8ed2c264c9fee6ec3ffd6e52557dc6a94","signature":"c7e94b44e9d1df8f8742f90720a34bd6ef0cbf05bc885fe3908bebfc4b45aa5e","impliedFormat":1},{"version":"319bdc591624310dd54ba9681288b76792d5296e1cd69ec683ae8bbb62b01c9e","signature":"65bf793ffc3e3d596389ba2c1cb1abfae31723d41ce124ec64729e5660143f6b","impliedFormat":1},{"version":"10e29aa84c5125d612518ee28a0e641443e8221adcfc84cd3180f03fa2bdce76","signature":"a76af4cc4069b5637eeab80b40bdac98a6b9915d8988305d6b5b43a58143bbd0","impliedFormat":1},{"version":"b018cf0e7538e3f993ec0a8747a9fc28647e3f7ecde865e76dd300f9db7fe8df","signature":"2fa1e0ac09be854ceb8694342b7133a354604b4c32be4ac49cc2965c602f0cc9","impliedFormat":1},{"version":"6cbd723386c4c61526ae98b5f8971e244f7875457549d7f7284921c28b88c86a","signature":"0e5f8cfdd5a59966de62a7c5ef48ac49491e5166669c090d0f68bbf59907feb6","impliedFormat":1},{"version":"8d11bf7d7c565d91e5a06d0732b09eff8aac939eed7ab8f4350a4deb0218beb6","signature":"4cd59f8577c49861fb1389e19f3ea96508af81db44f0f64853af18d62e48dcba","impliedFormat":1},{"version":"c25ea5267bb2ec5f42d772a0c1c5c93baa0850309f921315080f4ee55fcae8c3","signature":"562d079bec56088d580b420e22f91e03c9d946076f91413b44236f08cdad04db","impliedFormat":1},{"version":"a19c74ff0497705c9a8cd07885e3410b745e53d3b1b3feb52801a9a045336e27","signature":"14f51e0dce4262352bccf5ce142820d1581c4eb4feba8197b715913f5df8ec59","impliedFormat":1},{"version":"84e513974890a553142347282a495b6714d57b5f5538f9b4035b4ddc439bf87d","signature":"7ab5108e30f520f5802dfe7d2ebd681a0794459d54316cfec52b11f3e97478e6","impliedFormat":1},{"version":"06bc22c82f7dfc5daa6e790dbd6ab166bbb76c79e612ef32af879aba05e2c043","signature":"f1a2c3ecf11b9e27c25f34795e6fdfec1b7a934012ea9cbf1b9489eaa24e2de5","impliedFormat":1},{"version":"2debdab81eb75b7aef2dfd560951f42564d8520e0a40914c06fa9c9041236868","signature":"d9fa238fd19f3b1ce653fb02140527b96dd0e192e33fd7b372dcd99f3e5b3827","impliedFormat":1},{"version":"e8fef88627e386a855f0af47956d47c4bab324b9210e32f4359016e875b78ea2","signature":"34a38d6bcb7a98fc3d93d8136c7fb88d14f272f8a258cb209da56754329398d7","impliedFormat":1},{"version":"79e84f4601933e32afc28092920341cf9c702e15e3cd077e21c84dae4bf234c5","signature":"72c500bcc6d1f00c7ac9166aecd432b270c2620414e7af3f8563fe73df328e95","impliedFormat":1},{"version":"e1f80b0babc3774aa1b3a12a87bcdc2ffa18c7187df8ca1f4e9b175d3e2af84d","signature":"35f5c6ccae5ca72c54e37b5df1388d7886bb4f73283f921c11c827e23a86e025","impliedFormat":1},{"version":"131de515299eac6b0927fbffd2bb98a03dc1928584553fb5772b78835db633d3","signature":"f22810a7170871e76ee9a2cafbc01bd7e171cdb3af6ec73e831c7903beef2405","impliedFormat":1},{"version":"705b338d632bf4593860ee5ff65cefbaf06bad33f940ebabc95d1bb3bb34ce63","signature":"3f8036123087d1ec712f77d8ffa2eaa11f71d155d27ad9dc31cf5f292291008f","impliedFormat":1},{"version":"8b6648c39af2d1222f14270455358acc9c9bbb33db29e988b2ed3fdee27449e1","signature":"a4213135ed56f84697952191bd40773900f5388f8c001ee6b0949b1180e04f0c","impliedFormat":1},{"version":"110a09c1c97137d3acedaca7da2c5dcc8eabe210f1c5e3a2ad383ae498daf7bb","signature":"8b929dbdb765375a48dd1c3658b0f946e22119eeef5513c08f07498fad02bdca","impliedFormat":1},{"version":"62c5e956cc5293f2673c2b9e3ef2bcbfdaf74b5013273a432119fef1e8f12138","signature":"5fd861cb41aef243312c753314c62fb459976c40aa924acfabb20f5fd1b3f5b4","impliedFormat":1},{"version":"f4f7bd7d85b82cbbe615a2ec705cf77f0d7b4c2d525b84523bcd08f989cdd945","signature":"8a2c5a86901ad1e21590523378d38da0088ba1f6668a45e6e4faf0e8c70f8124","impliedFormat":1},{"version":"2edf1c35885aa275bd1c8995035a7bd1c05e05fefc6e4e6c67d1c0cdbc320f06","signature":"986f995ecaef40b99d2f0ac6f621e35e8a3a14be083616387a8d068b781af93d","impliedFormat":1},{"version":"0d8c34db3e669e583b2ae1eb4ca88257a2062f6c4f5120544c848c7e4aa9085b","signature":"aff7c7a44a809a8b160efc672feb2306e866c9378655b0937fae838062e40faf","impliedFormat":1},{"version":"6b02d319c6301c50bc4f26c5ce49d1a912f36e78f86167e784d621e07879caa2","signature":"534b3df727a9598ce19232f9b9b78196676f3dc15f00fe6060e7797c651064b7","impliedFormat":1},{"version":"a4741c757fc91cd23935bbc82b4979e7143c3d7eeb01bddf20561d6e56bcc51c","signature":"9a1879dae2233af2a1c747a715654fd23dca5021345b6e905ef589a48d3cae48","impliedFormat":1},{"version":"65ff2cf7fc1fa5c87360f7031c6522f50c3fd83102a3a757944e901a865f2392","signature":"bee86b5f94ace8d574bc907b2793f141728312805ce727855fc8657a4dbf3471","impliedFormat":1},{"version":"ced0ae007cfc5787f2176a3f1ee86665989e68a558a1ebf6161119594cffc61f","signature":"8ac9d45c25b11bac857f00665604361cff070e01491b78e3daa05f7175296f40","impliedFormat":1},{"version":"96da5a9523823051afb67a48288ec99dee73a5dcaf09e9a834d2549ba1bb237e","signature":"9ac39c14c1fce7e748b7cf630ca4ab7ef4fbc86a0d909f8d36a5c6957be8147e","impliedFormat":1},{"version":"8ebea9ed5114a2fb057b8f24b1986001ed1331bedce4bcdafa16c1feaa9cf60d","signature":"3c81d58bb8d635cf4a47d567b19dbe69669ed8c5cfa00c3784363c1c14b09127","impliedFormat":1},{"version":"2bb2bbbc348a96478e1c9aee88e378cbb2089c48cf7843a982d16a5d9dd15968","signature":"6b3163649764fa41485acc7c0f018e40e17fad01b286b47c3b57bfb60e9f67d2","impliedFormat":1},{"version":"2670827badaa7eb12895ffe3566d21749df72ff3f7ca1bd7dc9b96cc0ca834ec","signature":"3ef569d36abe2f46c89a8fb56cb2ef241c691a1d2cc92cf2cccf6dbecd557c0e","impliedFormat":1},{"version":"40ae1e289c16616dee72124912274d6b81df3efb6be14f4d2219ce44be555168","signature":"7ac3d7c1739eb0701aed5233c58322a89f1a93e9c77bd1b3b305d85453c45a7a","impliedFormat":1},{"version":"a39fac02402b5aa02fba06d941c70f133e3b2f28dbbc72ca5f94e8f74f63dfbd","signature":"bdfeaa4cfaee68ae454ed04606cace6784ea45c5fe50038711f3d9b37bcf3670","impliedFormat":1},{"version":"bfa99d70bb595ebeea075372a110664aef1d1879ca443cf0ae39ea29fda767a0","signature":"3585070ed6b137ff21290fa3664a9445aecc72eec23302de93cfc70575c7ab79","impliedFormat":1},{"version":"0eb0d48cf7148ed7fba23044af47a91ddc675b1e49d9c43de5cb1dbc36c0db03","signature":"e18eda5753b1cbd02923d06ddb3dcbf0f4606b69d27d1fb30e225e4878eb2214","impliedFormat":1},{"version":"6ffd465b3831e6a637a666a4d97acae09795c66fc830b237548f4f9532124b25","signature":"efd0506d1b55cf4a391342c1df5ba999f970190d479813ae9ff3c354a3c45ba3","impliedFormat":1},{"version":"a11c134f744d8bfaa1ed14561bc159d752eb9ddf1b1415c493cf3e8d4f7b415d","signature":"e7f70f5e854feca7bf295d0656f21cf737f77d0fdeec836b3bd2fee04d69317c","impliedFormat":1},{"version":"f745a7f33f34d0401ca13d33624a6910e68ae97e9af352663ad0d7699abb5c1a","signature":"5ffba8309bd055594494d1120c6589fb59dc83e55e169c9d2f89dd4832e28204","impliedFormat":1},{"version":"89e1952aebcc16d6f086b4e5f1be783cd412a7be0dbeaecd612516ffbb1994a2","signature":"b50b85b3504ca48a67c6b296f528aa9b866bc36c22db94fcd0d958343f4b47c5","impliedFormat":1},{"version":"5513301a2cef7f8787cdbc01ab2ad8b947e028e64d0bdba0b32e807985ae6b1d","signature":"cf8db151668fc20b5c56d3ecd2b474a91e618b2a53e5c985abcc8925b414d1f9","impliedFormat":1},{"version":"9f60d6bdf06496d33e9e11355f4e709054b8b222bd74cfd51501d2b486702ac8","signature":"a4dd1e448d5aaf3ac9d758638f416a0c4af0013fb37348bdbb7678973a5d10f1","impliedFormat":1},{"version":"828c238113d7d536a18352d347fd1013b880688c66b49ab01245ce6741b55448","signature":"3887901aeceb3539910fd14fbf425cc87f3b6520d2f374a80e40eff05693f3de","impliedFormat":1},{"version":"98ff0277da9c711a94a2c1a696c7fdb9b088ad2cc4088e8c4cc29970444af453","signature":"6d5bfde968378697293ccd5ed0b7e9b8c60a6022686f9015301f42fbbef7cadf","impliedFormat":1},{"version":"0dc938852ec486ded9f0a0eca3871137342be08387d2fa917e7a59b6588a8699","signature":"eedbcb167d2d62ca507bed6b703aa2b759e7de96f10d6356f8e77240de714247","impliedFormat":1},{"version":"8334cffdb1a115a49729d08c813d2a51c315b6a4e470ced84c55c5787bb5cd82","signature":"7c0d9f1bb8ca04fdc08887c0d72395eb1f01c3626f159d59539b96aa7f13f7bc","impliedFormat":1},{"version":"c414c617d88f64ad83acd066dcb862e11de4af0534a9a8a3454d1c8e184c2175","signature":"dd22d8a1233203781bcb5e435ecee28c44ae9fc1ad18a6d5d26fcf9ca5dbaa69","impliedFormat":1},{"version":"8116496b1c025722dc834a2afb5ce227218e42598988f6c45326c7ba6c4912a7","signature":"f3e2c696a80775c789c1484fc862441e5ecab527c02303e24baff58b64b5ba7b","impliedFormat":1},{"version":"60b090d85bf5e12f92d1fbb11ef9ef6610fcddf5554a63396f26fba5db4a6ef2","signature":"4926e68f375b1214c0e240a1b6ab151bb91223b3ebbd797d6a4dd0860a843437","impliedFormat":1},{"version":"c7c57e52cdfd66617f8f3e42921ba22f357af67fef774c7dd2213b9b602074eb","signature":"210d461c90df045d1ec17a2a2c87710ab26cd464cff86439b9a79f39d0e532f3","impliedFormat":1},{"version":"4a6557ad38766b579089244d1b4f3c2d2793447fdcd4e073731b5dbd233a9dc5","signature":"a1acac7b00b06bc7411afa5389f5961d09323f03ebe601553f4a433c7c1d89f5","impliedFormat":1},{"version":"d5f5b9c9d7cd7633911fdc9e30169bd0b8d04b782220663c3700be09d9aa9df8","signature":"94fa52b6944148cab11a03ff4cb19c432dc59126962750c89467f2656e57c78c","impliedFormat":1},{"version":"9faf15398ff54e5d2c3041b37e766c23632d7abe92355432d7765f67d166a4e3","signature":"3bce32a422f7e03f267f841dc4c0650f7e4663bbf97d61c1d1361b655989395d","impliedFormat":1},{"version":"f5bf3bd1f983a4a1031e6e0adf9e41e512a21afcaf819b63a26cd9bca350d7ec","signature":"40b75793dfacfde9aa53aaef8ae14c4440bb3b615340c1128106b7cbdb487682","impliedFormat":1},{"version":"8790357db6c26ba57e41bfb2c4d0edd0ecdeb9c4874c18f21e3dbc0f63604955","signature":"a6b44a4f130b594dfdb976387c091ccede0564af0a509ea350e99a21e9201678","impliedFormat":1},{"version":"6d6909785f1f8b84bc433d43198ae6f1fa82db74782b62b14110058d6b27f81e","signature":"39c85199438aafa6e79c6b60e5b3a4613a073d6a0f898dadcca19670e58f0e60","impliedFormat":1},{"version":"4b20a7cc176673aeccd34b0a4d9d899b2c3b3b1ce54abed3a40c38e79175036a","signature":"ae1de3a1cb4bcf118c1e6e545b6c84cef96c04de87718f82aa003ca605064d1c","impliedFormat":1},{"version":"d4f00054d9097f46f7bb95ca9d680ae08759b4e24f99065a0b8e178371c80905","signature":"ed7b2136f105ec1775c6c18f8195ff8ad5d019f481b19fc634b108b4cf97bc5b","impliedFormat":1},{"version":"799f66eabd849f26c46ae3ee9a089aec2e053e875f374a32083dad48ff00586a","signature":"a4b397cf5616a7d74f8ec48bdc785458416a893157a765ab15488fb62c8f8c0f","impliedFormat":1},{"version":"5097170d499aa37dfd101c25d0cb6c05aa2f79167a31cd7f27a45ca340ea451b","signature":"1485fafefa53b77119cadec6fd733c0e96f61023051cf9b5e9f997b5e2bbd356","impliedFormat":1},{"version":"d76b241fc28e664cb33fe6b54453fbe421aeae66f0a167d3d6e1a2580bea6f06","signature":"e34923f082b318adcab30a184d08a45358ff60b44bc9487c893ec117b74cfefa","impliedFormat":1},{"version":"6db1cd904c7436ba13d85d0461cb1265b4b0ba8912122bfc31941359a6de0dca","signature":"bed33e70e53fd3f8ba2569b81164dc8922d25b5b81d4a14e82a27190cf8be637","impliedFormat":1},{"version":"e8e81f688fdd16eefdea7bd70cfdcfc3cf1817f7c5d4a44c8bd718a3baa398a8","signature":"5c16b8051753e92bf83eddd2a1ff03fbdac0e5e6df9af67eba327c1e3765420e","impliedFormat":1},{"version":"7ad686df50d5352438975d82dbc217052f1e06c4b8134590c39916b28578b8cd","signature":"25b712b1ef4975ae22e6402623c34757a23b07808365b0b60573044b96fdc7da","impliedFormat":1},{"version":"cafd14e01695e1ff2e57e931f001a26cda2cdee6a32149e1f64fad739b639cd8","signature":"f06c1d03b2d94f17b329843f89be486dfb2413958556b879ca4b549738e7dc0d","impliedFormat":1},{"version":"f50cac7883f6e12b4a22a6abcf013bf4730452a355399bc0fa786d2a5076e69f","signature":"b23496f9d3849fbd35047cc1201bfc64d0117783601c68294e2e74b015ae364c","impliedFormat":1},{"version":"fd7bbb06ca79d95bd6a3335ff6d7aae9edf33bc128a6128ac0af0f31fa9c5ea0","signature":"b84db4e2b5ba80b1d37d14e5eca7dc5a6eefddc4450aaa800e62cdf3077a47cc","impliedFormat":1},{"version":"1ac95ddb5aff2cf9053a6566e3ddb31f922b1009ac38d642034ab4f55f4ae838","signature":"85283b3b91955c0e8f371391144c2e271927a4af3bb156b5f36f1d9d184525ae","impliedFormat":1},{"version":"75b5e578bcb8898a9c79cb3f3f0cf1bd9c99426f9884731c05afe0232942cc11","signature":"9c6533cd7f2f7ce7a5bee2516a6a53a481332de52aa836920e540973d162a86c","impliedFormat":1},{"version":"1bd2a46e14628d4ad8d6277c580363c2fb57e2532987b2c24e44baabaffb3749","signature":"55e458823b38c64bcf42b64f3f3be44496b72752c2fc5a2ead7fbdc2b2e78a08","impliedFormat":1},{"version":"875661751cc2259623b80a0633cdac6e82fc09e28337d3efd9d33bfc08fd306c","signature":"cccb4422a5560b5b3e5949aaadbc7cce93155f5dc093a7cd7360ea1d66c4ec4e","impliedFormat":1},{"version":"ba0d5385958762d7d67439dc803ae362de702cf586da8df3c00124bf3caec880","signature":"98b6f6a2a8e358cd313eb6699f5700cae0cab2527bf9039f6faec6c887845ebd","impliedFormat":1},{"version":"9cfa3b64bcb3e10f3d5e81f8dd3bde078a10fc7369ff81b045f4748d888dbe9a","signature":"7bdf9b5ae368607cd857a7465ca885b3db88c89dd49d070e46f36f6056599d56","impliedFormat":1},{"version":"56894b23b893ebb6f82f9de57d2416d1d0eef81a1766e93399db0212d44a72df","signature":"e1831213a3643c962dd2ac9953768aa2a71b07c4e314705a2bedc67c4816a7f9","impliedFormat":1},{"version":"fb9c1cb7e5b9dbe56255c201e5c7b7ceb45c7e01250635ccfe188dfeffca6ae1","signature":"8817bc595778beabd264741de63d940f6810ec777841dbb947216fee513095f0","impliedFormat":1},{"version":"0f2068fc4589976b181a8f3c60ad415b941537f24205250a7f2eea52b9c29eb0","signature":"d2f371d37f784ab76417d47cddc4cde29947aaba337059fbf384d29478528e25","impliedFormat":1},{"version":"674003fccfe69308f41f428af013037e58ff95762a0ae4c6e32b430b5826a660","signature":"125fe73fa8624b0f9585c05f1817a3985f37da4d6a3177b833b8256963f07fb5","impliedFormat":1},{"version":"83f5a161a16c5ad44bc2fa7f36a657b829dd59b7e5626d540caa80f862ca6050","signature":"03c8970896f0804eb84501e5e02adcbe054a421539b2538a141076337f82e850","impliedFormat":1},{"version":"adf5c3ecb725e8dccc64e7c7991e6143b4e6c99bbe954aecc67066436fa42888","signature":"45a6770ec525c48fa26694d1f1cbf98a39e4e3e72f8dbe4944739fc24b8644a4","impliedFormat":1},{"version":"b0c7baa98240bba07e2163dfc2289dd2926745c9c6efe790fc9d97748a7b48b3","signature":"a98283f065c4892af100d119b435282f7c5822b8b4216e0b0c5fea0134d8a1e0","impliedFormat":1},{"version":"e5b678ff7e361dbb65c39fec597f521408ae2d7c5ca412872934611cf234f6cd","signature":"1d46de8fa9f111a76f4b0e17b0b4f82dda60727a95e4014b9ee29da3fb09089a","impliedFormat":1},{"version":"9669f403ec8155dd4e299b46986cef6b4a30ed914e7be16115b7817e35ab44c4","signature":"af0fdbc12a9ce083b1f09ba2431bf1406df34d229abe5e21594f482b6d30a086","impliedFormat":1},{"version":"aed4b2967beb74ac4548b5e935734e538e239a398bc26f40bdcae51c84e123d1","signature":"9ba1a9b20801966ec2b47ceaa783c0d342705b422b499080e4b0225048dff4ba","impliedFormat":1},{"version":"63ae318cf2d18b535def2759555a95223a40f0f10a19c56b632bbc3d86cdc198","signature":"3261eac60963c90043b4cd60b4f92115bd3a33c04b4142716a919f8398cc65ba","impliedFormat":1},{"version":"a57263d565ff8cddda4a8c607913b07810e8e06c8f0a60087cf3fec338dc96b3","signature":"92c5ec72255f8ac2c274e7849e028edd554fca3268bf576d92b156fadfac3946","impliedFormat":1},{"version":"81516ebd31b5e7e3d38855a85e0abdd5f096ad992d621ae28c8def5037fec885","signature":"4e122897b05d77f8ee8260e1c86e7a155f80b322cf033e5cf9ef028de37af55e","impliedFormat":1},{"version":"e407ffc3a279b73e1833197729e7242c77acdc50d87592e98eee23c855c5a0cf","signature":"ef1cac00ca7bb96d3334bbfcd48cf6956e8543a89dbcfb085bea26264b63ded6","impliedFormat":1},{"version":"5d541d1768cb3dc4f3ad53161410488e252ebc18007357db6e6957fa323aeaea","signature":"04813cdda0cf528269ab66430bf2c5712e80801765ebb7c2c34258d0680c9b76","impliedFormat":1},{"version":"81ef308979d65c2b5ea18f964dc4bde03ffe7aaf0df651bd472e194b0d681599","signature":"9a746a09d7294bc14079d4baeb68808d601a740e345784e7af172b34d87bba51","impliedFormat":1},{"version":"b07dd0ab6277381512c8383973d87f594583cd628c98df75822abc299473c7da","signature":"77738b358cb7c5eb16ac406f84ca39b9f70027250e550c62da808877e62f6778","impliedFormat":1},{"version":"4733340146eca9d992107433ced65503ea6381133a668055fd451aa9a5fbb521","signature":"247c7d774118e70ee86a5fb92c167b6366cc4d14c4188a846dc3c9f3b266c0f2","impliedFormat":1},{"version":"5a574be11de2a06a0ad51c8a51903b523eeedb7941c6fb09c43e5ad4023ac202","signature":"b2e431eb854fb59c8d9098efeb90afceb3e72ae4466b7b12a973b6910d3c7083","impliedFormat":1},{"version":"89e6a16825424fda660d1932b03635062264286fe0d65131b363639d67e5569b","signature":"0f9bfa64f0995ecd23026960cef40058a31fa6b7aedf54a03db902532033170a","impliedFormat":1},{"version":"118a413c43d509fd76733cfba0d6e89d01e2f083a0a4983108afd231e8e16648","signature":"a71eda3ffef6bee309296887dc5075cd01156880701530c99275941a8604fe39","impliedFormat":1},{"version":"64ca16e13f07edd1b5a8a3e584d1b17996059e2d70f1da19a212912c0394c6c4","signature":"7b75eb3a9062b4adfa999b79bba48cb13eb6246cd37ba413a45681b638bfa56a","impliedFormat":1},{"version":"dd51a61f7a296a5ec502dd2934ba6cafa264b49f4443184bf2e227b494dc30ed","signature":"9abff9b04343b716eacd302dafb11b79cae416e57f42b87c3a9737c736be6306","impliedFormat":1},{"version":"028fc7ef944f561fad7597f7ec3517cb7c4a3d88c994caf588c7c11e3a22e03b","signature":"3daa261141c51dd4c4e1184eb71c022bde41b5a55e6f7477a44e5e5e51ca16dd","impliedFormat":1},{"version":"cc043959c93824112e6baeb81958a8175191fb10869d106854ee315c28c8c333","signature":"2914d3cf536533c65e9b484c373b4616f314fe9f30114c33ec8b33776a9425c9","impliedFormat":1},{"version":"a3f82a69bde514f8a7481e9ebbc5656144b5cb30c386e70ce04ac802d3227b2e","signature":"b5868f9a39d951b92c78e4f42b381d20b01c5e73b4bd5ead97294fa77a800e11","impliedFormat":1},{"version":"1cfca460bf446b06adc535313cf4b5afa36b80dcd85f0fafe860177121452d6c","signature":"459a136edcc085006281c995677c293d3aad8b0cd99d07b51880523bca62d526","impliedFormat":1},{"version":"3683320e48356bdce81a114557e4b3c2cde7ef2873d57c00c8f55134d07b9cf5","signature":"4bb196e762808e5bf4060ddcd7dc9b8dc1ec0be1ffd203cd926cfa6cbf87eb59","impliedFormat":1},{"version":"2cb40ce067bac9dae8a2ef85e79e388f66a68ccef22d628ca218e124b70c144a","signature":"53190da5af750d257c35e67a9247f33ef11c6dbe2886641aef75cc7e9e0d5208","impliedFormat":1},{"version":"8f864cfb509e7a98b7da0ccc2956d91f12e05a59231e77970cf03b5a9e7107fa","signature":"b72ef5f8132a40544997c9502377fe80ce1b5a4afd57f4c067bb9d80f08fd195","impliedFormat":1},{"version":"53e7b6021b2236bf8ef0ae3c9743da7196a23880a4402839bc68342f0f3a8c07","signature":"0608917bc73c2c2e0339b782834afe3867fd94db9db3eb912a350e78131697cd","impliedFormat":1},{"version":"f261ca4595ba4f8b455a3821955b1219683854181bd7f0567d7af7a334ccb0db","signature":"9d5dfcba7e0a0d0bfa4d6609d293bd309e74b47ad09cb955472cbd2808e6ac05","impliedFormat":1},{"version":"7f735e6924ce38092fd0fe29ca9a47b37d4392d8a39dfdbf4639252ae14e149c","signature":"aadae1c73d5f91ce79a28e7181284b2fa893f37e77d572d6bbae2286430dc752","impliedFormat":1},{"version":"d1906e63e7ef8ca042fd2a849113d21a16ea595f78d93a18ea1ff38b73514d44","signature":"be23eedead71d4ae2296734711c4371a79b08eb9468a70ddc40b195cd308339e","impliedFormat":1},{"version":"9429e168d2d152cc6f4bd6ca4282579d3d4b25a67149e4734f00fda4865cde40","signature":"e390f9b910b9fa9c88c46510b774e9712a9034b9f33b1960d29d095b99d8be25","impliedFormat":1},{"version":"4721154a46f1850727ff9e9d9622658628995ce881913ac8def47da418a3265c","signature":"b9645d26bb4f4736ad4e652b9673ec8018ed3a56938b6821921b2a708bb46081","impliedFormat":1},{"version":"d2ca870a6c1f6c694884e6881417adb4ffea37a9837d05b4b95874f1628efa9c","signature":"540004b8087745e2d799e16ddb10507be9bceb6d43b35cb3af727c6a45138753","impliedFormat":1},{"version":"c7074a765ef3bc9a74f8644d4eca1eb3630cd1acf7ae776315ea5a85d3fed93f","signature":"40712bd07bdfb7785c356cf509c738e003313fc1b252dfff3f24ed0459c5f3c0","impliedFormat":1},{"version":"aa5e517d5d0cb18a67e0deb654c27a206e6829ae9c29a93b7576058430d1d9a3","signature":"11c2538bbfa058abb4b84999c08ac4b3c3455f07af64105b3837cd4dbb3624e7","impliedFormat":1},{"version":"d1763fe04ec3aedc4f88c5d3a616658ea488a02a5286845c6e6a07a5dd01e2ac","signature":"ff011f902763ea6dc41c82e368d9f333077f5e61bd7bd2522bc8fb10d184c90a","impliedFormat":1},{"version":"68f51b38295abb7f8149164bf49032c90d684a606cf46c7a45cd6d13c0ff8f61","signature":"ac1c6320a5456c398667f1dc3fb62d02a24c24b0c79ff025a80a0935945c2dfb","impliedFormat":1},{"version":"b100608a94ff4d87bfc0e09f8ad9d3a3fbd47f41091afce5e43eb5dc482db1f0","signature":"9bec47ac7e6a164ffa2c6ded25352b1de7a93361b09505fbdb85c8ebfdd1fc06","impliedFormat":1},{"version":"a307a8f1fc7eadbfe63263ca489995f60ba15bc91dbba6a9c02715f98ccd2fa7","signature":"ed6bf2bdb9b65339e11af325620d652ba4d0db5a7c5b9d42f151cdab34b750af","impliedFormat":1},{"version":"ac9e20897f38c7c289327605ab403b60b3a64bc732ee7380d853eb2bcaffcde8","signature":"976fd7711c35ce3faed2a334dc21326d2ff99c8d82a75f25a53feab2d28fb513","impliedFormat":1},{"version":"f96e9b4148a97b39b0fa5d878d69d4a11abdb28767045bdd51e9070391ab7035","signature":"d21237c14bc8104f98f8b3e5fdbdd6616a534f8192caf456640c8b746a289b24","impliedFormat":1},{"version":"2311d585e445d8895b76ee1339ee9e3e9398d4b079760d677d1feb8e32b32a08","signature":"0a13275da797eb7e737d133ee0a6655ad6129bbd8381e8a9d190dd86906b35b2","impliedFormat":1},{"version":"252ca16b89b9f85d10d62c9fb44faadf0551405e4cd2b60e53e81dd55c52f3cc","signature":"971d9d851ef073840959b99790ceaa10662c94eb3d6629a76218436cda1d8efa","impliedFormat":1},{"version":"6f21f5f68db97edb7ff00405d38f1845138ca13502bd0af0d4dfb287a717ca84","signature":"de0734e60f0df1d82ed3305022cecf4c594707aa1d19b7e2fdd06d71080ec8a8","impliedFormat":1},{"version":"9e238b2090c98266ad8f9091c93fc30ed1e240695f55149ee0b53eaa66e68657","signature":"6b71a6ab24a2a9f31aa0f7bae9be3c02476a6b3e04c97a4777a21f296929c2b8","impliedFormat":1},{"version":"118182199f22c96051ec1a37dc95559fa5e67f4a24f5abeeb6e8d199983f17b7","signature":"5e4366458bc3e6238bd11274a3244b8d41440ad033d1172e492f9933ee2b2bf2","impliedFormat":1},{"version":"0d08851f8c6e3b25a171d66951c56bd54bf3d028eeb62b9cd934f4415d9ec54b","signature":"c34e94f5ab0d8bb8ddee59b8d89e0130dbaccc6440a6f6ade92d2d13cf986684","impliedFormat":1},{"version":"b6fd1dc598a290a413d1ff06f2a6cd2d0c4efc4de4dfa8656bd139874cddde16","signature":"7e571afc096458ddf82049eaf30e4ca313fed89dc9c5cb3f5d9942093d0bd4e5","impliedFormat":1},{"version":"6eba7da4ca50316ba73d736d44eae256f14a6b96a271c74e48a94793b62133e1","signature":"870f64394d461a2d59c9a4fc0fd950919a105594cf8bfd5dea7cc0f3a170ebe4","impliedFormat":1},{"version":"734c4ae22b2fb8975ebfad51bcabc886ec67b619876cfe0ebc641a22c7896d97","signature":"e001ae2738a9684b7ea5da204887b0551a094f75967569f0feea6e310e3f5cd5","impliedFormat":1},{"version":"60ff120cda917f0665dc87f9d3feaeae7c4b779e6932560dba79a7d25bab5e45","signature":"34ecedb14f62cb3c8ab567eafa4d99ecb4f96234da754ded3efbd6bda21c36ca","impliedFormat":1},{"version":"da1eb41cb04d9f06b3938a2584c9d87620eea0e6a409044caf392d3a937be604","signature":"5d4b967f84946710c7f6775dda53d1337f84429597a7a58ffd3b281a1e9f5003","impliedFormat":1},{"version":"d683e9c5ffb475aa30c5fd931c21ee0bdb97991dd2daaf4afe24b58d0f32b0e1","signature":"d55034badd677a24153e12556d3685cf2abf36e796b38713481f8e703540387d","impliedFormat":1},{"version":"2dbe6716498191a9bd74555d73705d95ca3bc1b3e50eb098cced77abf41b34b6","signature":"0804e01130c9d47b33131d4b3d10df391adfa11c3208220c02bfa4f9f72a0f04","impliedFormat":1},{"version":"910676d35a54002ba119d4f5aee10c58c1c2bab149a674f9174b60ee31650464","signature":"2007d50617da2ad73eccb0d269d563c1460155831644a7e73649fe258ff93b09","impliedFormat":1},{"version":"9a625bbf79bd6d6709bb122246698acf7afa1f21a5f7f8e6ecb6da07640f0e21","signature":"4e8a36da472ebaad066173cbd808689875dba22e722d5ce3f209700732098d07","impliedFormat":1},{"version":"cdccb964756a71fc53ae5cf3a7d096f845a3a7a0f6460d955950ea2c4afa9f06","signature":"3cd260bd6bf85c3b5cb08e37f97194bfd7d30d17e15b4586022122d92b338f22","impliedFormat":1},{"version":"4781f6d71fa1b4c73dbc8da476e100ac105ae603e4d0a4c76378f7b54e83872d","signature":"5387332003f6366484dcd81df714e1456ae566c13c7c3f18089f55e32190998f","impliedFormat":1},{"version":"a1bd1ce518fea598748d069b47d6be717fecd68ac7801b7e7cc54f385201958e","signature":"34eba1fc2aff0d2e382f3cae6139379c5a982305a0d4702a4ccec34caf8bac01","impliedFormat":1},{"version":"5131ea4038f45d82822292c56e60699e70f06df11d17658c753f328a254b9a01","signature":"17c87b843c14faa0b930a3184dcc7d8c3273f1c2819d747bcfefaffe4a9c9863","impliedFormat":1},{"version":"531b16ab2db942a2f29cc9714ff7b4d2170cdfc2a1afc738d33d98708ab46538","signature":"d55f84b540bc89052d417604dc4ac127673f5b0e3d06325d34cc33baf5da4c21","impliedFormat":1},{"version":"1988a70adace3797c77336825b3448fa47bcfb5348d1dc23c7dcba3d2aa5ac31","signature":"6a8b4715b4b44f4fd23cff6a6ae86ed6665296f9592079c3ceed2d50d4581f0c","impliedFormat":1},{"version":"ee98adf27046a28bfb8764c8bd421b8350b2b6ec5fe2a3c0223e9c1bf9e34825","signature":"6564ea4a016f24e07c6521c2de796b4af73f8c3fb60700c2d5090251d46056aa","impliedFormat":1},{"version":"e74ef0309859444affd62a7ad794f1db3384b16377777c4231233825aef15ca8","signature":"286c32a5525ef703b221190eb43ce35ff41c3edacbabb484ec2fb02d35fc4436","impliedFormat":1},{"version":"2f33ed5bb2ffe5a1114dd3078eafe73ce8e2c7a5dbb928f7315641e6c46779d2","signature":"543738f7d02c63c1b41a0fcc29cab305955716dc075e2452addaf28ff005daa6","impliedFormat":1},{"version":"e6743de1e8a77b8bb85e6ead0c25d5ab7a4aefa157d40938132751056d494d02","signature":"ba083890aa0b537f2827dbbcab38eff65c0e795917336a2fc4c8627bb6df1de7","impliedFormat":1},{"version":"dafed9eda95166d93df4fbdc7fa60ef5d3b5dfcc3820f2ddef51841679757017","signature":"7c98557b945f0affbbe2a8eec3f066d0babded95f1f514d8175373c7e70f19c5","impliedFormat":1},{"version":"8b55aee1e08b5a4384856d2583570402e02d80c9d2b346e72290f1237551e495","signature":"77d9bfd36245b2eed9e3713a80dba260ce9d72ea245293f59fb901e574429e83","impliedFormat":1},{"version":"1df9409c8d23fe4750c678f5b68006c66d5c007f9d83e1146c40c71d260b135a","signature":"31825079f51a4089d51c789b49f6bad2bdbce07a9275d728a390c6a7ed7623ce","impliedFormat":1},{"version":"848c9adeb21e2efd75dd71ba7e9c08db98bd6e86ac3a65496b18b7d9805a9dde","signature":"cf3ec4d054da6c30f98ecdb0280582d54662915549c204854b6fa8f4c9e30880","impliedFormat":1},{"version":"5bb9cfbe0c1e92b883e2460e92dafa2ac70e69706e2a521a6c28a58e93265f40","signature":"00c2461ef99c606012b7697acb94290b5823052bee8de7b3afcbd5d1491563ae","impliedFormat":1},{"version":"4cd443cdc630eb48f2a9efbb8925293450b62e246e79dd36e4e8630a0b31a2ed","signature":"eddff00e24dc4d1aee54e39eadd21984b8672b1e02cbb2585d83c94b5d21975a","impliedFormat":1},{"version":"02bc53080a41ee770761dd40436bb43143e0584b1c4631571b033d66b2b2c1ca","signature":"c811e30f5190d52f61ac20d26ca0cc3eb375f9b8c26f9ada1c4d3f733d62bcf2","impliedFormat":1},{"version":"489af10f243e7f409e2fc7418cf1ddbbe7468207bf7ae25e8c9b1ffc2965dbf8","signature":"764889112801378e9cde09a0ad4cdfa4339130a554ea1cd06a4c9d3ee512b400","impliedFormat":1},{"version":"a390517dfdc1ac2ba2a0c30c89dfcc8d2c2e23469dfcc9fc9a8765c1841b24ab","signature":"656ea991f9f6250011ec81ee5746eb6d19f86f94603dc3382f046fedf94727c4","impliedFormat":1},{"version":"d032d0d9b0f6ed1704962f02045c908fa99a49d99693a9d8992a5f83746b3478","signature":"8596c47bdabc46c4b5ae4d370b16f26bb1ca84e3c4d32a7e696eb75fd48db4f7","impliedFormat":1},{"version":"7ecf5772b25842601759faae9d8fbee6193d47051a07c94ed8bc293f4075f52d","signature":"a227acd669fd42ed9d7da4a2d1afb8449ef156a4aa924b22f13edc8cd61180f4","impliedFormat":1},{"version":"ff1fdb2b9526849909eac35dcce9856b6d7dec18018dccf204d544a99f8289ed","signature":"e9d0c0bd4b0c347de3db00f71927a71a3949cac47409080c80c730b10c99f830","impliedFormat":1},{"version":"4d4668741c05799c24cb91d99769e3a9e6c857a9eb47f1eb387dab5de49d1a8b","signature":"b40cb1aff96ce62556822e73a1eaf7799e346ba05a5f50b83fed4cf243e45ba9","impliedFormat":1},{"version":"e37fbe0de902c08799c111c6478b8156af998e362b37c43d54e1a089e64b6dac","signature":"4982a568dd221e49d9341acce06b5b7fec1c522e56bedac1fd4c080cf77ee335","impliedFormat":1},{"version":"0c468a4bb71d39a569ddbf17fe271a48abc4d373038179945d35b5bf7aa78f00","signature":"8e6eba8e09b40c4d304da1c183fd330a163a46071c59b3e36389b425f2c7f50b","impliedFormat":1},{"version":"f94573bafcaf1730ca00a9727f52348c933e64950fe6d63855304fc1a0076db7","signature":"582cd92132314d68a628429d530c666ad88146ac56916f2388b791db7b193a53","impliedFormat":1},{"version":"a8b181f9ced0393a127688611d8a4eaa2da40d7b47f3a0275427ceb5e99af8f6","signature":"42aec70d9767a916821355128a54dd4e8d2269a01db29e3ce79191c4d85461d2","impliedFormat":1},{"version":"c16370e83f0d8fab715a62fd08a94cb0d01c79e35ab177d027769b00b5509dc2","signature":"1b865e8a764e205711343c34902763c73eacd2a6cdc2a8e05b521ae7bfb22ccc","impliedFormat":1},{"version":"df59212c3d6e05f1fef24fc2f5645672230b7d81791431565ad6bcaf0aa5f8cc","signature":"cfded129936e3042cccaba74166b88db9fcd5c352e9dc87814f15a505532276e","impliedFormat":1},{"version":"7a592cef5c2056ad8de5da1c568b5f994a327504f41f8505061c648d4f142bd4","signature":"58be0a1bdc655d497765532eb2ebecf902bab5d82801e37ab40684229476116f","impliedFormat":1},{"version":"fe9957fd47562b676e390ffa8718ae077a0bf63b9621269d5e5542c82ce08806","signature":"dbdf2796872ff4d1f6220de8c70821b6a30431a78975665cf616231f654de392","impliedFormat":1},{"version":"dfe045526495371374dc799a586e0a07c8173d7698f05d5523faa05c48040978","signature":"0250c4204faf654274bd007c2485c555af9faf1a69b5fe2c32834817452581da","impliedFormat":1},{"version":"ae3e2c79cdc011512c661cadab5b1bc428b63876f3a9345c8b8ccf469a6f498c","signature":"a4d58268001e1fc2497f42d2cacbe0338065e8ffddddb869515dee8229b7e844","impliedFormat":1},{"version":"06ab61f04b36abee7642bb083416a6af0f501170289040ed845160970ae6320f","signature":"292dee2fc437522112913ac418cef344497d9cc467077e3aed16cd40122628c6","impliedFormat":1},{"version":"c26858f9365ec6425f0bbc9e191d130bbe5bca6e72fbe07b5f27e4b2abecbb42","signature":"587f9616bb678845e89f0ea70ddecaf7f12c34ec93db3f1404cc98dccbfb7ada","impliedFormat":1},{"version":"6cc56c40134ddda6508eeb55aa49f4a0cb0672ac4ae2e21c85f402559cf61d5a","signature":"b28b4b41b1c85528ac52ed66c6cfdea6e009ce552251b8780cfd2833860980f4","impliedFormat":1},{"version":"36cc9c7db6a0cf6a516b397a19255afc260a051ce2a6a30ddb96ef0c4f9710f4","signature":"db03dc4cdc05353e00ee060aa4266b66a4779065a84c3df9e06d7540d68061e9","impliedFormat":1},{"version":"299a62a7cbde377ba5efe8f3bf77f201a90b2c42d1d823a6cc6ff6895489bf8c","signature":"eb0a78b33afc06991980ff126c53269c291fbc825a804636e813df359c08f8c4","impliedFormat":1},{"version":"08d8cef4fb902a210492afa18490c8ab1038c8fa8abfc6abaf62984bc73857ce","signature":"2c48c342fdd78eee827b3daed7af8b71e953ac7e15608aa52b4db8b6ab890cf2","impliedFormat":1},{"version":"ee907d9263cf1ddb79d9dddcc0bd4d0a05ee80337bc6828dcb7146596982da6a","signature":"33c2b6ef052b535d47f80e250ab39604c8e61895c4969c76310ca81794dfd451","impliedFormat":1},{"version":"a90385b8fdbf19b6aa06a2d4641a377db07722b4d3615cd74cffaf992ae28fc6","signature":"3b66c9cd11de796096141f3baff2e1f1fccadd0acdf51d7d3a01411ca56cbd05","impliedFormat":1},{"version":"a70075e5aff99dbb98434cc709cf9ff46aca14067c3e45db076def3ab448cf3d","signature":"fc6fc740e5c631a0026d15fccca1d61c0303148a846a0b4dd253dd40e9ca5317","impliedFormat":1},{"version":"644f52e7dbefcde896b517ec94e22283973223ad347ec53a16a4fc66182045d9","signature":"c7d6081694eb2bcb7c502752a0d7d22e6a201127435aa897600785000390afd8","impliedFormat":1},{"version":"d93d822ec8a1d39013e65bb3dc6d29c949fbfa1e9cc54e9e8dcae7defb05b8ac","signature":"e42c3a5dfb256f8956a13837232cd39ee21ed910c738969f3994d11ed88eb26a","impliedFormat":1},{"version":"5362a90e954db6fe8fa4e36ee5476b971fe7e7860b4e9e030fd5d4ae55033d76","signature":"a43c839d7a44a0958d1f3719704a327f5a98278dc16883626b0b68bf96353adf","impliedFormat":1},{"version":"453497afcb2fde4c13e3dca92c0823fc2875fcb3c6a4c2e243a726fb4d28a1f5","signature":"8a6641194d47fa0b247ca2b90d00756de3329ed95019699bec7da8c5d8e9c3db","impliedFormat":1},{"version":"3e6bf82db1f8d6a671128012bd62d511037ee1076f2578e59a0c0190aee4a1eb","signature":"d12bc1430a46ce7398a2c9d26b1854318309fc9ca4cb85c64d23e08bb834f878","impliedFormat":1},{"version":"97b8eeed4dcad2802e706c53332f262307733beb8a2f25968cfc5a88fef9d261","signature":"1eba8d4fb3c4768c4a8e46373b5f77a061322119f848b0d21526d94654f6ea1d","impliedFormat":1},{"version":"f9104adc66fae6f9373a664ec686291c0304116d91b0ac8519c4ef29aba85e3f","signature":"10d63ce19b58823f6b7c3237af63de2c3a1af25297333a8abf7515bd6c08b06d","impliedFormat":1},{"version":"9cb5f69e5daaeab5a55a706d8ed7245730f6847663401e25c13a098ebc2ca14a","signature":"b7cb69bcbf1606dd485fd16f0657a2ebb8677d7940151809e334742d18380d46","impliedFormat":1},{"version":"29de5158cf4852ebc68e984b6f5889ef76cf5e630874c5c21aad604cec507bb8","signature":"42d6f55ffe6aa2ca0d7706f14e3ac063efa463009a705a2d85be82daea2a6a4f","impliedFormat":1},{"version":"df0bb3e9dd01ba8da05d7ee625c0d7de81ae237451e0743ae0c2480327703bf4","signature":"27ccd45ebd91df434b66629eb949168ab5f8867e701655d56d2c3bbb2d9a823c","impliedFormat":1},{"version":"49a7dfbbe4c499942ce14bff2db76cdfc90212ccebba65bc98fa7d5d00391017","signature":"a4d3cfcc545c0562fce5afb0242aee38f09851024a33b2dc605b350d708504ce","impliedFormat":1},{"version":"3a0e0736009297e23007b87b4de05de3b0de5de20ce6264fba0107685d0e3300","signature":"0cb75c7ee44c8f281c881ea83cb3747b3335be602fa2f4444e730c977f0e3b48","impliedFormat":1},{"version":"3fbf4c6083b839c3adf890c3815dd5ec5b9effacaef3cd880913c39171181eba","signature":"70bce98f1fd320f83b8736aba78c6ec1b0e06be14d2b1d7a86eb7992180ce572","impliedFormat":1},{"version":"fc1c5e5a741fe454aea59f41d93c2e2d2a25984df49875b8a1c8f99f0e0adcda","signature":"fb2c2ea7b6630c974b1843978eb245592e43f60cf58085a627f7f2404e6438da","impliedFormat":1},{"version":"8d1a277f5ac781926dcbf2839beb9c87f13566e30266ee7159d1fad111e320eb","signature":"9f7f657c2e07979ea53a66eb8df97c6fb8249b54d8092d0ab4e370795bdfb078","impliedFormat":1},{"version":"0c63ccad3041dda82da903fbb0f3b0e46b082190de9cf90e5c2ecd8bef45691c","signature":"48162a2044cc4ef8a71ac4880581163811dc1f2bd3a0cdffd566326e74fa7d85","impliedFormat":1},{"version":"c6d3cd7d556081ddb83b8fec752318b649450e2a8068318258b11143b22f826c","signature":"17979fbc3f7ff8ab06b67b5641f55875122cb1540876eecc9d7b14f89ac56dad","impliedFormat":1},{"version":"2b69fe4585527a1cf812e31a2743046f653f88504567fc5444aaaa960a05d5e1","signature":"0ae47261c00fb2f939df534ffcab92140c9fe8e2b7c1750cc635608c2311fc39","impliedFormat":1},{"version":"b33c2384aadc714e91f73326edf05a3ee16cefbf67813486ac2363ef813958d1","signature":"f7333659692510666b3ee997e0dc82457fc89a0ac2833522ced3be30c631a5b2","impliedFormat":1},{"version":"6adad66dab8359bcd4d86c23b652a30d13075cdeed6921bf6251e6432d0c58ec","signature":"ed1d2b70c4376d28dff2a27700305ac015d9e889f2c34f4d73c26604e5b77ecd","impliedFormat":1},{"version":"ba8f3998c31eeecde513e7b11a3c592aa3be7543a29ed0ff78622fb7c1b807be","signature":"3a4c672a48f01c584dd6e83052e153434b1a82e0a32f0a652e7e244e24c12ca3","impliedFormat":1},{"version":"8c6d9dec24e8fc07aa5291be6c10c712bceab24a9bb04950d3cf929fd41021e3","signature":"06218c406ec6b9d305c18b3e1ae353303becf085e7e1713097cd0089551b758a","impliedFormat":1},{"version":"6fd4629e92edc04c25521af2fa2db8934872bd98d58cce662e391ded052a38d7","signature":"a061a0adabeb5c59e01bf70c60e63950ff309d63b7a207d19f21569e4ea16b5c","impliedFormat":1},{"version":"7a9fbaf115b7a67b2953dff3c9a1120f3f376b4ee48dd818f8274ae4daa79a35","signature":"d7c6a19c0faa046d686e921ae12c47520049f053d9562eca460aa861f792b385","impliedFormat":1},{"version":"6e32ad60f92594c50e660e7ab04bdb5b20c450ec24c93bde0b6a40a6659b9544","signature":"395187e63352eabaf8f67a7a7c848801ee82a64ca27dd25ed6159694f86b2e55","impliedFormat":1},{"version":"27d1566e70e4bbab7c1d02a2984edb2277c7be1d13ddc833fa5e061327976350","signature":"559f850525ff67ec08c207be1b4a6a78d7530e014f920e2bcd4d02844325b61c","impliedFormat":1},{"version":"8ab8a2baa511d6611eb4f691d24a46ca733981ecaceb21efef9ba7cdb633d087","signature":"eb60b3446709b1421f1aa1f33eedbc9acbeda759ed6c33b3b8c8b31621d72557","impliedFormat":1},{"version":"5e669fbe30b8179637ccf10636a37c5063e17f65cd000a69d419b8d435fa806f","signature":"30c6cbc4d01dd9cdce41595d648a235bb516dfa2f9419ba0b440602940fe7faf","impliedFormat":1},{"version":"dfee874981b3420f7651018f436fc64544529a24219d26d35c06ac0d405a0e0b","signature":"aa5c92d87b1937792f73e8be1bc06364548de7ea2ae80d08c0c13bcc9a621225","impliedFormat":1},{"version":"6be09fd72a7a6e26cb30e3cedae9f3fa20d78b765a954c00497a1ba3f5e26228","signature":"6edd2aa992b7da85744f25baa747473e3e3c2e4a01f6f69eb0733d4b483c9b77","impliedFormat":1},{"version":"b35774ae9ca2268e434cdde325b93b9ec398503eab91cac3340e6d05f7dcf1e0","signature":"7c0355676428442b33d1eb010eae94366dc5fb182dfa936392257b48dc5a0fa4","impliedFormat":1},{"version":"964af7f00820cee271ddd209fdbe4cf83dc2808cf4f0ac55ad4b582689e8d12a","signature":"b46d79648a1320fb4a84fc69851f013f6d3464bfa987a6a50abc90045612537e","impliedFormat":1},{"version":"8b9fd6932f134f14812cecab552c005db75ae6e7a446ba0bdf4053effe020f5a","signature":"a69e89df8f9182c592df5d9cd15e6c61889b4b79cd40d9a97b925de34d0a45b8","impliedFormat":1},{"version":"b5ee40c83278ba88c36f91b7b1dc6d004bf63df9b89a0d8c4aad2f912496601a","signature":"eaa7cbe8e3cfdbdfdb7b48dd5f70ed5fb6aca17d7c1d33fe7dc5730e89fd685f","impliedFormat":1},{"version":"a5a63c2a5bf2eeabd5d23c6751181b5dda986b0c28c4d4a17310ad8105e5d33e","signature":"36ea7994dafff5cead70639ca546317539a45944da7f49f8d023a429d49729c9","impliedFormat":1},{"version":"fec6c50fa29c6dc7a94f5f6ac0b05bb60bc6572196d674db5d03dae7e3d3610e","signature":"bab6e213e1175b67fcffa436e6a3766cc6f9ad101dcc022e96f98628d0da131c","impliedFormat":1},{"version":"5db713b3337642dce52cab033fb88be66c8feb01dc21faf4f284c7e81b8dea99","signature":"871fe746e2a58f1d4306bdab7222389f16c0184deb63f5067bb5d169e0d069f7","impliedFormat":1},{"version":"7d3ccdf70542f428dc72f09b17699e9a5b8a84bffcb28e42b52a5f01fb176477","signature":"5bb50c1420c5712d39023aa7d7efb2b8a1904e7263501e1b6fb9ab871cf720c9","impliedFormat":1},{"version":"b9a023b8da62010b3579c4f3e1f8ff7ffe3dc972afd2e852d915b8109b5c29b9","signature":"378d9a86c701e51eeca1f0a88e09517de004f6138e898723ee2a17cd4cb408aa","impliedFormat":1},{"version":"d082878401b54b07c0ee5c942064dbae77ec660bbc2bca42440ac27491240b97","signature":"7981af46fcc1a1dbb6fe798d1eacb9d422c89acf7e6b389d4d3c278cabe71710","impliedFormat":1},{"version":"5e753fed74ce41d071465f75a3a263f00a033d8ade308526183d68e5b3b2a1c4","signature":"3df910610db780d4579dcc0552d3d28290d758406863a9aa0fa7fbf7bff4b15e","impliedFormat":1},{"version":"132a64605f6027183747975dd74cafeca5293ad31ca23b5c7f9a594161d777c6","signature":"ab4bb8989a328d754cdb62a18a442f566a388cf7abb5aed52659548f4b1edbfd","impliedFormat":1},{"version":"d91d366a1aa651817cdc2848a7bed09c6cd0e116d1a8fa97d5068a0ce3763399","signature":"ddd585037bbe959be9149f94b6068661c0a52c6f081112a67285cbd48377ac8a","impliedFormat":1},{"version":"2b6453394d3b76498993d1b67aa221ed8529edecc31f4e57865efa767786baee","signature":"a45e89e030400369b97bcceb5e54ec4890bda1ba276a75a9624a6fd882ddb2ce","impliedFormat":1},{"version":"785b9d575b49124ce01b46f5b9402157c7611e6532effa562ac6aebec0074dfc","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1}],"root":[60,[75,687]],"options":{"allowJs":true,"allowUnreachableCode":false,"allowUnusedLabels":false,"checkJs":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"jsx":4,"module":100,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"useUnknownInCatchVariables":true},"referencedMap":[[74,1],[63,2],[65,3],[72,4],[66,5],[69,6],[73,7],[64,8],[71,9],[152,10],[401,11],[402,12],[409,13],[410,14],[412,12],[413,11],[414,12],[415,11],[416,12],[418,11],[420,11],[421,11],[422,11],[423,11],[424,11],[425,11],[426,11],[427,11],[428,11],[430,11],[429,11],[431,11],[432,11],[434,11],[435,12],[436,11],[437,11],[438,11],[439,11],[440,12],[441,11],[442,11],[443,11],[444,11],[445,11],[446,11],[448,11],[449,12],[450,11],[451,11],[452,11],[453,11],[454,11],[455,11],[456,11],[458,11],[459,11],[460,11],[461,11],[462,11],[463,11],[464,12],[465,11],[466,11],[467,11],[468,11],[469,11],[471,11],[472,12],[473,11],[474,12],[475,11],[476,11],[477,11],[478,11],[479,11],[481,11],[482,11],[484,12],[485,11],[486,11],[487,11],[489,11],[490,11],[491,11],[492,11],[493,11],[494,11],[495,11],[496,11],[497,11],[498,11],[499,11],[500,11],[501,11],[502,11],[504,11],[505,11],[506,11],[507,11],[508,11],[509,11],[510,12],[584,11],[585,11],[586,11],[511,11],[512,12],[513,11],[514,11],[515,11],[516,11],[517,11],[518,11],[519,11],[520,11],[521,11],[522,11],[523,11],[524,11],[525,11],[526,11],[527,11],[528,11],[529,11],[530,11],[531,11],[532,11],[533,11],[534,11],[535,11],[536,11],[537,11],[538,11],[539,11],[540,11],[541,11],[542,11],[543,11],[544,11],[545,11],[546,11],[547,11],[548,11],[549,11],[550,11],[551,11],[552,11],[553,12],[554,11],[555,11],[556,11],[557,11],[558,11],[559,11],[560,11],[561,11],[562,11],[563,11],[564,11],[565,11],[566,11],[567,11],[588,11],[589,11],[590,11],[591,11],[592,11],[593,11],[594,11],[595,11],[596,11],[597,11],[598,11],[599,11],[600,11],[568,11],[569,11],[570,11],[571,11],[572,11],[573,11],[574,11],[575,11],[576,11],[577,11],[578,11],[579,12],[580,11],[581,11],[582,11],[602,11],[603,11],[605,11],[604,12],[607,11],[608,15],[609,11],[615,11],[616,11],[617,11],[618,11],[619,11],[620,11],[621,11],[622,11],[623,11],[611,11],[612,11],[613,11],[625,16],[627,12],[628,11],[629,11],[631,11],[632,11],[633,12],[634,12],[636,11],[638,11],[639,11],[641,11],[642,12],[643,11],[644,11],[645,12],[646,11],[648,11],[649,11],[650,11],[651,11],[652,11],[653,12],[654,11],[655,11],[656,12],[657,11],[659,11],[660,11],[661,11],[663,11],[664,11],[665,11],[666,11],[667,11],[669,11],[670,11],[672,11],[673,11],[674,12],[676,17],[146,18],[680,19],[145,20],[144,21],[679,22],[148,23],[142,24],[150,25],[157,26],[140,27],[80,28],[151,29],[143,30],[403,31],[411,32],[417,33],[419,34],[433,35],[447,36],[457,37],[470,38],[480,39],[483,40],[488,41],[503,42],[682,43],[583,44],[587,45],[601,46],[606,47],[610,48],[404,49],[405,49],[406,49],[408,50],[407,49],[155,51],[156,52],[78,23],[158,53],[159,53],[160,53],[161,53],[162,53],[163,53],[164,53],[165,53],[166,53],[167,53],[168,53],[169,53],[170,53],[171,53],[172,53],[173,53],[174,53],[175,53],[176,54],[177,53],[178,53],[179,53],[180,53],[181,53],[182,53],[183,54],[184,53],[185,53],[186,53],[187,53],[188,53],[189,54],[190,53],[191,53],[192,53],[193,53],[194,53],[195,53],[196,53],[197,53],[198,53],[199,53],[200,53],[201,53],[202,53],[203,53],[204,53],[205,53],[206,53],[207,53],[208,53],[209,53],[210,53],[211,53],[212,53],[213,53],[214,53],[215,53],[216,53],[217,53],[218,53],[219,53],[220,53],[221,53],[222,53],[223,54],[224,53],[225,53],[226,53],[227,53],[228,53],[229,53],[230,53],[231,54],[232,53],[233,53],[234,53],[235,53],[236,53],[237,53],[238,53],[239,53],[240,53],[241,53],[242,54],[243,53],[244,53],[245,53],[246,53],[247,53],[248,53],[249,53],[250,53],[251,53],[252,53],[253,53],[254,53],[255,53],[256,53],[257,54],[258,53],[259,53],[260,53],[261,53],[262,53],[263,53],[264,53],[265,53],[266,53],[267,53],[268,53],[269,53],[270,53],[271,53],[272,53],[273,53],[274,53],[275,53],[276,53],[277,55],[278,53],[279,53],[280,53],[281,53],[282,53],[283,53],[284,53],[285,53],[286,53],[287,53],[288,53],[289,53],[290,53],[291,53],[292,53],[293,53],[294,53],[295,53],[296,53],[297,53],[298,53],[299,53],[300,53],[301,53],[302,53],[303,53],[304,53],[305,53],[306,53],[307,54],[308,53],[309,53],[310,53],[311,53],[312,54],[313,53],[399,56],[314,53],[315,54],[316,53],[317,53],[318,53],[319,53],[320,53],[321,53],[322,53],[323,53],[324,53],[325,53],[326,53],[327,53],[328,55],[329,53],[330,53],[331,53],[332,53],[333,53],[334,53],[335,53],[336,53],[337,53],[338,53],[339,53],[340,53],[341,53],[342,53],[343,57],[344,54],[345,53],[346,53],[347,54],[348,53],[349,53],[350,53],[351,53],[352,53],[353,53],[354,53],[355,53],[356,53],[357,53],[358,53],[359,53],[360,53],[361,53],[362,53],[363,53],[364,53],[365,53],[366,53],[367,53],[368,53],[369,53],[370,53],[371,53],[372,53],[373,53],[374,53],[375,53],[376,54],[377,53],[378,53],[379,53],[380,53],[381,53],[382,54],[383,53],[384,53],[385,53],[386,53],[387,53],[388,53],[389,53],[390,53],[391,53],[392,53],[393,53],[394,53],[395,53],[396,53],[397,54],[398,53],[75,23],[76,23],[77,23],[81,58],[82,58],[83,23],[85,59],[86,54],[87,60],[88,54],[89,54],[90,54],[99,61],[92,58],[138,62],[100,63],[102,64],[103,54],[104,58],[105,23],[95,65],[106,58],[107,54],[108,66],[109,59],[110,67],[111,68],[112,69],[113,61],[114,70],[115,63],[117,71],[120,72],[118,61],[122,73],[119,74],[121,23],[101,23],[98,63],[94,75],[123,58],[124,54],[125,54],[126,23],[127,23],[128,58],[116,58],[129,61],[96,54],[93,54],[130,23],[97,58],[131,58],[132,23],[133,58],[137,76],[136,58],[614,77],[624,78],[626,79],[630,80],[635,81],[637,82],[678,83],[640,84],[647,85],[658,86],[662,87],[668,88],[683,23],[684,23],[135,89],[686,90],[685,91],[671,92],[675,93],[677,94]],"version":"5.8.3"} \ No newline at end of file