Files
plexjs/docs/sdks/general/README.md
speakeasybot 25ed9aa97d ## Typescript SDK Changes Detected:
* `plex-api.general.getServerInfo()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.general.getSourceConnectionInformation()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.general.getTransientToken()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.events.getNotifications()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.events.connectWebSocket()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.preferences.setPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.preferences.getPreference()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.rate.setRating()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.timeline.markPlayed()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.timeline.report()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.timeline.unscrobble()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.activities.cancelActivity()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.butler.stopTask()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.butler.startTask()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.getDownloadQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.addDownloadQueueItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.listDownloadQueueItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.getItemDecision()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.getDownloadQueueMedia()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.removeDownloadQueueItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.getDownloadQueueItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.downloadQueue.restartProcessingDownloadQueueItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getAllHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getContinueWatching()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getHubItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getPromotedHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getMetadataHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getPostplayHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getRelatedHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.getSectionHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.resetSectionDefaults()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.listHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.createCustomHub()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.moveHub()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.deleteCustomHub()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.hubs.updateHubVisibility()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.search.searchHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.search.voiceSearchHubs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getLibraryItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.ingestTransientItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getLibraryMatches()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.optimizeDatabase()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getRandomArtwork()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.addSection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getSectionsPrefs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.refreshSectionsMetadata()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getTags()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteMetadataItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.editMetadataItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.detectAds()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getAllItemLeaves()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.analyzeMetadata()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.generateThumbs()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.detectCredits()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getExtras()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.addExtras()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getFile()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.startBifGeneration()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.detectIntros()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.createMarker()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.matchItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.listMatches()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.mergeItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.listSonicallySimilar()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.setItemPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.refreshItemsMetadata()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getRelatedItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.listSimilar()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.splitItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.addSubtitles()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getItemTree()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.unmatch()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.listTopUsers()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.detectVoiceActivity()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getAugmentationStatus()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.setStreamSelection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getPerson()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.listPersonMedia()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteLibrarySection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getLibraryDetails()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.editSection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.updateItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.startAnalysis()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.autocomplete()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getCollections()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getCommon()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.emptyTrash()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getSectionFilters()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getFirstCharacters()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteIndexes()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteIntros()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getSectionPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.setSectionPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.cancelRefresh()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.refreshSection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getAvailableSorts()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getStreamLevels()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getStreamLoudness()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getChapterImage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.setItemArtwork()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.updateItemArtwork()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteMarker()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.editMarker()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteMediaItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getPartIndex()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteCollection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getSectionImage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.deleteStream()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getStream()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.setStreamOffset()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getItemArtwork()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getMediaPart()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.library.getImageFromBif()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.collections.createCollection()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.createDvr()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.deleteDvr()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.getDvr()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.deleteLineup()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.addLineup()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.setDvrPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.stopDvrReload()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.reloadGuide()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.tuneChannel()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.removeDeviceFromDvr()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.dvRs.addDeviceToDvr()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.computeChannelMap()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.getChannels()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.getLineup()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.getLineupChannels()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.getCountriesLineups()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.getCountryRegions()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.epg.listLineups()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.liveTv.getLiveTvSession()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.liveTv.getSessionPlaylistIndex()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.liveTv.getSessionSegment()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.log.writeMessage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.log.enablePapertrail()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.getAvailableGrabbers()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.addDevice()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.removeDevice()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.getDeviceDetails()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.modifyDevice()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.setChannelmap()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.getDevicesChannels()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.setDevicePreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.stopScan()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.scan()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.devices.getThumb()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.provider.addProvider()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.provider.deleteMediaProvider()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.getAllSubscriptions()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.createSubscription()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.getTemplate()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.cancelGrab()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.deleteSubscription()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.getSubscription()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.editSubscriptionPreferences()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.subscriptions.reorderSubscription()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.transcoder.transcodeImage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.transcoder.makeDecision()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.transcoder.triggerFallback()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.transcoder.transcodeSubtitles()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.transcoder.startTranscodeSession()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playlist.listPlaylists()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playlist.getPlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playlist.getPlaylistItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.createPlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.uploadPlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.deletePlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.updatePlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.getPlaylistGenerators()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.clearPlaylistItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.addPlaylistItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.deletePlaylistItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.getPlaylistGenerator()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.modifyPlaylistGenerator()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.getPlaylistGeneratorItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.movePlaylistItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryPlaylists.refreshPlaylist()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.createPlayQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.getPlayQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.addToPlayQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.clearPlayQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.resetPlayQueue()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.shuffle()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.unshuffle()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.deletePlayQueueItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.playQueue.movePlayQueueItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.ultraBlur.getColors()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.ultraBlur.getImage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.status.listPlaybackHistory()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.status.terminateSession()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.status.deleteHistory()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.status.getHistoryItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.updater.applyUpdates()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.updater.checkUpdates()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getCollectionItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getMetadataItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getAlbums()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.listContent()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getAllLeaves()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getArts()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getCategories()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getCluster()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getSonicPath()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getFolders()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.listMoments()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getSonicallySimilar()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.content.getCollectionImage()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryCollections.addCollectionItems()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryCollections.deleteCollectionItem()`:  `request` **Changed** **Breaking** ⚠️
* `plex-api.libraryCollections.moveCollectionItem()`:  `request` **Changed** **Breaking** ⚠️
2025-10-12 05:53:52 +00:00

