diff --git a/README.md b/README.md deleted file mode 100644 index f45aee03..00000000 --- a/README.md +++ /dev/null @@ -1,2035 +0,0 @@ -# PlexSDK Typescript SDK 0.0.1 -The Typescript SDK for PlexSDK. -- API version: 0.0.1 -- SDK version: 0.0.1 -## Table of Contents -- [About the API](#requirements) -- [Installation](#installation) -- [Authentication](#authentication) - - [API Key](#api-key) -- [API Endpoint Services](#api-endpoint-services) -- [API Models](#api-models) -- [Sample Usage](#sample-usage) -- [PlexSDK Services](#plexsdk-services) -- [License](#license) -## About the API -An Open API Spec for interacting with Plex.tv and Plex Servers -## Installation -```sh -npm install plexjs -``` -## Authentication -To see whether an endpoint needs a specific type of authentication check the endpoint's documentation. -### API Key -The PlexSDK API uses API keys as a form of authentication. An API key is a unique identifier used to authenticate a user, developer, or a program that is calling the API. You can set the API key when initializing the SDK through the constructor: - -```Typescript -sdk = new PlexSDK('YOUR_API_KEY', 'YOUR_API_KEY_HEADER'); -``` - -If you omit `YOUR_API_KEY_HEADER`, the SDK default API key header will be `X-Plex-Token`. - -You can also set it for each service individually: -```Typescript -const sdk = new PlexSDK() -sdk.server.setApiKey('YOUR_API_KEY', 'YOUR_API_KEY_HEADER'); -``` -## Sample Usage -Here is a simple program demonstrating usage of this SDK. It can also be found in the `examples/src/index.ts` file in this directory. - -When running the sample make sure to use `npm install` to install all the dependencies. - -```Typescript -import { PlexSDK } from '@lukehagar/plexjs'; - - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server - .getServerCapabilities(); - console.log(result.data); -})(); - - -``` -# PlexSDK Services -A list of all services and services methods. -- Services - - - [Server](#server) - - - [Media](#media) - - - [Activities](#activities) - - - [Butler](#butler) - - - [Hubs](#hubs) - - - [Search](#search) - - - [Library](#library) - - - [Log](#log) - - - [Playlists](#playlists) - - - [Security](#security) - - - [Sessions](#sessions) - - - [Updater](#updater) - - - [Video](#video) -- [All Methods](#all-methods) - - -## Server - -| Method | Description| -| :-------- | :----------| -| [getServerCapabilities](#getservercapabilities) | Server Capabilities | -| [getServerPreferences](#getserverpreferences) | Get Server Preferences | -| [getAvailableClients](#getavailableclients) | Get Available Clients | -| [getDevices](#getdevices) | Get Devices | -| [getServerIdentity](#getserveridentity) | Get Server Identity | -| [getMyPlexAccount](#getmyplexaccount) | Get MyPlex Account | -| [getResizedPhoto](#getresizedphoto) | Get a Resized Photo | -| [getServerList](#getserverlist) | Get Server List | - - -## Media - -| Method | Description| -| :-------- | :----------| -| [markPlayed](#markplayed) | Mark Media Played | -| [markUnplayed](#markunplayed) | Mark Media Unplayed | -| [updatePlayProgress](#updateplayprogress) | Update Media Play Progress | - - -## Activities - -| Method | Description| -| :-------- | :----------| -| [getServerActivities](#getserveractivities) | Get Server Activities | -| [cancelServerActivities](#cancelserveractivities) | Cancel Server Activities | - - -## Butler - -| Method | Description| -| :-------- | :----------| -| [startAllTasks](#startalltasks) | Start all Butler tasks | -| [getButlerTasks](#getbutlertasks) | Get Butler tasks | -| [stopAllTasks](#stopalltasks) | Stop all Butler tasks | -| [startTask](#starttask) | Start a single Butler task | -| [stopTask](#stoptask) | Stop a single Butler task | - - -## Hubs - -| Method | Description| -| :-------- | :----------| -| [getGlobalHubs](#getglobalhubs) | Get Global Hubs | -| [getLibraryHubs](#getlibraryhubs) | Get library specific hubs | - - -## Search - -| Method | Description| -| :-------- | :----------| -| [performSearch](#performsearch) | Perform a search | -| [performVoiceSearch](#performvoicesearch) | Perform a voice search | -| [getSearchResults](#getsearchresults) | Get Search Results | - - -## Library - -| Method | Description| -| :-------- | :----------| -| [getFileHash](#getfilehash) | Get Hash Value | -| [getRecentlyAdded](#getrecentlyadded) | Get Recently Added | -| [getLibraries](#getlibraries) | Get All Libraries | -| [getLibrary](#getlibrary) | Get Library Details | -| [deleteLibrary](#deletelibrary) | Delete Library Section | -| [getLibraryItems](#getlibraryitems) | Get Library Items | -| [refreshLibrary](#refreshlibrary) | Refresh Library | -| [getLatestLibraryItems](#getlatestlibraryitems) | Get Latest Library Items | -| [getCommonLibraryItems](#getcommonlibraryitems) | Get Common Library Items | -| [getMetadata](#getmetadata) | Get Items Metadata | -| [getMetadataChildren](#getmetadatachildren) | Get Items Children | -| [getOnDeck](#getondeck) | Get On Deck | - - -## Log - -| Method | Description| -| :-------- | :----------| -| [logMultiLine](#logmultiline) | Logging a multi-line message | -| [logLine](#logline) | Logging a single line message. | -| [enablePaperTrail](#enablepapertrail) | Enabling Papertrail | - - -## Playlists - -| Method | Description| -| :-------- | :----------| -| [createPlaylist](#createplaylist) | Create a Playlist | -| [getPlaylists](#getplaylists) | Get All Playlists | -| [getPlaylist](#getplaylist) | Retrieve Playlist | -| [deletePlaylist](#deleteplaylist) | Deletes a Playlist | -| [updatePlaylist](#updateplaylist) | Update a Playlist | -| [getPlaylistContents](#getplaylistcontents) | Retrieve Playlist Contents | -| [clearPlaylistContents](#clearplaylistcontents) | Delete Playlist Contents | -| [addPlaylistContents](#addplaylistcontents) | Adding to a Playlist | -| [uploadPlaylist](#uploadplaylist) | Upload Playlist | - - -## Security - -| Method | Description| -| :-------- | :----------| -| [getTransientToken](#gettransienttoken) | Get a Transient Token. | -| [getSourceConnectionInformation](#getsourceconnectioninformation) | Get Source Connection Information | - - -## Sessions - -| Method | Description| -| :-------- | :----------| -| [getSessions](#getsessions) | Get Active Sessions | -| [getSessionHistory](#getsessionhistory) | Get Session History | -| [getTranscodeSessions](#gettranscodesessions) | Get Transcode Sessions | -| [stopTranscodeSession](#stoptranscodesession) | Stop a Transcode Session | - - -## Updater - -| Method | Description| -| :-------- | :----------| -| [getUpdateStatus](#getupdatestatus) | Querying status of updates | -| [checkForUpdates](#checkforupdates) | Checking for updates | -| [applyUpdates](#applyupdates) | Apply Updates | - - -## Video - -| Method | Description| -| :-------- | :----------| -| [startUniversalTranscode](#startuniversaltranscode) | Start Universal Transcode | -| [getTimeline](#gettimeline) | Get the timeline for a media item | - - - - -## All Methods - - -### **getServerCapabilities** -Server Capabilities -- HTTP Method: GET -- Endpoint: / - - -**Return Type** - -GetServerCapabilitiesResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getServerCapabilities(); - console.log(result.data); -})(); - -``` - -### **getServerPreferences** -Get Server Preferences -- HTTP Method: GET -- Endpoint: /:/prefs - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getServerPreferences(); - console.log(result.data); -})(); - -``` - -### **getAvailableClients** -Get Available Clients -- HTTP Method: GET -- Endpoint: /clients - - -**Return Type** - -GetAvailableClientsResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getAvailableClients(); - console.log(result.data); -})(); - -``` - -### **getDevices** -Get Devices -- HTTP Method: GET -- Endpoint: /devices - - -**Return Type** - -GetDevicesResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getDevices(); - console.log(result.data); -})(); - -``` - -### **getServerIdentity** -Get Server Identity -- HTTP Method: GET -- Endpoint: /identity - - -**Return Type** - -GetServerIdentityResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getServerIdentity(); - console.log(result.data); -})(); - -``` - -### **getMyPlexAccount** -Get MyPlex Account -- HTTP Method: GET -- Endpoint: /myplex/account - - -**Return Type** - -GetMyPlexAccountResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getMyPlexAccount(); - console.log(result.data); -})(); - -``` - -### **getResizedPhoto** -Get a Resized Photo -- HTTP Method: GET -- Endpoint: /photo/:/transcode - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| width | number | The width for the resized photo | -| height | number | The height for the resized photo | -| opacity | number | The opacity for the resized photo | -| blur | number | The width for the resized photo | -| minSize | [MinSize](/src/models/README.md#minsize) | images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. | -| upscale | [Upscale](/src/models/README.md#upscale) | allow images to be resized beyond native dimensions. | -| url | string | path to image within Plex | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getResizedPhoto( - 110, - 165, - 100, - 4000, - 1, - 1, - '/library/metadata/49564/thumb/1654258204', - ); - console.log(result.data); -})(); - -``` - -### **getServerList** -Get Server List -- HTTP Method: GET -- Endpoint: /servers - - -**Return Type** - -GetServerListResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.server.getServerList(); - console.log(result.data); -})(); - -``` - - -### **markPlayed** -Mark Media Played -- HTTP Method: GET -- Endpoint: /:/scrobble - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| key | number | The media key to mark as played | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.media.markPlayed(59398); - console.log(result.data); -})(); - -``` - -### **markUnplayed** -Mark Media Unplayed -- HTTP Method: GET -- Endpoint: /:/unscrobble - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| key | number | The media key to mark as Unplayed | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.media.markUnplayed(59398); - console.log(result.data); -})(); - -``` - -### **updatePlayProgress** -Update Media Play Progress -- HTTP Method: POST -- Endpoint: /:/progress - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| key | string | the media key | -| time | number | The time, in milliseconds, used to set the media playback progress. | -| state | string | The playback state of the media item. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.media.updatePlayProgress('key', 90469787.90055934, 'state'); - console.log(result.data); -})(); - -``` - - -### **getServerActivities** -Get Server Activities -- HTTP Method: GET -- Endpoint: /activities - - -**Return Type** - -GetServerActivitiesResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.activities.getServerActivities(); - console.log(result.data); -})(); - -``` - -### **cancelServerActivities** -Cancel Server Activities -- HTTP Method: DELETE -- Endpoint: /activities/{activityUUID} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| activityUuid | string | The UUID of the activity to cancel. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.activities.cancelServerActivities('activityUUID'); - console.log(result.data); -})(); - -``` - - -### **startAllTasks** -Start all Butler tasks -- HTTP Method: POST -- Endpoint: /butler - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.butler.startAllTasks(); - console.log(result.data); -})(); - -``` - -### **getButlerTasks** -Get Butler tasks -- HTTP Method: GET -- Endpoint: /butler - - -**Return Type** - -GetButlerTasksResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.butler.getButlerTasks(); - console.log(result.data); -})(); - -``` - -### **stopAllTasks** -Stop all Butler tasks -- HTTP Method: DELETE -- Endpoint: /butler - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.butler.stopAllTasks(); - console.log(result.data); -})(); - -``` - -### **startTask** -Start a single Butler task -- HTTP Method: POST -- Endpoint: /butler/{taskName} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| taskName | [TaskName](/src/models/README.md#taskname) | the name of the task to be started. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.butler.startTask('GenerateChapterThumbs'); - console.log(result.data); -})(); - -``` - -### **stopTask** -Stop a single Butler task -- HTTP Method: DELETE -- Endpoint: /butler/{taskName} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| taskName | [TaskName](/src/models/README.md#taskname) | The name of the task to be started. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.butler.stopTask('DeepMediaAnalysis'); - console.log(result.data); -})(); - -``` - - -### **getGlobalHubs** -Get Global Hubs -- HTTP Method: GET -- Endpoint: /hubs - - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| count | number | The number of items to return with each hub. | -| onlyTransient | [OnlyTransient](/src/models/README.md#onlytransient) | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.hubs.getGlobalHubs({ count: 56455806.18512213, onlyTransient: 1 }); - console.log(result.data); -})(); - -``` - -### **getLibraryHubs** -Get library specific hubs -- HTTP Method: GET -- Endpoint: /hubs/sections/{sectionId} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| count | number | The number of items to return with each hub. | -| onlyTransient | [OnlyTransient](/src/models/README.md#onlytransient) | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.hubs.getLibraryHubs(14224427.485252097, { - count: 59167335.01182026, - onlyTransient: 1, - }); - console.log(result.data); -})(); - -``` - - -### **performSearch** -Perform a search -- HTTP Method: GET -- Endpoint: /hubs/search - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| query | string | The query term | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | This gives context to the search, and can result in re-ordering of search result hubs | -| limit | number | The number of items to return per hub | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.search.performSearch('arnold', { - sectionId: 23503236.39517291, - limit: 5, - }); - console.log(result.data); -})(); - -``` - -### **performVoiceSearch** -Perform a voice search -- HTTP Method: GET -- Endpoint: /hubs/search/voice - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| query | string | The query term | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | This gives context to the search, and can result in re-ordering of search result hubs | -| limit | number | The number of items to return per hub | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.search.performVoiceSearch('dead+poop', { - sectionId: 49725001.21318659, - limit: 5, - }); - console.log(result.data); -})(); - -``` - -### **getSearchResults** -Get Search Results -- HTTP Method: GET -- Endpoint: /search - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| query | string | The search query string to use | - - - -**Return Type** - -GetSearchResultsResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.search.getSearchResults('110'); - console.log(result.data); -})(); - -``` - - -### **getFileHash** -Get Hash Value -- HTTP Method: GET -- Endpoint: /library/hashes - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| url | string | This is the path to the local file, must be prefixed by `file://` | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| type | number | Item type | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getFileHash('file://C:Image.png&type=13', { - type: 57131492.35348597, - }); - console.log(result.data); -})(); - -``` - -### **getRecentlyAdded** -Get Recently Added -- HTTP Method: GET -- Endpoint: /library/recentlyAdded - - -**Return Type** - -GetRecentlyAddedResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getRecentlyAdded(); - console.log(result.data); -})(); - -``` - -### **getLibraries** -Get All Libraries -- HTTP Method: GET -- Endpoint: /library/sections - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getLibraries(); - console.log(result.data); -})(); - -``` - -### **getLibrary** -Get Library Details -- HTTP Method: GET -- Endpoint: /library/sections/{sectionId} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| includeDetails | [IncludeDetails](/src/models/README.md#includedetails) | Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
| - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getLibrary(1000, { includeDetails: 42 }); - console.log(result.data); -})(); - -``` - -### **deleteLibrary** -Delete Library Section -- HTTP Method: DELETE -- Endpoint: /library/sections/{sectionId} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.deleteLibrary(1000); - console.log(result.data); -})(); - -``` - -### **getLibraryItems** -Get Library Items -- HTTP Method: GET -- Endpoint: /library/sections/{sectionId}/all - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| type | number | item type | -| filter | string | the filter parameter | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getLibraryItems(5918142.371238574, { - type: -7809061.492073655, - filter: 'filter', - }); - console.log(result.data); -})(); - -``` - -### **refreshLibrary** -Refresh Library -- HTTP Method: GET -- Endpoint: /library/sections/{sectionId}/refresh - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to refresh | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.refreshLibrary(96299696.9761284); - console.log(result.data); -})(); - -``` - -### **getLatestLibraryItems** -Get Latest Library Items -- HTTP Method: GET -- Endpoint: /library/sections/{sectionId}/latest - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | -| type | number | item type | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| filter | string | the filter parameter | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getLatestLibraryItems(92402469.6477915, -96400116.97826156, { - filter: 'filter', - }); - console.log(result.data); -})(); - -``` - -### **getCommonLibraryItems** -Get Common Library Items -- HTTP Method: GET -- Endpoint: /library/sections/{sectionId}/common - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sectionId | number | the Id of the library to query | -| type | number | item type | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| filter | string | the filter parameter | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getCommonLibraryItems(10111915.895296082, 55224735.92815569, { - filter: 'filter', - }); - console.log(result.data); -})(); - -``` - -### **getMetadata** -Get Items Metadata -- HTTP Method: GET -- Endpoint: /library/metadata/{ratingKey} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| ratingKey | number | the id of the library item to return the children of. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getMetadata(62182009.76385683); - console.log(result.data); -})(); - -``` - -### **getMetadataChildren** -Get Items Children -- HTTP Method: GET -- Endpoint: /library/metadata/{ratingKey}/children - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| ratingKey | number | the id of the library item to return the children of. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getMetadataChildren(11669243.106740937); - console.log(result.data); -})(); - -``` - -### **getOnDeck** -Get On Deck -- HTTP Method: GET -- Endpoint: /library/onDeck - - -**Return Type** - -GetOnDeckResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.library.getOnDeck(); - console.log(result.data); -})(); - -``` - - -### **logMultiLine** -Logging a multi-line message -- HTTP Method: POST -- Endpoint: /log - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.log.logMultiLine(); - console.log(result.data); -})(); - -``` - -### **logLine** -Logging a single line message. -- HTTP Method: GET -- Endpoint: /log - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| level | [Level](/src/models/README.md#level) | An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
| -| message | string | The text of the message to write to the log. | -| source | string | a string indicating the source of the message. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.log.logLine(2, 'message', 'source'); - console.log(result.data); -})(); - -``` - -### **enablePaperTrail** -Enabling Papertrail -- HTTP Method: GET -- Endpoint: /log/networked - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.log.enablePaperTrail(); - console.log(result.data); -})(); - -``` - - -### **createPlaylist** -Create a Playlist -- HTTP Method: POST -- Endpoint: /playlists - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| title | string | name of the playlist | -| type | [Type](/src/models/README.md#type) | type of playlist to create | -| smart | [Smart](/src/models/README.md#smart) | whether the playlist is smart or not | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| uri | string | the content URI for the playlist | -| playQueueId | number | the play queue to copy to a playlist | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.createPlaylist('title', 'audio', 42, { - uri: 'uri', - playQueueID: -22282333.505305633, - }); - console.log(result.data); -})(); - -``` - -### **getPlaylists** -Get All Playlists -- HTTP Method: GET -- Endpoint: /playlists/all - - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistType | [PlaylistType](/src/models/README.md#playlisttype) | limit to a type of playlist. | -| smart | [Smart](/src/models/README.md#smart) | type of playlists to return (default is all). | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.getPlaylists({ playlistType: 'photo', smart: 1 }); - console.log(result.data); -})(); - -``` - -### **getPlaylist** -Retrieve Playlist -- HTTP Method: GET -- Endpoint: /playlists/{playlistID} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.getPlaylist(25521232.224839047); - console.log(result.data); -})(); - -``` - -### **deletePlaylist** -Deletes a Playlist -- HTTP Method: DELETE -- Endpoint: /playlists/{playlistID} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.deletePlaylist(-60675901.030656695); - console.log(result.data); -})(); - -``` - -### **updatePlaylist** -Update a Playlist -- HTTP Method: PUT -- Endpoint: /playlists/{playlistID} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.updatePlaylist(65200160.70787519); - console.log(result.data); -})(); - -``` - -### **getPlaylistContents** -Retrieve Playlist Contents -- HTTP Method: GET -- Endpoint: /playlists/{playlistID}/items - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | -| type | number | the metadata type of the item to return | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.getPlaylistContents(62167005.120096, 2249491.135525167); - console.log(result.data); -})(); - -``` - -### **clearPlaylistContents** -Delete Playlist Contents -- HTTP Method: DELETE -- Endpoint: /playlists/{playlistID}/items - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.clearPlaylistContents(24703702.974021226); - console.log(result.data); -})(); - -``` - -### **addPlaylistContents** -Adding to a Playlist -- HTTP Method: PUT -- Endpoint: /playlists/{playlistID}/items - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| playlistId | number | the ID of the playlist | -| uri | string | the content URI for the playlist | -| playQueueId | number | the play queue to add to a playlist | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.addPlaylistContents(-3444881.095142722, 'library://..', 123); - console.log(result.data); -})(); - -``` - -### **uploadPlaylist** -Upload Playlist -- HTTP Method: POST -- Endpoint: /playlists/upload - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| path | string | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
| -| force | [Force](/src/models/README.md#force) | force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.playlists.uploadPlaylist('/home/barkley/playlist.m3u', 1); - console.log(result.data); -})(); - -``` - - -### **getTransientToken** -Get a Transient Token. -- HTTP Method: GET -- Endpoint: /security/token - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| type | [SecurityType](/src/models/README.md#securitytype) | `delegation` - This is the only supported `type` parameter. | -| scope | [Scope](/src/models/README.md#scope) | `all` - This is the only supported `scope` parameter. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.security.getTransientToken('delegation', 'all'); - console.log(result.data); -})(); - -``` - -### **getSourceConnectionInformation** -Get Source Connection Information -- HTTP Method: GET -- Endpoint: /security/resources - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| source | string | The source identifier with an included prefix. | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.security.getSourceConnectionInformation( - 'provider://provider-identifier', - ); - console.log(result.data); -})(); - -``` - - -### **getSessions** -Get Active Sessions -- HTTP Method: GET -- Endpoint: /status/sessions - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.sessions.getSessions(); - console.log(result.data); -})(); - -``` - -### **getSessionHistory** -Get Session History -- HTTP Method: GET -- Endpoint: /status/sessions/history/all - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.sessions.getSessionHistory(); - console.log(result.data); -})(); - -``` - -### **getTranscodeSessions** -Get Transcode Sessions -- HTTP Method: GET -- Endpoint: /transcode/sessions - - -**Return Type** - -GetTranscodeSessionsResponse - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.sessions.getTranscodeSessions(); - console.log(result.data); -})(); - -``` - -### **stopTranscodeSession** -Stop a Transcode Session -- HTTP Method: DELETE -- Endpoint: /transcode/sessions/{sessionKey} - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| sessionKey | string | the Key of the transcode session to stop | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.sessions.stopTranscodeSession('zz7llzqlx8w9vnrsbnwhbmep'); - console.log(result.data); -})(); - -``` - - -### **getUpdateStatus** -Querying status of updates -- HTTP Method: GET -- Endpoint: /updater/status - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.updater.getUpdateStatus(); - console.log(result.data); -})(); - -``` - -### **checkForUpdates** -Checking for updates -- HTTP Method: PUT -- Endpoint: /updater/check - - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| download | [Download](/src/models/README.md#download) | Indicate that you want to start download any updates found. | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.updater.checkForUpdates({ download: 'foo' }); - console.log(result.data); -})(); - -``` - -### **applyUpdates** -Apply Updates -- HTTP Method: PUT -- Endpoint: /updater/apply - - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| tonight | [Tonight](/src/models/README.md#tonight) | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | -| skip | [Skip](/src/models/README.md#skip) | Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.updater.applyUpdates({ tonight: 'foo', skip: 1 }); - console.log(result.data); -})(); - -``` - - -### **startUniversalTranscode** -Start Universal Transcode -- HTTP Method: GET -- Endpoint: /video/:/transcode/universal/start.mpd - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| hasMde | number | Whether the media item has MDE | -| path | string | The path to the media item to transcode | -| mediaIndex | number | The index of the media item to transcode | -| partIndex | number | The index of the part to transcode | -| protocol | string | The protocol to use for the transcode session | - -**Optional Parameters** - -Optional parameters are passed as part of the last parameter to the method. Ex. {optionalParam1 : 'value1', optionalParam2: 'value2'} - -| Name | Type| Description | -| :-------- | :----------| :----------| -| fastSeek | number | Whether to use fast seek or not | -| directPlay | number | Whether to use direct play or not | -| directStream | number | Whether to use direct stream or not | -| subtitleSize | number | The size of the subtitles | -| subtites | string | The subtitles | -| audioBoost | number | The audio boost | -| location | string | The location of the transcode session | -| mediaBufferSize | number | The size of the media buffer | -| session | string | The session ID | -| addDebugOverlay | number | Whether to add a debug overlay or not | -| autoAdjustQuality | number | Whether to auto adjust quality or not | - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.video.startUniversalTranscode( - -87516165.31957072, - 'path', - -62877687.452249065, - -23076170.49337977, - 'protocol', - { - fastSeek: -68282427.87913167, - directPlay: -74000014.76895301, - directStream: 84943482.78212723, - subtitleSize: -55237723.44813809, - subtites: 'subtites', - audioBoost: 29945312.780143052, - location: 'location', - mediaBufferSize: -16516185.759793341, - session: 'session', - addDebugOverlay: -10261279.500832424, - autoAdjustQuality: 32480614.034784466, - }, - ); - console.log(result.data); -})(); - -``` - -### **getTimeline** -Get the timeline for a media item -- HTTP Method: GET -- Endpoint: /:/timeline - -**Required Parameters** - -| Name | Type| Description | -| :-------- | :----------| :----------| -| ratingKey | number | The rating key of the media item | -| key | string | The key of the media item to get the timeline for | -| state | [State](/src/models/README.md#state) | The state of the media item | -| hasMde | number | Whether the media item has MDE | -| time | number | The time of the media item | -| duration | number | The duration of the media item | -| context | string | The context of the media item | -| playQueueItemId | number | The play queue item ID of the media item | -| playBackTime | number | The playback time of the media item | -| row | number | The row of the media item | - - - -**Return Type** - -Returns a dict object. - -**Example Usage Code Snippet** -```Typescript -import { PlexSDK } from './src'; - -const sdk = new PlexSDK({ apiKey: process.env.PLEXSDK_API_KEY_TOKEN }); - -(async () => { - const result = await sdk.video.getTimeline( - -32608281.350922346, - 'key', - 'stopped', - -74699884.18136695, - -66756517.26572518, - -24893130.84645444, - 'context', - -75734154.35564606, - -89175857.3275879, - -15877259.38555336, - ); - console.log(result.data); -})(); - -``` - - - - -## License -License: MIT. See license in LICENSE. -