25 KiB
Raw Blame History

General

(general)

Overview

General endpoints for basic PMS operation not specific to any media provider

Available Operations

getServerInfo

Information about this PMS setup and configuration

Example Usage

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.general.getServerInfo({});

  console.log(result);
}

run();

Standalone function

The standalone function version of this method:

import { PlexAPICore } from "@lukehagar/plexjs/core.js";
import { generalGetServerInfo } from "@lukehagar/plexjs/funcs/generalGetServerInfo.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",
});

async function run() {
  const res = await generalGetServerInfo(plexAPI, {});
  if (res.ok) {
    const { value: result } = res;
    console.log(result);
  } else {
    console.log("generalGetServerInfo failed:", res.error);
  }
}

run();

Parameters

Parameter Type Required Description
request operations.GetServerInfoRequest ✔️ The request object to use for the request.
options RequestOptions Used to set various options for making HTTP requests.
options.fetchOptions RequestInit 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 Enables retrying HTTP requests under certain failure conditions.

Response

Promise<operations.GetServerInfoResponse>

Errors

Error Type Status Code Content Type
errors.SDKError 4XX, 5XX */*

getIdentity

Get details about this PMS's identity

Example Usage

import { PlexAPI } from "@lukehagar/plexjs";

const plexAPI = new PlexAPI();

async function run() {
  const result = await plexAPI.general.getIdentity();

  console.log(result);
}

run();

Standalone function

The standalone function version of this method:

import { PlexAPICore } from "@lukehagar/plexjs/core.js";
import { generalGetIdentity } from "@lukehagar/plexjs/funcs/generalGetIdentity.js";

// Use `PlexAPICore` for best tree-shaking performance.
// You can create one instance of it to use across an application.
const plexAPI = new PlexAPICore();

async function run() {
  const res = await generalGetIdentity(plexAPI);
  if (res.ok) {
    const { value: result } = res;
    console.log(result);
  } else {
    console.log("generalGetIdentity failed:", res.error);
  }
}

run();

Parameters

Parameter Type Required Description
options RequestOptions Used to set various options for making HTTP requests.
options.fetchOptions RequestInit 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 Enables retrying HTTP requests under certain failure conditions.

Response

Promise<operations.GetIdentityResponse>

Errors

Error Type Status Code Content Type
errors.SDKError 4XX, 5XX */*

getSourceConnectionInformation

If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.

Example Usage

import { PlexAPI } from "@lukehagar/plexjs";
import { Accepts, BoolInt } 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.general.getSourceConnectionInformation({
    source: "server://client-identifier",
    refresh: BoolInt.One,
  });

  console.log(result);
}

run();

Standalone function

The standalone function version of this method:

import { PlexAPICore } from "@lukehagar/plexjs/core.js";
import { generalGetSourceConnectionInformation } from "@lukehagar/plexjs/funcs/generalGetSourceConnectionInformation.js";
import { Accepts, BoolInt } 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",
});

async function run() {
  const res = await generalGetSourceConnectionInformation(plexAPI, {
    source: "server://client-identifier",
    refresh: BoolInt.One,
  });
  if (res.ok) {
    const { value: result } = res;
    console.log(result);
  } else {
    console.log("generalGetSourceConnectionInformation failed:", res.error);
  }
}

run();

Parameters

Parameter Type Required Description
request operations.GetSourceConnectionInformationRequest ✔️ The request object to use for the request.
options RequestOptions Used to set various options for making HTTP requests.
options.fetchOptions RequestInit 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 Enables retrying HTTP requests under certain failure conditions.

Response

Promise<operations.GetSourceConnectionInformationResponse>

Errors

Error Type Status Code Content Type
errors.SDKError 4XX, 5XX */*

getTransientToken

This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. Note: This endpoint responds to all HTTP verbs but POST in preferred

Example Usage

import { PlexAPI } from "@lukehagar/plexjs";
import { GetTransientTokenScope, GetTransientTokenType } from "@lukehagar/plexjs/sdk/models/operations";
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.general.getTransientToken({
    type: GetTransientTokenType.Delegation,
    scope: GetTransientTokenScope.All,
  });

  console.log(result);
}

run();

Standalone function

The standalone function version of this method:

import { PlexAPICore } from "@lukehagar/plexjs/core.js";
import { generalGetTransientToken } from "@lukehagar/plexjs/funcs/generalGetTransientToken.js";
import { GetTransientTokenScope, GetTransientTokenType } 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: "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 res = await generalGetTransientToken(plexAPI, {
    type: GetTransientTokenType.Delegation,
    scope: GetTransientTokenScope.All,
  });
  if (res.ok) {
    const { value: result } = res;
    console.log(result);
  } else {
    console.log("generalGetTransientToken failed:", res.error);
  }
}

run();

Parameters

Parameter Type Required Description
request operations.GetTransientTokenRequest ✔️ The request object to use for the request.
options RequestOptions Used to set various options for making HTTP requests.
options.fetchOptions RequestInit 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 Enables retrying HTTP requests under certain failure conditions.

Response

Promise<operations.GetTransientTokenResponse>

Errors

Error Type Status Code Content Type
errors.SDKError 4XX, 5XX */*