Compare commits

...

40 Commits

Author SHA1 Message Date
speakeasybot
162b3b3d13 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.285.0 2024-05-08 18:17:06 +00:00
speakeasybot
3dff2b9225 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.283.1 2024-05-08 00:22:37 +00:00
speakeasybot
d6d9c46f51 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.280.1 2024-05-07 00:27:35 +00:00
speakeasybot
f79b24ee0e ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.279.0 2024-05-06 00:28:31 +00:00
speakeasybot
78c540ebf4 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.279.0 2024-05-05 00:29:51 +00:00
speakeasybot
3fc9856c81 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.279.0 2024-05-04 00:26:43 +00:00
speakeasybot
bc1fa68557 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.277.8 2024-05-03 00:29:29 +00:00
speakeasybot
182d88f7f1 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.277.4 2024-05-02 00:27:06 +00:00
speakeasybot
300cbb21cd ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.277.4 2024-05-01 00:29:38 +00:00
speakeasybot
53f3bfd615 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.277.0 2024-04-30 00:28:14 +00:00
speakeasybot
92b22220f1 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.276.0 2024-04-29 00:28:07 +00:00
speakeasybot
a42f887042 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.276.0 2024-04-28 00:30:12 +00:00
speakeasybot
8b9c5c6e41 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.276.0 2024-04-27 00:26:39 +00:00
speakeasybot
eab41f5f41 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.274.1 2024-04-26 00:27:29 +00:00
speakeasybot
e038f1fdcf ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.274.1 2024-04-25 00:31:21 +00:00
Luke Hagar
835f4244ec regenerated 2024-04-24 15:51:11 -05:00
speakeasybot
287c5cb9ad ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.269.1 2024-04-23 00:27:12 +00:00
Luke Hagar
521174faf5 Update jsr.json 2024-04-22 11:37:36 -05:00
Luke Hagar
6fe948fa1e Update publish-jsr.yaml 2024-04-22 11:35:59 -05:00
Luke Hagar
4abb238f51 Update publish-jsr.yaml 2024-04-22 11:35:41 -05:00
Luke Hagar
c10b6af7de Merge branch 'main' of https://github.com/LukeHagar/plexjs 2024-04-22 11:34:22 -05:00
Luke Hagar
6bec4430ff Separated publish action 2024-04-22 11:34:20 -05:00
Luke Hagar
3fe4aee2ea Update speakeasy_sdk_generation.yml 2024-04-22 11:31:20 -05:00
speakeasybot
5b4a51bee7 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.267.2 2024-04-22 16:28:00 +00:00
Luke Hagar
b0cc884d46 Merge branch 'main' of https://github.com/LukeHagar/plexjs 2024-04-22 11:23:11 -05:00
Luke Hagar
a1dc07ae78 Updated generation to also publish to JSR 2024-04-22 11:22:58 -05:00
Luke Hagar
d100297e1d CodeSee is gone 2024-04-22 11:20:58 -05:00
Luke Hagar
14f7d530ec Updated workflow artifacts 2024-04-22 11:20:16 -05:00
Luke Hagar
622219b018 Removed legacy artifacts 2024-04-22 11:20:01 -05:00
speakeasybot
c4dd496e24 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.267.2 2024-04-22 16:16:50 +00:00
speakeasybot
cdda7f840f ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.267.0 2024-04-20 00:26:17 +00:00
speakeasybot
2c04752d88 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.260.6 2024-04-19 00:28:46 +00:00
speakeasybot
242d7d78f2 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.257.1 2024-04-18 00:28:19 +00:00
speakeasybot
779aa2dc9e ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.252.0 2024-04-13 00:26:21 +00:00
speakeasybot
0d73a769fb ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.231.1 2024-04-02 00:28:18 +00:00
speakeasybot
eeadc8c329 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.228.1 2024-03-29 16:38:38 +00:00
speakeasybot
dbe2e37bba ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.227.0 2024-03-27 00:27:27 +00:00
speakeasybot
6c314bea48 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.213.0 2024-03-20 00:27:47 +00:00
speakeasybot
9e28d57f15 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.209.3 2024-03-15 15:04:11 +00:00
Luke Hagar
9da9389549 migrated speakeasy to v15 2024-03-15 09:56:46 -05:00
160 changed files with 3356 additions and 3236 deletions

View File

@@ -1,23 +0,0 @@
# This workflow was added by CodeSee. Learn more at https://codesee.io/
# This is v2.0 of this workflow file
on:
push:
branches:
- main
pull_request_target:
types: [opened, synchronize, reopened]
name: CodeSee
permissions: read-all
jobs:
codesee:
runs-on: ubuntu-latest
continue-on-error: true
name: Analyze the repo with CodeSee
steps:
- uses: Codesee-io/codesee-action@v2
with:
codesee-token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }}
codesee-url: https://app.codesee.io

33
.github/workflows/publish-jsr.yaml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Publish to JSR
permissions:
checks: write
contents: write
pull-requests: write
statuses: write
on:
workflow_dispatch:
push:
branches:
- main
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Publish package
run: npx jsr publish

View File

@@ -4,7 +4,8 @@ permissions:
contents: write
pull-requests: write
statuses: write
"on":
on:
workflow_dispatch:
inputs:
force:
@@ -13,17 +14,13 @@ permissions:
default: false
schedule:
- cron: 0 0 * * *
jobs:
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/sdk-generation.yaml@v14
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
with:
force: ${{ github.event.inputs.force }}
languages: |
- typescript
mode: direct
openapi_docs: |
- https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
publish_typescript: true
speakeasy_version: latest
secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,5 +1,4 @@
/*
/docs/**/*.md
**/*
!/**/*.ts
!/**/*.js
!/**/*.map

View File

@@ -1,26 +1,32 @@
lockVersion: 2.0.0
id: 16f22cbf-f23f-4419-8924-3a4b06381947
management:
docChecksum: e34dac84738ebf2d447ea2b9055a6eeb
docChecksum: 543cb95355401d2e3c2ba11a50d9dd94
docVersion: 0.0.3
speakeasyVersion: 1.209.2
generationVersion: 2.281.2
releaseVersion: 0.10.2
configChecksum: 15703b0c823b93c6420c88f60683a77c
speakeasyVersion: 1.285.0
generationVersion: 2.326.3
releaseVersion: 0.15.0
configChecksum: 128cbd9ff9106ca973e497a43ea70dc4
repoURL: https://github.com/LukeHagar/plexjs.git
repoSubDirectory: .
installationURL: https://github.com/LukeHagar/plexjs
published: true
features:
typescript:
additionalDependencies: 0.1.0
constsAndDefaults: 0.1.5
core: 3.6.1
core: 3.9.3
flattening: 2.81.1
globalSecurity: 2.82.6
globalSecurity: 2.82.9
globalSecurityCallbacks: 0.1.0
globalSecurityFlattening: 0.1.0
globalServerURLs: 2.82.4
globals: 2.82.1
methodServerURLs: 2.82.1
nameOverrides: 2.81.1
responseFormat: 0.2.2
nameOverrides: 2.81.2
responseFormat: 0.2.3
sdkHooks: 0.1.0
unions: 2.85.4
generatedFiles:
- src/sdk/server.ts
- src/sdk/media.ts
@@ -41,6 +47,7 @@ generatedFiles:
- .eslintrc.js
- .npmignore
- RUNTIMES.md
- jsr.json
- package.json
- src/index.ts
- src/lib/base64.ts
@@ -90,7 +97,6 @@ generatedFiles:
- src/models/operations/getlibraries.ts
- src/models/operations/getlibrary.ts
- src/models/operations/deletelibrary.ts
- src/models/operations/getlibraryitems.ts
- src/models/operations/refreshlibrary.ts
- src/models/operations/searchlibrary.ts
- src/models/operations/getmetadata.ts
@@ -313,19 +319,6 @@ generatedFiles:
- docs/models/operations/getlibraryresponse.md
- docs/models/operations/deletelibraryrequest.md
- docs/models/operations/deletelibraryresponse.md
- docs/models/operations/tag.md
- docs/models/operations/getlibraryitemsrequest.md
- docs/models/operations/getlibraryitemspart.md
- docs/models/operations/getlibraryitemsmedia.md
- docs/models/operations/getlibraryitemsgenre.md
- docs/models/operations/getlibraryitemscountry.md
- docs/models/operations/getlibraryitemsdirector.md
- docs/models/operations/getlibraryitemswriter.md
- docs/models/operations/getlibraryitemsrole.md
- docs/models/operations/getlibraryitemsmetadata.md
- docs/models/operations/getlibraryitemsmediacontainer.md
- docs/models/operations/getlibraryitemsresponsebody.md
- docs/models/operations/getlibraryitemsresponse.md
- docs/models/operations/refreshlibraryrequest.md
- docs/models/operations/refreshlibraryresponse.md
- docs/models/operations/type.md

View File

@@ -12,13 +12,15 @@ generation:
auth:
oAuth2ClientCredentialsEnabled: false
typescript:
version: 0.10.2
version: 0.15.0
additionalDependencies:
dependencies: {}
devDependencies: {}
peerDependencies: {}
additionalPackageJSON: {}
author: LukeHagar
clientServerStatusCodesAsErrors: true
enumFormat: enum
flattenGlobalSecurity: true
imports:
option: openapi
@@ -30,6 +32,7 @@ typescript:
webhooks: models/webhooks
inputModelSuffix: input
maxMethodParams: 4
methodArguments: require-security-and-request
outputModelSuffix: output
packageName: '@lukehagar/plexjs'
responseFormat: envelope

23
.speakeasy/workflow.lock Normal file
View File

@@ -0,0 +1,23 @@
speakeasyVersion: 1.285.0
sources:
my-source: {}
targets:
plexjs:
source: my-source
outLocation: /github/workspace/repo
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
my-source:
inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
targets:
plexjs:
target: typescript
source: my-source
publish:
npm:
token: $NPM_TOKEN
codeSamples:
output: codeSamples.yaml

15
.speakeasy/workflow.yaml Normal file
View File

@@ -0,0 +1,15 @@
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
my-source:
inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
targets:
plexjs:
target: typescript
source: my-source
codeSamples:
output: codeSamples.yaml
publish:
npm:
token: $NPM_TOKEN

View File

@@ -1,26 +0,0 @@
.PHONY: *
all: speakeasy
speakeasy: check-speakeasy
speakeasy generate sdk --lang typescript -o . -s ./openapi.yaml
speakeasy-validate: check-speakeasy
speakeasy validate openapi -s ./openapi.yaml
openapi:
curl https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml > ./openapi.yaml
# This will replace the generation source in your workflow file with your local schema path
generate-from-local:
@if ! which sed >/dev/null; then \
echo "sed is not installed. Please install it using the following command:"; \
echo "For Ubuntu/Debian: apt-get install sed"; \
echo "For macOS: sed is pre-installed"; \
exit 1; \
fi
@sed -i '' '/openapi_docs: |/{n;s|-.*|- ./openapi.yaml|;}' ./.github/workflows/speakeasy_sdk_generation.yml
check-speakeasy:
@command -v speakeasy >/dev/null 2>&1 || { echo >&2 "speakeasy CLI is not installed. Please install before continuing."; exit 1; }

114
README.md
View File

@@ -31,12 +31,13 @@ yarn add @lukehagar/plexjs
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -103,7 +104,6 @@ run();
* [getLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries
* [getLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details
* [deleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section
* [getLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
* [refreshLibrary](docs/sdks/library/README.md#refreshlibrary) - Refresh Library
* [searchLibrary](docs/sdks/library/README.md#searchlibrary) - Search Library
* [getMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata
@@ -173,14 +173,15 @@ Validation errors can also occur when either method arguments or data returned f
import { PlexAPI } from "@lukehagar/plexjs";
import * as errors from "@lukehagar/plexjs/models/errors";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
async function run() {
let result;
try {
result = await sdk.server.getServerCapabilities();
result = await plexAPI.server.getServerCapabilities();
} catch (err) {
switch (true) {
case err instanceof errors.SDKValidationError: {
@@ -223,13 +224,14 @@ You can override the default server globally by passing a server index to the `s
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
serverIdx: 0,
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
serverIdx: 0,
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -253,13 +255,14 @@ The default server can also be overridden globally by passing a URL to the `serv
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
serverURL: "{protocol}://{ip}:{port}",
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
serverURL: "{protocol}://{ip}:{port}",
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -275,13 +278,12 @@ The server URL can also be overridden on a per-operation basis, provided a serve
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "Postman",
});
async function run() {
const sdk = new PlexAPI();
const xPlexClientIdentifier = "<value>";
const strong = false;
const result = await sdk.plex.getPin(xPlexClientIdentifier, strong, {
const result = await plexAPI.plex.getPin(false, "Postman", {
serverURL: "https://plex.tv/api/v2",
});
@@ -324,7 +326,7 @@ const httpClient = new HTTPClient({
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000);
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
@@ -358,12 +360,13 @@ To authenticate with the API the `accessToken` parameter must be set when initia
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -380,6 +383,47 @@ run();
For supported JavaScript runtimes, please consult [RUNTIMES.md](RUNTIMES.md).
<!-- End Requirements [requirements] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
A parameter is configured globally. This parameter must be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `X-Plex-Client-Identifier` to `"Postman"` at SDK initialization and then you do not have to pass the same value on calls to operations like `getPin`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration.
### Available Globals
The following global parameter is available. The required parameter must be set when you initialize the SDK client.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| xPlexClientIdentifier | string | ✔️ | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
|
### Example
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "Postman",
});
async function run() {
const result = await plexAPI.plex.getPin(false, "Postman");
// Handle the result
console.log(result);
}
run();
```
<!-- End Global Parameters [global-parameters] -->
<!-- Placeholder for Future Speakeasy SDK Sections -->
# Development

View File

@@ -248,4 +248,274 @@ Based on:
### Generated
- [typescript v0.10.2] .
### Releases
- [NPM v0.10.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.2 - .
- [NPM v0.10.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.2 - .
## 2024-03-15 15:02:11
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.209.3 (2.281.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.3] .
### Releases
- [NPM v0.10.3] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.3 - .
## 2024-03-20 00:25:49
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.213.0 (2.283.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.4] .
### Releases
- [NPM v0.10.4] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.4 - .
## 2024-03-27 00:25:29
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.227.0 (2.291.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.11.0] .
### Releases
- [NPM v0.11.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.11.0 - .
## 2024-03-29 16:36:42
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.228.1 (2.292.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.0] .
### Releases
- [NPM v0.12.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.0 - .
## 2024-04-02 00:26:20
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.231.1 (2.295.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.1] .
### Releases
- [NPM v0.12.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.1 - .
## 2024-04-13 00:23:00
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.252.0 (2.306.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.2] .
### Releases
- [NPM v0.12.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.2 - .
## 2024-04-18 00:26:16
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.257.1 (2.308.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.3] .
### Releases
- [NPM v0.12.3] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.3 - .
## 2024-04-19 00:26:47
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.260.6 (2.311.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.13.0] .
### Releases
- [NPM v0.13.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.0 - .
## 2024-04-20 00:26:02
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.267.0 (2.312.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.13.0] .
### Releases
- [NPM v0.13.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.0 - .
## 2024-04-22 16:14:48
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.267.2 (2.312.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.13.1] .
### Releases
- [NPM v0.13.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.1 - .
## 2024-04-22 16:25:57
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.267.2 (2.312.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.13.2] .
### Releases
- [NPM v0.13.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.2 - .
## 2024-04-23 00:26:56
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.269.1 (2.312.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.13.2] .
### Releases
- [NPM v0.13.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.2 - .
## 2024-04-25 00:28:39
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.274.1 (2.314.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.0] .
### Releases
- [NPM v0.14.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.0 - .
## 2024-04-26 00:27:03
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.274.1 (2.314.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.0] .
### Releases
- [NPM v0.14.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.0 - .
## 2024-04-27 00:26:14
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.0] .
### Releases
- [NPM v0.14.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.0 - .
## 2024-04-28 00:29:48
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.0] .
### Releases
- [NPM v0.14.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.0 - .
## 2024-04-29 00:27:42
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.0] .
### Releases
- [NPM v0.14.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.0 - .
## 2024-04-30 00:26:07
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.277.0 (2.317.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.1] .
### Releases
- [NPM v0.14.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.1 - .
## 2024-05-01 00:29:15
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.277.4 (2.318.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.1] .
### Releases
- [NPM v0.14.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.1 - .
## 2024-05-02 00:26:42
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.277.4 (2.318.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.1] .
### Releases
- [NPM v0.14.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.1 - .
## 2024-05-03 00:27:14
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.277.8 (2.319.10) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-04 00:26:20
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-05 00:29:26
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-06 00:28:07
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-07 00:27:12
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.280.1 (2.322.5) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-08 00:22:14
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.283.1 (2.324.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.14.2] .
### Releases
- [NPM v0.14.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.14.2 - .
## 2024-05-08 18:14:57
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.285.0 (2.326.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.15.0] .
### Releases
- [NPM v0.15.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.15.0 - .

View File

@@ -2,12 +2,13 @@
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);

1300
codeSamples.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
## Fields
| Field | Type | Required | Description |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tonight` | [operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | 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` | [operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. |
| Field | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tonight` | [operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | 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 | 1 |
| `skip` | [operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. | 1 |

View File

@@ -3,6 +3,6 @@
## Fields
| Field | Type | Required | Description |
| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
| `activityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. |
| Field | Type | Required | Description | Example |
| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ |
| `activityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e |

View File

@@ -3,6 +3,6 @@
## Fields
| Field | Type | Required | Description |
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| `download` | [operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. |
| Field | Type | Required | Description | Example |
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| `download` | [operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 |

View File

@@ -1,8 +0,0 @@
# GetLibraryItemsCountry
## Fields
| Field | Type | Required | Description | Example |
| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ |
| `tag` | *string* | :heavy_minus_sign: | N/A | United States of America |

View File

@@ -1,8 +0,0 @@
# GetLibraryItemsDirector
## Fields
| Field | Type | Required | Description | Example |
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
| `tag` | *string* | :heavy_minus_sign: | N/A | James Cameron |

View File

@@ -1,8 +0,0 @@
# GetLibraryItemsGenre
## Fields
| Field | Type | Required | Description | Example |
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
| `tag` | *string* | :heavy_minus_sign: | N/A | Adventure |

View File

@@ -1,21 +0,0 @@
# GetLibraryItemsMedia
## Fields
| Field | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | *number* | :heavy_minus_sign: | N/A | 119534 |
| `duration` | *number* | :heavy_minus_sign: | N/A | 11558112 |
| `bitrate` | *number* | :heavy_minus_sign: | N/A | 25025 |
| `width` | *number* | :heavy_minus_sign: | N/A | 3840 |
| `height` | *number* | :heavy_minus_sign: | N/A | 2072 |
| `aspectRatio` | *number* | :heavy_minus_sign: | N/A | 1.85 |
| `audioChannels` | *number* | :heavy_minus_sign: | N/A | 6 |
| `audioCodec` | *string* | :heavy_minus_sign: | N/A | eac3 |
| `videoCodec` | *string* | :heavy_minus_sign: | N/A | hevc |
| `videoResolution` | *string* | :heavy_minus_sign: | N/A | 4k |
| `container` | *string* | :heavy_minus_sign: | N/A | mkv |
| `videoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p |
| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 |
| `part` | [operations.GetLibraryItemsPart](../../models/operations/getlibraryitemspart.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"id": 119542,<br/>"key": "/library/parts/119542/1680457526/file.mkv",<br/>"duration": 11558112,<br/>"file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv",<br/>"size": 36158371307,<br/>"container": "mkv",<br/>"videoProfile": "main 10"<br/>}<br/>] |

File diff suppressed because one or more lines are too long

View File

@@ -1,64 +0,0 @@
# GetLibraryItemsMetadata
## Fields
| Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ratingKey` | *string* | :heavy_minus_sign: | N/A | 58683 |
| `key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683 |
| `guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5d7768ba96b655001fdc0408 |
| `studio` | *string* | :heavy_minus_sign: | N/A | 20th Century Studios |
| `type` | *string* | :heavy_minus_sign: | N/A | movie |
| `title` | *string* | :heavy_minus_sign: | N/A | Avatar: The Way of Water |
| `contentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 |
| `summary` | *string* | :heavy_minus_sign: | N/A | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home. |
| `rating` | *number* | :heavy_minus_sign: | N/A | 7.6 |
| `audienceRating` | *number* | :heavy_minus_sign: | N/A | 9.2 |
| `year` | *number* | :heavy_minus_sign: | N/A | 2022 |
| `tagline` | *string* | :heavy_minus_sign: | N/A | Return to Pandora. |
| `thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
| `art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
| `duration` | *number* | :heavy_minus_sign: | N/A | 11558112 |
| `originallyAvailableAt` | [RFCDate](../../types/rfcdate.md) | :heavy_minus_sign: | N/A | 2022-12-14 00:00:00 +0000 UTC |
| `addedAt` | *number* | :heavy_minus_sign: | N/A | 1680457607 |
| `updatedAt` | *number* | :heavy_minus_sign: | N/A | 1703239236 |
| `audienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright |
| `chapterSource` | *string* | :heavy_minus_sign: | N/A | media |
| `primaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58684 |
| `ratingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe |
| `grandparentRatingKey` | *string* | :heavy_minus_sign: | N/A | 66 |
| `grandparentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 |
| `grandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66 |
| `grandparentTitle` | *string* | :heavy_minus_sign: | N/A | Caprica |
| `grandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 |
| `grandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 |
| `grandparentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 |
| `media` | [operations.GetLibraryItemsMedia](../../models/operations/getlibraryitemsmedia.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"id": 119534,<br/>"duration": 11558112,<br/>"bitrate": 25025,<br/>"width": 3840,<br/>"height": 2072,<br/>"aspectRatio": 1.85,<br/>"audioChannels": 6,<br/>"audioCodec": "eac3",<br/>"videoCodec": "hevc",<br/>"videoResolution": "4k",<br/>"container": "mkv",<br/>"videoFrameRate": "24p",<br/>"videoProfile": "main 10",<br/>"Part": [<br/>{<br/>"id": 119542,<br/>"key": "/library/parts/119542/1680457526/file.mkv",<br/>"duration": 11558112,<br/>"file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv",<br/>"size": 36158371307,<br/>"container": "mkv",<br/>"videoProfile": "main 10"<br/>}<br/>]<br/>}<br/>] |
| `genre` | [operations.GetLibraryItemsGenre](../../models/operations/getlibraryitemsgenre.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"tag": "Adventure"<br/>}<br/>] |
| `country` | [operations.GetLibraryItemsCountry](../../models/operations/getlibraryitemscountry.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"tag": "United States of America"<br/>}<br/>] |
| `director` | [operations.GetLibraryItemsDirector](../../models/operations/getlibraryitemsdirector.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"tag": "James Cameron"<br/>}<br/>] |
| `writer` | [operations.GetLibraryItemsWriter](../../models/operations/getlibraryitemswriter.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"tag": "James Cameron"<br/>}<br/>] |
| `role` | [operations.GetLibraryItemsRole](../../models/operations/getlibraryitemsrole.md)[] | :heavy_minus_sign: | N/A | [<br/>{<br/>"tag": "Sigourney Weaver"<br/>}<br/>] |
| `titleSort` | *string* | :heavy_minus_sign: | N/A | Whale |
| `viewCount` | *number* | :heavy_minus_sign: | N/A | 1 |
| `lastViewedAt` | *number* | :heavy_minus_sign: | N/A | 1682752242 |
| `originalTitle` | *string* | :heavy_minus_sign: | N/A | 映画 ブラッククローバー 魔法帝の剣 |
| `viewOffset` | *number* | :heavy_minus_sign: | N/A | 5222500 |
| `skipCount` | *number* | :heavy_minus_sign: | N/A | 1 |
| `index` | *number* | :heavy_minus_sign: | N/A | 1 |
| `theme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 |
| `leafCount` | *number* | :heavy_minus_sign: | N/A | 14 |
| `viewedLeafCount` | *number* | :heavy_minus_sign: | N/A | 0 |
| `childCount` | *number* | :heavy_minus_sign: | N/A | 1 |
| `hasPremiumExtras` | *string* | :heavy_minus_sign: | N/A | 1 |
| `hasPremiumPrimaryExtra` | *string* | :heavy_minus_sign: | N/A | 1 |
| `parentRatingKey` | *string* | :heavy_minus_sign: | N/A | 66 |
| `parentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 |
| `parentStudio` | *string* | :heavy_minus_sign: | N/A | UCP |
| `parentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66 |
| `parentTitle` | *string* | :heavy_minus_sign: | N/A | Caprica |
| `parentIndex` | *number* | :heavy_minus_sign: | N/A | 1 |
| `parentYear` | *number* | :heavy_minus_sign: | N/A | 2010 |
| `parentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 |
| `parentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 |

View File

@@ -1,14 +0,0 @@
# GetLibraryItemsPart
## Fields
| Field | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `id` | *number* | :heavy_minus_sign: | N/A | 119542 |
| `key` | *string* | :heavy_minus_sign: | N/A | /library/parts/119542/1680457526/file.mkv |
| `duration` | *number* | :heavy_minus_sign: | N/A | 11558112 |
| `file` | *string* | :heavy_minus_sign: | N/A | /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv |
| `size` | *number* | :heavy_minus_sign: | N/A | 36158371307 |
| `container` | *string* | :heavy_minus_sign: | N/A | mkv |
| `videoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 |

View File

@@ -1,9 +0,0 @@
# GetLibraryItemsRequest
## Fields
| Field | Type | Required | Description |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `sectionId` | *number* | :heavy_check_mark: | the Id of the library to query |
| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. |

View File

@@ -1,11 +0,0 @@
# GetLibraryItemsResponse
## 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.GetLibraryItemsResponseBody](../../models/operations/getlibraryitemsresponsebody.md) | :heavy_minus_sign: | The contents of the library by section and tag |

View File

@@ -1,10 +0,0 @@
# GetLibraryItemsResponseBody
The contents of the library by section and tag
## Fields
| Field | Type | Required | Description |
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `mediaContainer` | [operations.GetLibraryItemsMediaContainer](../../models/operations/getlibraryitemsmediacontainer.md) | :heavy_minus_sign: | N/A |

View File

@@ -1,8 +0,0 @@
# GetLibraryItemsRole
## Fields
| Field | Type | Required | Description | Example |
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
| `tag` | *string* | :heavy_minus_sign: | N/A | Sigourney Weaver |

View File

@@ -1,8 +0,0 @@
# GetLibraryItemsWriter
## Fields
| Field | Type | Required | Description | Example |
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
| `tag` | *string* | :heavy_minus_sign: | N/A | James Cameron |

View File

@@ -3,7 +3,7 @@
## Fields
| Field | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `strong` | *boolean* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> |
| Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `strong` | *boolean* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
| `xPlexClientIdentifier` | *string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |

View File

@@ -3,6 +3,6 @@
## Fields
| Field | Type | Required | Description |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `timespan` | *number* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> |
| Field | Type | Required | Description | Example |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `timespan` | *number* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | 4 |

View File

@@ -3,15 +3,15 @@
## Fields
| Field | Type | Required | Description |
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
| `ratingKey` | *number* | :heavy_check_mark: | The rating key of the media item |
| `key` | *string* | :heavy_check_mark: | The key of the media item to get the timeline for |
| `state` | [operations.State](../../models/operations/state.md) | :heavy_check_mark: | The state of the media item |
| `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE |
| `time` | *number* | :heavy_check_mark: | The time of the media item |
| `duration` | *number* | :heavy_check_mark: | The duration of the media item |
| `context` | *string* | :heavy_check_mark: | The context of the media item |
| `playQueueItemID` | *number* | :heavy_check_mark: | The play queue item ID of the media item |
| `playBackTime` | *number* | :heavy_check_mark: | The playback time of the media item |
| `row` | *number* | :heavy_check_mark: | The row of the media item |
| Field | Type | Required | Description | Example |
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
| `ratingKey` | *number* | :heavy_check_mark: | The rating key of the media item | 23409 |
| `key` | *string* | :heavy_check_mark: | The key of the media item to get the timeline for | /library/metadata/23409 |
| `state` | [operations.State](../../models/operations/state.md) | :heavy_check_mark: | The state of the media item | playing |
| `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE | 1 |
| `time` | *number* | :heavy_check_mark: | The time of the media item | 2000 |
| `duration` | *number* | :heavy_check_mark: | The duration of the media item | 10000 |
| `context` | *string* | :heavy_check_mark: | The context of the media item | home:hub.continueWatching |
| `playQueueItemID` | *number* | :heavy_check_mark: | The play queue item ID of the media item | 1 |
| `playBackTime` | *number* | :heavy_check_mark: | The playback time of the media item | 2000 |
| `row` | *number* | :heavy_check_mark: | The row of the media item | 1 |

View File

@@ -3,7 +3,7 @@
## Fields
| Field | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for | |
| `xPlexClientIdentifier` | *string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |

View File

@@ -3,21 +3,21 @@
## Fields
| Field | Type | Required | Description |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE |
| `path` | *string* | :heavy_check_mark: | The path to the media item to transcode |
| `mediaIndex` | *number* | :heavy_check_mark: | The index of the media item to transcode |
| `partIndex` | *number* | :heavy_check_mark: | The index of the part to transcode |
| `protocol` | *string* | :heavy_check_mark: | The protocol to use for the transcode session |
| `fastSeek` | *number* | :heavy_minus_sign: | Whether to use fast seek or not |
| `directPlay` | *number* | :heavy_minus_sign: | Whether to use direct play or not |
| `directStream` | *number* | :heavy_minus_sign: | Whether to use direct stream or not |
| `subtitleSize` | *number* | :heavy_minus_sign: | The size of the subtitles |
| `subtites` | *string* | :heavy_minus_sign: | The subtitles |
| `audioBoost` | *number* | :heavy_minus_sign: | The audio boost |
| `location` | *string* | :heavy_minus_sign: | The location of the transcode session |
| `mediaBufferSize` | *number* | :heavy_minus_sign: | The size of the media buffer |
| `session` | *string* | :heavy_minus_sign: | The session ID |
| `addDebugOverlay` | *number* | :heavy_minus_sign: | Whether to add a debug overlay or not |
| `autoAdjustQuality` | *number* | :heavy_minus_sign: | Whether to auto adjust quality or not |
| Field | Type | Required | Description | Example |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE | 1 |
| `path` | *string* | :heavy_check_mark: | The path to the media item to transcode | /library/metadata/23409 |
| `mediaIndex` | *number* | :heavy_check_mark: | The index of the media item to transcode | 0 |
| `partIndex` | *number* | :heavy_check_mark: | The index of the part to transcode | 0 |
| `protocol` | *string* | :heavy_check_mark: | The protocol to use for the transcode session | hls |
| `fastSeek` | *number* | :heavy_minus_sign: | Whether to use fast seek or not | 0 |
| `directPlay` | *number* | :heavy_minus_sign: | Whether to use direct play or not | 0 |
| `directStream` | *number* | :heavy_minus_sign: | Whether to use direct stream or not | 0 |
| `subtitleSize` | *number* | :heavy_minus_sign: | The size of the subtitles | 100 |
| `subtites` | *string* | :heavy_minus_sign: | The subtitles | burn |
| `audioBoost` | *number* | :heavy_minus_sign: | The audio boost | 100 |
| `location` | *string* | :heavy_minus_sign: | The location of the transcode session | lan |
| `mediaBufferSize` | *number* | :heavy_minus_sign: | The size of the media buffer | 102400 |
| `session` | *string* | :heavy_minus_sign: | The session ID | zvcage8b7rkioqcm8f4uns4c |
| `addDebugOverlay` | *number* | :heavy_minus_sign: | Whether to add a debug overlay or not | 0 |
| `autoAdjustQuality` | *number* | :heavy_minus_sign: | Whether to auto adjust quality or not | 0 |

View File

@@ -1,28 +0,0 @@
# Tag
A key representing a specific tag within the section.
## Values
| Name | Value |
| ---------------- | ---------------- |
| `All` | all |
| `Unwatched` | unwatched |
| `Newest` | newest |
| `RecentlyAdded` | recentlyAdded |
| `RecentlyViewed` | recentlyViewed |
| `OnDeck` | onDeck |
| `Collection` | collection |
| `Edition` | edition |
| `Genre` | genre |
| `Year` | year |
| `Decade` | decade |
| `Director` | director |
| `Actor` | actor |
| `Country` | country |
| `ContentRating` | contentRating |
| `Rating` | rating |
| `Resolution` | resolution |
| `FirstCharacter` | firstCharacter |
| `Folder` | folder |

View File

@@ -3,8 +3,8 @@
## Fields
| Field | Type | Required | Description |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `key` | *string* | :heavy_check_mark: | the media key |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. |
| `state` | *string* | :heavy_check_mark: | The playback state of the media item. |
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `key` | *string* | :heavy_check_mark: | the media key | |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 |
| `state` | *string* | :heavy_check_mark: | The playback state of the media item. | played |

View File

@@ -26,12 +26,13 @@ Get Server Activities
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.activities.getServerActivities();
async function run() {
const result = await plexAPI.activities.getServerActivities();
// Handle the result
console.log(result)
@@ -67,14 +68,13 @@ Cancel Server Activities
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const activityUUID = "<value>";
const result = await sdk.activities.cancelServerActivities(activityUUID);
async function run() {
const result = await plexAPI.activities.cancelServerActivities("25b71ed5-0f9d-461c-baa7-d404e9e10d3e");
// Handle the result
console.log(result)
@@ -85,11 +85,11 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `activityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. |
| `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. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `activityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | [object Object] |
| `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. | |
### Response

View File

@@ -22,15 +22,13 @@ This endpoint provides the caller with a temporary token with the same access le
import { PlexAPI } from "@lukehagar/plexjs";
import { GetTransientTokenQueryParamType, Scope } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const type = GetTransientTokenQueryParamType.Delegation;
const scope = Scope.All;
const result = await sdk.authentication.getTransientToken(type, scope);
async function run() {
const result = await plexAPI.authentication.getTransientToken(GetTransientTokenQueryParamType.Delegation, Scope.All);
// Handle the result
console.log(result)
@@ -70,14 +68,13 @@ Note: requires Plex Media Server >= 1.15.4.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const source = "server://client-identifier";
const result = await sdk.authentication.getSourceConnectionInformation(source);
async function run() {
const result = await plexAPI.authentication.getSourceConnectionInformation("server://client-identifier");
// Handle the result
console.log(result)

View File

@@ -23,12 +23,13 @@ Returns a list of butler tasks
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.butler.getButlerTasks();
async function run() {
const result = await plexAPI.butler.getButlerTasks();
// Handle the result
console.log(result)
@@ -69,12 +70,13 @@ This endpoint will attempt to start all Butler tasks that are enabled in the set
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.butler.startAllTasks();
async function run() {
const result = await plexAPI.butler.startAllTasks();
// Handle the result
console.log(result)
@@ -111,12 +113,13 @@ This endpoint will stop all currently running tasks and remove any scheduled tas
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.butler.stopAllTasks();
async function run() {
const result = await plexAPI.butler.stopAllTasks();
// Handle the result
console.log(result)
@@ -158,14 +161,13 @@ This endpoint will attempt to start a single Butler task that is enabled in the
import { PlexAPI } from "@lukehagar/plexjs";
import { TaskName } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const taskName = TaskName.CleanOldBundles;
const result = await sdk.butler.startTask(taskName);
async function run() {
const result = await plexAPI.butler.startTask(TaskName.CleanOldBundles);
// Handle the result
console.log(result)
@@ -204,14 +206,13 @@ This endpoint will stop a currently running task by name, or remove it from the
import { PlexAPI } from "@lukehagar/plexjs";
import { PathParamTaskName } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const taskName = PathParamTaskName.BackupDatabase;
const result = await sdk.butler.stopTask(taskName);
async function run() {
const result = await plexAPI.butler.stopTask(PathParamTaskName.BackupDatabase);
// Handle the result
console.log(result)

View File

@@ -21,15 +21,13 @@ Get Global Hubs filtered by the parameters provided.
import { PlexAPI } from "@lukehagar/plexjs";
import { OnlyTransient } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const count = 1262.49;
const onlyTransient = OnlyTransient.One;
const result = await sdk.hubs.getGlobalHubs(count, onlyTransient);
async function run() {
const result = await plexAPI.hubs.getGlobalHubs(1262.49, OnlyTransient.One);
// Handle the result
console.log(result)
@@ -69,16 +67,13 @@ This endpoint will return a list of library specific hubs
import { PlexAPI } from "@lukehagar/plexjs";
import { QueryParamOnlyTransient } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sectionId = 6728.76;
const count = 9010.22;
const onlyTransient = QueryParamOnlyTransient.Zero;
const result = await sdk.hubs.getLibraryHubs(sectionId, count, onlyTransient);
async function run() {
const result = await plexAPI.hubs.getLibraryHubs(6728.76, 9010.22, QueryParamOnlyTransient.Zero);
// Handle the result
console.log(result)

View File

@@ -13,7 +13,6 @@ API Calls interacting with Plex Media Server Libraries
* [getLibraries](#getlibraries) - Get All Libraries
* [getLibrary](#getlibrary) - Get Library Details
* [deleteLibrary](#deletelibrary) - Delete Library Section
* [getLibraryItems](#getlibraryitems) - Get Library Items
* [refreshLibrary](#refreshlibrary) - Refresh Library
* [searchLibrary](#searchlibrary) - Search Library
* [getMetadata](#getmetadata) - Get Items Metadata
@@ -29,15 +28,13 @@ This resource returns hash values for local files
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const url = "file://C:\Image.png&type=13";
const type = 4462.17;
const result = await sdk.library.getFileHash(url, type);
async function run() {
const result = await plexAPI.library.getFileHash("file://C:\Image.png&type=13", 4462.17);
// Handle the result
console.log(result)
@@ -76,12 +73,13 @@ This endpoint will return the recently added content.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.library.getRecentlyAdded();
async function run() {
const result = await plexAPI.library.getRecentlyAdded();
// Handle the result
console.log(result)
@@ -123,12 +121,13 @@ This allows a client to provide a rich interface around the media (e.g. allow so
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.library.getLibraries();
async function run() {
const result = await plexAPI.library.getLibraries();
// Handle the result
console.log(result)
@@ -204,15 +203,13 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
import { PlexAPI } from "@lukehagar/plexjs";
import { IncludeDetails } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sectionId = 1000;
const includeDetails = IncludeDetails.Zero;
const result = await sdk.library.getLibrary(sectionId, includeDetails);
async function run() {
const result = await plexAPI.library.getLibrary(1000, IncludeDetails.Zero);
// Handle the result
console.log(result)
@@ -250,14 +247,13 @@ Delate a library using a specific section
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sectionId = 1000;
const result = await sdk.library.deleteLibrary(sectionId);
async function run() {
const result = await plexAPI.library.deleteLibrary(1000);
// Handle the result
console.log(result)
@@ -285,72 +281,6 @@ run();
| errors.DeleteLibraryResponseBody | 401 | application/json |
| errors.SDKError | 4xx-5xx | */* |
## getLibraryItems
Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values:
- `all`: All items in the section.
- `unwatched`: Items that have not been played.
- `newest`: Items that are recently released.
- `recentlyAdded`: Items that are recently added to the library.
- `recentlyViewed`: Items that were recently viewed.
- `onDeck`: Items to continue watching.
- `collection`: Items categorized by collection.
- `edition`: Items categorized by edition.
- `genre`: Items categorized by genre.
- `year`: Items categorized by year of release.
- `decade`: Items categorized by decade.
- `director`: Items categorized by director.
- `actor`: Items categorized by starring actor.
- `country`: Items categorized by country of origin.
- `contentRating`: Items categorized by content rating.
- `rating`: Items categorized by rating.
- `resolution`: Items categorized by resolution.
- `firstCharacter`: Items categorized by the first letter.
- `folder`: Items categorized by folder.
### Example Usage
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
import { Tag } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const sectionId = 451092;
const tag = Tag.Unwatched;
const result = await sdk.library.getLibraryItems(sectionId, tag);
// Handle the result
console.log(result)
}
run();
```
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `sectionId` | *number* | :heavy_check_mark: | the Id of the library to query |
| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. |
| `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. |
### Response
**Promise<[operations.GetLibraryItemsResponse](../../models/operations/getlibraryitemsresponse.md)>**
### Errors
| Error Object | Status Code | Content Type |
| --------------- | --------------- | --------------- |
| errors.SDKError | 4xx-5xx | */* |
## refreshLibrary
This endpoint Refreshes the library.
@@ -361,14 +291,13 @@ This endpoint Refreshes the library.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sectionId = 934.16;
const result = await sdk.library.refreshLibrary(sectionId);
async function run() {
const result = await plexAPI.library.refreshLibrary(934.16);
// Handle the result
console.log(result)
@@ -424,15 +353,13 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
import { PlexAPI } from "@lukehagar/plexjs";
import { Type } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sectionId = 933505;
const type = Type.Four;
const result = await sdk.library.searchLibrary(sectionId, type);
async function run() {
const result = await plexAPI.library.searchLibrary(933505, Type.Four);
// Handle the result
console.log(result)
@@ -470,14 +397,13 @@ This endpoint will return the metadata of a library item specified with the rati
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const ratingKey = 8382.31;
const result = await sdk.library.getMetadata(ratingKey);
async function run() {
const result = await plexAPI.library.getMetadata(8382.31);
// Handle the result
console.log(result)
@@ -515,14 +441,13 @@ This endpoint will return the children of of a library item specified with the r
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const ratingKey = 1539.14;
const result = await sdk.library.getMetadataChildren(ratingKey);
async function run() {
const result = await plexAPI.library.getMetadataChildren(1539.14);
// Handle the result
console.log(result)
@@ -560,12 +485,13 @@ This endpoint will return the on deck content.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.library.getOnDeck();
async function run() {
const result = await plexAPI.library.getOnDeck();
// Handle the result
console.log(result)

View File

@@ -23,16 +23,13 @@ This endpoint will write a single-line log message, including a level and source
import { PlexAPI } from "@lukehagar/plexjs";
import { Level } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const level = Level.Three;
const message = "Test log message";
const source = "Postman";
const result = await sdk.log.logLine(level, message, source);
async function run() {
const result = await plexAPI.log.logLine(Level.Three, "Test log message", "Postman");
// Handle the result
console.log(result)
@@ -92,12 +89,13 @@ Ensure each parameter is properly URL-encoded to avoid interpretation issues.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.log.logMultiLine("level=4&message=Test%20message%201&source=postman
async function run() {
const result = await plexAPI.log.logMultiLine("level=4&message=Test%20message%201&source=postman
level=3&message=Test%20message%202&source=postman
level=1&message=Test%20message%203&source=postman");
@@ -137,12 +135,13 @@ This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.log.enablePaperTrail();
async function run() {
const result = await plexAPI.log.enablePaperTrail();
// Handle the result
console.log(result)

View File

@@ -21,14 +21,13 @@ This will mark the provided media key as Played.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const key = 59398;
const result = await sdk.media.markPlayed(key);
async function run() {
const result = await plexAPI.media.markPlayed(59398);
// Handle the result
console.log(result)
@@ -65,14 +64,13 @@ This will mark the provided media key as Unplayed.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const key = 59398;
const result = await sdk.media.markUnplayed(key);
async function run() {
const result = await plexAPI.media.markUnplayed(59398);
// Handle the result
console.log(result)
@@ -110,16 +108,13 @@ This API command can be used to update the play progress of a media item.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const key = "<value>";
const time = 6900.91;
const state = "<value>";
const result = await sdk.media.updatePlayProgress(key, time, state);
async function run() {
const result = await plexAPI.media.updatePlayProgress("<value>", 90000, "played");
// Handle the result
console.log(result)
@@ -130,13 +125,13 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `key` | *string* | :heavy_check_mark: | the media key |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. |
| `state` | *string* | :heavy_check_mark: | The playback state of the media item. |
| `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. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `key` | *string* | :heavy_check_mark: | the media key | |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | [object Object] |
| `state` | *string* | :heavy_check_mark: | The playback state of the media item. | [object Object] |
| `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. | |
### Response

View File

@@ -34,12 +34,13 @@ Create a new playlist. By default the playlist is blank. To create a playlist al
import { PlexAPI } from "@lukehagar/plexjs";
import { QueryParamType, Smart } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.playlists.createPlaylist({
async function run() {
const result = await plexAPI.playlists.createPlaylist({
title: "<value>",
type: QueryParamType.Photo,
smart: Smart.One,
@@ -82,15 +83,13 @@ Get All Playlists given the specified filters.
import { PlexAPI } from "@lukehagar/plexjs";
import { PlaylistType, QueryParamSmart } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistType = PlaylistType.Audio;
const smart = QueryParamSmart.Zero;
const result = await sdk.playlists.getPlaylists(playlistType, smart);
async function run() {
const result = await plexAPI.playlists.getPlaylists(PlaylistType.Audio, QueryParamSmart.Zero);
// Handle the result
console.log(result)
@@ -130,14 +129,13 @@ Smart playlist details contain the `content` attribute. This is the content URI
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 4109.48;
const result = await sdk.playlists.getPlaylist(playlistID);
async function run() {
const result = await plexAPI.playlists.getPlaylist(4109.48);
// Handle the result
console.log(result)
@@ -175,14 +173,13 @@ This endpoint will delete a playlist
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 216.22;
const result = await sdk.playlists.deletePlaylist(playlistID);
async function run() {
const result = await plexAPI.playlists.deletePlaylist(216.22);
// Handle the result
console.log(result)
@@ -220,16 +217,13 @@ From PMS version 1.9.1 clients can also edit playlist metadata using this endpoi
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 3915;
const title = "<value>";
const summary = "<value>";
const result = await sdk.playlists.updatePlaylist(playlistID, title, summary);
async function run() {
const result = await plexAPI.playlists.updatePlaylist(3915, "<value>", "<value>");
// Handle the result
console.log(result)
@@ -272,15 +266,13 @@ Note that for dumb playlists, items have a `playlistItemID` attribute which is u
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 5004.46;
const type = 9403.59;
const result = await sdk.playlists.getPlaylistContents(playlistID, type);
async function run() {
const result = await plexAPI.playlists.getPlaylistContents(5004.46, 9403.59);
// Handle the result
console.log(result)
@@ -319,14 +311,13 @@ Clears a playlist, only works with dumb playlists. Returns the playlist.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 1893.18;
const result = await sdk.playlists.clearPlaylistContents(playlistID);
async function run() {
const result = await plexAPI.playlists.clearPlaylistContents(1893.18);
// Handle the result
console.log(result)
@@ -365,16 +356,13 @@ With a smart playlist, passing a new `uri` parameter replaces the rules for the
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const playlistID = 8502.01;
const uri = "server://12345/com.plexapp.plugins.library/library/metadata/1";
const playQueueID = 123;
const result = await sdk.playlists.addPlaylistContents(playlistID, uri, playQueueID);
async function run() {
const result = await plexAPI.playlists.addPlaylistContents(8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123);
// Handle the result
console.log(result)
@@ -415,15 +403,13 @@ Imports m3u playlists by passing a path on the server to scan for m3u-formatted
import { PlexAPI } from "@lukehagar/plexjs";
import { Force } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const path = "/home/barkley/playlist.m3u";
const force = Force.Zero;
const result = await sdk.playlists.uploadPlaylist(path, force);
async function run() {
const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", Force.Zero);
// Handle the result
console.log(result)

View File

@@ -20,13 +20,12 @@ Retrieve a Pin from Plex.tv for authentication flows
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI();
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "Postman",
});
const xPlexClientIdentifier = "<value>";
const strong = false;
const result = await sdk.plex.getPin(xPlexClientIdentifier, strong);
async function run() {
const result = await plexAPI.plex.getPin(false, "Postman");
// Handle the result
console.log(result)
@@ -37,13 +36,13 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `strong` | *boolean* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> |
| `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.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `strong` | *boolean* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
| `xPlexClientIdentifier` | *string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | [object Object] |
| `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.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response
@@ -65,13 +64,12 @@ Retrieve an Access Token from Plex.tv after the Pin has already been authenticat
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI();
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "Postman",
});
const pinID = "<value>";
const xPlexClientIdentifier = "<value>";
const result = await sdk.plex.getToken(pinID, xPlexClientIdentifier);
async function run() {
const result = await plexAPI.plex.getToken("<value>", "Postman");
// Handle the result
console.log(result)
@@ -82,13 +80,13 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `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.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for | |
| `xPlexClientIdentifier` | *string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | [object Object] |
| `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.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response

View File

@@ -33,16 +33,13 @@ This request is intended to be very fast, and called as the user types.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const query = "dylan";
const sectionId = 1516.53;
const limit = 5;
const result = await sdk.search.performSearch(query, sectionId, limit);
async function run() {
const result = await plexAPI.search.performSearch("dylan", 1516.53, 5);
// Handle the result
console.log(result)
@@ -85,16 +82,13 @@ Results, as well as their containing per-type hubs, contain a `distance` attribu
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const query = "dead+poop";
const sectionId = 4094.8;
const limit = 5;
const result = await sdk.search.performVoiceSearch(query, sectionId, limit);
async function run() {
const result = await plexAPI.search.performVoiceSearch("dead+poop", 4094.8, 5);
// Handle the result
console.log(result)
@@ -133,14 +127,13 @@ This will search the database for the string provided.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const query = "110";
const result = await sdk.search.getSearchResults(query);
async function run() {
const result = await plexAPI.search.getSearchResults("110");
// Handle the result
console.log(result)

View File

@@ -26,12 +26,13 @@ Server Capabilities
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result)
@@ -67,12 +68,13 @@ Get Server Preferences
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerPreferences();
async function run() {
const result = await plexAPI.server.getServerPreferences();
// Handle the result
console.log(result)
@@ -108,12 +110,13 @@ Get Available Clients
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getAvailableClients();
async function run() {
const result = await plexAPI.server.getAvailableClients();
// Handle the result
console.log(result)
@@ -149,12 +152,13 @@ Get Devices
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getDevices();
async function run() {
const result = await plexAPI.server.getDevices();
// Handle the result
console.log(result)
@@ -190,12 +194,13 @@ Get Server Identity
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerIdentity();
async function run() {
const result = await plexAPI.server.getServerIdentity();
// Handle the result
console.log(result)
@@ -231,12 +236,13 @@ Returns MyPlex Account Information
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getMyPlexAccount();
async function run() {
const result = await plexAPI.server.getMyPlexAccount();
// Handle the result
console.log(result)
@@ -274,12 +280,13 @@ Plex's Photo transcoder is used throughout the service to serve images at specif
import { PlexAPI } from "@lukehagar/plexjs";
import { MinSize, Upscale } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getResizedPhoto({
async function run() {
const result = await plexAPI.server.getResizedPhoto({
width: 110,
height: 165,
opacity: 100,
@@ -324,12 +331,13 @@ Get Server List
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.server.getServerList();
async function run() {
const result = await plexAPI.server.getServerList();
// Handle the result
console.log(result)

View File

@@ -22,12 +22,13 @@ This will retrieve the "Now Playing" Information of the PMS.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.sessions.getSessions();
async function run() {
const result = await plexAPI.sessions.getSessions();
// Handle the result
console.log(result)
@@ -63,12 +64,13 @@ This will Retrieve a listing of all history views.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.sessions.getSessionHistory();
async function run() {
const result = await plexAPI.sessions.getSessionHistory();
// Handle the result
console.log(result)
@@ -104,12 +106,13 @@ Get Transcode Sessions
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.sessions.getTranscodeSessions();
async function run() {
const result = await plexAPI.sessions.getTranscodeSessions();
// Handle the result
console.log(result)
@@ -145,14 +148,13 @@ Stop a Transcode Session
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const sessionKey = "zz7llzqlx8w9vnrsbnwhbmep";
const result = await sdk.sessions.stopTranscodeSession(sessionKey);
async function run() {
const result = await plexAPI.sessions.stopTranscodeSession("zz7llzqlx8w9vnrsbnwhbmep");
// Handle the result
console.log(result)

View File

@@ -19,14 +19,13 @@ This will return the media statistics for the server
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const timespan = 411769;
const result = await sdk.statistics.getStatistics(timespan);
async function run() {
const result = await plexAPI.statistics.getStatistics(4);
// Handle the result
console.log(result)
@@ -37,11 +36,11 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `timespan` | *number* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> |
| `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. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `timespan` | *number* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | [object Object] |
| `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. | |
### Response

View File

@@ -22,12 +22,13 @@ Querying status of updates
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.updater.getUpdateStatus();
async function run() {
const result = await plexAPI.updater.getUpdateStatus();
// Handle the result
console.log(result)
@@ -64,14 +65,13 @@ Checking for updates
import { PlexAPI } from "@lukehagar/plexjs";
import { Download } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const download = Download.One;
const result = await sdk.updater.checkForUpdates(download);
async function run() {
const result = await plexAPI.updater.checkForUpdates(Download.One);
// Handle the result
console.log(result)
@@ -82,11 +82,11 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `download` | [operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. |
| `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. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `download` | [operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | [object Object] |
| `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. | |
### Response
@@ -110,15 +110,13 @@ Note that these two parameters are effectively mutually exclusive. The `tonight`
import { PlexAPI } from "@lukehagar/plexjs";
import { Skip, Tonight } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const tonight = Tonight.One;
const skip = Skip.Zero;
const result = await sdk.updater.applyUpdates(tonight, skip);
async function run() {
const result = await plexAPI.updater.applyUpdates(Tonight.One, Skip.One);
// Handle the result
console.log(result)
@@ -129,12 +127,12 @@ run();
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `tonight` | [operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | 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` | [operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. |
| `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. |
| Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `tonight` | [operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | 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 | [object Object] |
| `skip` | [operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. | [object Object] |
| `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. | |
### Response

View File

@@ -21,22 +21,23 @@ Get the timeline for a media item
import { PlexAPI } from "@lukehagar/plexjs";
import { State } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.video.getTimeline({
ratingKey: 716.56,
key: "<key>",
state: State.Paused,
hasMDE: 7574.33,
time: 3327.51,
duration: 7585.39,
context: "<value>",
playQueueItemID: 1406.21,
playBackTime: 2699.34,
row: 3536.42,
async function run() {
const result = await plexAPI.video.getTimeline({
ratingKey: 23409,
key: "/library/metadata/23409",
state: State.Playing,
hasMDE: 1,
time: 2000,
duration: 10000,
context: "home:hub.continueWatching",
playQueueItemID: 1,
playBackTime: 2000,
row: 1,
});
// Handle the result
@@ -74,17 +75,29 @@ Begin a Universal Transcode Session
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "Postman",
});
const result = await sdk.video.startUniversalTranscode({
hasMDE: 8924.99,
path: "/etc/mail",
mediaIndex: 9962.95,
partIndex: 1232.82,
protocol: "<value>",
async function run() {
const result = await plexAPI.video.startUniversalTranscode({
hasMDE: 1,
path: "/library/metadata/23409",
mediaIndex: 0,
partIndex: 0,
protocol: "hls",
fastSeek: 0,
directPlay: 0,
directStream: 0,
subtitleSize: 100,
subtites: "burn",
audioBoost: 100,
location: "lan",
mediaBufferSize: 102400,
session: "zvcage8b7rkioqcm8f4uns4c",
addDebugOverlay: 0,
autoAdjustQuality: 0,
});
// Handle the result

457
files.gen
View File

@@ -1,457 +0,0 @@
src/sdk/server.ts
src/sdk/media.ts
src/sdk/activities.ts
src/sdk/butler.ts
src/sdk/hubs.ts
src/sdk/search.ts
src/sdk/library.ts
src/sdk/log.ts
src/sdk/playlists.ts
src/sdk/security.ts
src/sdk/sessions.ts
src/sdk/updater.ts
src/sdk/video.ts
src/sdk/sdk.ts
.eslintrc.js
.npmignore
package-lock.json
package.json
src/index.ts
src/lib/base64.ts
src/lib/config.ts
src/lib/encodings.ts
src/lib/http.ts
src/lib/retries.ts
src/lib/sdks.ts
src/lib/security.ts
src/lib/url.ts
src/sdk/index.ts
src/models/errors/sdkerror.ts
src/types/blobs.ts
src/types/decimal.ts
src/types/index.ts
src/types/operations.ts
src/types/rfcdate.ts
tsconfig.json
src/models/operations/getservercapabilities.ts
src/models/operations/getserverpreferences.ts
src/models/operations/getavailableclients.ts
src/models/operations/getdevices.ts
src/models/operations/getserveridentity.ts
src/models/operations/getmyplexaccount.ts
src/models/operations/getresizedphoto.ts
src/models/operations/getserverlist.ts
src/models/operations/markplayed.ts
src/models/operations/markunplayed.ts
src/models/operations/updateplayprogress.ts
src/models/operations/getserveractivities.ts
src/models/operations/cancelserveractivities.ts
src/models/operations/getbutlertasks.ts
src/models/operations/startalltasks.ts
src/models/operations/stopalltasks.ts
src/models/operations/starttask.ts
src/models/operations/stoptask.ts
src/models/operations/getglobalhubs.ts
src/models/operations/getlibraryhubs.ts
src/models/operations/performsearch.ts
src/models/operations/performvoicesearch.ts
src/models/operations/getsearchresults.ts
src/models/operations/getfilehash.ts
src/models/operations/getrecentlyadded.ts
src/models/operations/getlibraries.ts
src/models/operations/getlibrary.ts
src/models/operations/deletelibrary.ts
src/models/operations/getlibraryitems.ts
src/models/operations/refreshlibrary.ts
src/models/operations/getlatestlibraryitems.ts
src/models/operations/getcommonlibraryitems.ts
src/models/operations/getmetadata.ts
src/models/operations/getmetadatachildren.ts
src/models/operations/getondeck.ts
src/models/operations/logline.ts
src/models/operations/logmultiline.ts
src/models/operations/enablepapertrail.ts
src/models/operations/createplaylist.ts
src/models/operations/getplaylists.ts
src/models/operations/getplaylist.ts
src/models/operations/deleteplaylist.ts
src/models/operations/updateplaylist.ts
src/models/operations/getplaylistcontents.ts
src/models/operations/clearplaylistcontents.ts
src/models/operations/addplaylistcontents.ts
src/models/operations/uploadplaylist.ts
src/models/operations/gettransienttoken.ts
src/models/operations/getsourceconnectioninformation.ts
src/models/operations/getsessions.ts
src/models/operations/getsessionhistory.ts
src/models/operations/gettranscodesessions.ts
src/models/operations/stoptranscodesession.ts
src/models/operations/getupdatestatus.ts
src/models/operations/checkforupdates.ts
src/models/operations/applyupdates.ts
src/models/operations/startuniversaltranscode.ts
src/models/operations/gettimeline.ts
src/models/errors/getservercapabilities.ts
src/models/errors/getserverpreferences.ts
src/models/errors/getavailableclients.ts
src/models/errors/getdevices.ts
src/models/errors/getserveridentity.ts
src/models/errors/getmyplexaccount.ts
src/models/errors/getresizedphoto.ts
src/models/errors/getserverlist.ts
src/models/errors/markplayed.ts
src/models/errors/markunplayed.ts
src/models/errors/updateplayprogress.ts
src/models/errors/getserveractivities.ts
src/models/errors/cancelserveractivities.ts
src/models/errors/getbutlertasks.ts
src/models/errors/startalltasks.ts
src/models/errors/stopalltasks.ts
src/models/errors/starttask.ts
src/models/errors/stoptask.ts
src/models/errors/getglobalhubs.ts
src/models/errors/getlibraryhubs.ts
src/models/errors/performsearch.ts
src/models/errors/performvoicesearch.ts
src/models/errors/getsearchresults.ts
src/models/errors/getfilehash.ts
src/models/errors/getrecentlyadded.ts
src/models/errors/getlibraries.ts
src/models/errors/getlibrary.ts
src/models/errors/deletelibrary.ts
src/models/errors/getlibraryitems.ts
src/models/errors/refreshlibrary.ts
src/models/errors/getlatestlibraryitems.ts
src/models/errors/getcommonlibraryitems.ts
src/models/errors/getmetadata.ts
src/models/errors/getmetadatachildren.ts
src/models/errors/getondeck.ts
src/models/errors/logline.ts
src/models/errors/logmultiline.ts
src/models/errors/enablepapertrail.ts
src/models/errors/createplaylist.ts
src/models/errors/getplaylists.ts
src/models/errors/getplaylist.ts
src/models/errors/deleteplaylist.ts
src/models/errors/updateplaylist.ts
src/models/errors/getplaylistcontents.ts
src/models/errors/clearplaylistcontents.ts
src/models/errors/addplaylistcontents.ts
src/models/errors/uploadplaylist.ts
src/models/errors/gettransienttoken.ts
src/models/errors/getsourceconnectioninformation.ts
src/models/errors/getsessions.ts
src/models/errors/getsessionhistory.ts
src/models/errors/gettranscodesessions.ts
src/models/errors/stoptranscodesession.ts
src/models/errors/getupdatestatus.ts
src/models/errors/checkforupdates.ts
src/models/errors/applyupdates.ts
src/models/errors/startuniversaltranscode.ts
src/models/errors/gettimeline.ts
src/models/components/security.ts
src/models/errors/index.ts
src/models/operations/index.ts
src/models/components/index.ts
docs/models/operations/directory.md
docs/models/operations/mediacontainer.md
docs/models/operations/getservercapabilitiesresponsebody.md
docs/models/operations/getservercapabilitiesresponse.md
docs/models/operations/getserverpreferencesresponse.md
docs/models/operations/server.md
docs/models/operations/getavailableclientsmediacontainer.md
docs/models/operations/responsebody.md
docs/models/operations/getavailableclientsresponse.md
docs/models/operations/device.md
docs/models/operations/getdevicesmediacontainer.md
docs/models/operations/getdevicesresponsebody.md
docs/models/operations/getdevicesresponse.md
docs/models/operations/getserveridentitymediacontainer.md
docs/models/operations/getserveridentityresponsebody.md
docs/models/operations/getserveridentityresponse.md
docs/models/operations/myplex.md
docs/models/operations/getmyplexaccountresponsebody.md
docs/models/operations/getmyplexaccountresponse.md
docs/models/operations/minsize.md
docs/models/operations/upscale.md
docs/models/operations/getresizedphotorequest.md
docs/models/operations/getresizedphotoresponse.md
docs/models/operations/getserverlistserver.md
docs/models/operations/getserverlistmediacontainer.md
docs/models/operations/getserverlistresponsebody.md
docs/models/operations/getserverlistresponse.md
docs/models/operations/markplayedrequest.md
docs/models/operations/markplayedresponse.md
docs/models/operations/markunplayedrequest.md
docs/models/operations/markunplayedresponse.md
docs/models/operations/updateplayprogressrequest.md
docs/models/operations/updateplayprogressresponse.md
docs/models/operations/context.md
docs/models/operations/activity.md
docs/models/operations/getserveractivitiesmediacontainer.md
docs/models/operations/getserveractivitiesresponsebody.md
docs/models/operations/getserveractivitiesresponse.md
docs/models/operations/cancelserveractivitiesrequest.md
docs/models/operations/cancelserveractivitiesresponse.md
docs/models/operations/butlertask.md
docs/models/operations/butlertasks.md
docs/models/operations/getbutlertasksresponsebody.md
docs/models/operations/getbutlertasksresponse.md
docs/models/operations/startalltasksresponse.md
docs/models/operations/stopalltasksresponse.md
docs/models/operations/taskname.md
docs/models/operations/starttaskrequest.md
docs/models/operations/starttaskresponse.md
docs/models/operations/pathparamtaskname.md
docs/models/operations/stoptaskrequest.md
docs/models/operations/stoptaskresponse.md
docs/models/operations/onlytransient.md
docs/models/operations/getglobalhubsrequest.md
docs/models/operations/getglobalhubsresponse.md
docs/models/operations/queryparamonlytransient.md
docs/models/operations/getlibraryhubsrequest.md
docs/models/operations/getlibraryhubsresponse.md
docs/models/operations/performsearchrequest.md
docs/models/operations/performsearchresponse.md
docs/models/operations/performvoicesearchrequest.md
docs/models/operations/performvoicesearchresponse.md
docs/models/operations/getsearchresultsrequest.md
docs/models/operations/getsearchresultspart.md
docs/models/operations/getsearchresultsmedia.md
docs/models/operations/getsearchresultsgenre.md
docs/models/operations/getsearchresultsdirector.md
docs/models/operations/getsearchresultswriter.md
docs/models/operations/getsearchresultscountry.md
docs/models/operations/getsearchresultsrole.md
docs/models/operations/getsearchresultsmetadata.md
docs/models/operations/provider.md
docs/models/operations/getsearchresultsmediacontainer.md
docs/models/operations/getsearchresultsresponsebody.md
docs/models/operations/getsearchresultsresponse.md
docs/models/operations/getfilehashrequest.md
docs/models/operations/getfilehashresponse.md
docs/models/operations/part.md
docs/models/operations/media.md
docs/models/operations/genre.md
docs/models/operations/director.md
docs/models/operations/writer.md
docs/models/operations/country.md
docs/models/operations/role.md
docs/models/operations/metadata.md
docs/models/operations/getrecentlyaddedmediacontainer.md
docs/models/operations/getrecentlyaddedresponsebody.md
docs/models/operations/getrecentlyaddedresponse.md
docs/models/operations/getlibrariesresponse.md
docs/models/operations/includedetails.md
docs/models/operations/getlibraryrequest.md
docs/models/operations/getlibraryresponse.md
docs/models/operations/deletelibraryrequest.md
docs/models/operations/deletelibraryresponse.md
docs/models/operations/getlibraryitemsrequest.md
docs/models/operations/getlibraryitemsresponse.md
docs/models/operations/refreshlibraryrequest.md
docs/models/operations/refreshlibraryresponse.md
docs/models/operations/getlatestlibraryitemsrequest.md
docs/models/operations/getlatestlibraryitemsresponse.md
docs/models/operations/getcommonlibraryitemsrequest.md
docs/models/operations/getcommonlibraryitemsresponse.md
docs/models/operations/getmetadatarequest.md
docs/models/operations/getmetadataresponse.md
docs/models/operations/getmetadatachildrenrequest.md
docs/models/operations/getmetadatachildrenresponse.md
docs/models/operations/stream.md
docs/models/operations/getondeckpart.md
docs/models/operations/getondeckmedia.md
docs/models/operations/guids.md
docs/models/operations/getondeckmetadata.md
docs/models/operations/getondeckmediacontainer.md
docs/models/operations/getondeckresponsebody.md
docs/models/operations/getondeckresponse.md
docs/models/operations/level.md
docs/models/operations/loglinerequest.md
docs/models/operations/loglineresponse.md
docs/models/operations/logmultilineresponse.md
docs/models/operations/enablepapertrailresponse.md
docs/models/operations/typet.md
docs/models/operations/smart.md
docs/models/operations/createplaylistrequest.md
docs/models/operations/createplaylistresponse.md
docs/models/operations/playlisttype.md
docs/models/operations/queryparamsmart.md
docs/models/operations/getplaylistsrequest.md
docs/models/operations/getplaylistsresponse.md
docs/models/operations/getplaylistrequest.md
docs/models/operations/getplaylistresponse.md
docs/models/operations/deleteplaylistrequest.md
docs/models/operations/deleteplaylistresponse.md
docs/models/operations/updateplaylistrequest.md
docs/models/operations/updateplaylistresponse.md
docs/models/operations/getplaylistcontentsrequest.md
docs/models/operations/getplaylistcontentsresponse.md
docs/models/operations/clearplaylistcontentsrequest.md
docs/models/operations/clearplaylistcontentsresponse.md
docs/models/operations/addplaylistcontentsrequest.md
docs/models/operations/addplaylistcontentsresponse.md
docs/models/operations/force.md
docs/models/operations/uploadplaylistrequest.md
docs/models/operations/uploadplaylistresponse.md
docs/models/operations/queryparamtype.md
docs/models/operations/scope.md
docs/models/operations/gettransienttokenrequest.md
docs/models/operations/gettransienttokenresponse.md
docs/models/operations/getsourceconnectioninformationrequest.md
docs/models/operations/getsourceconnectioninformationresponse.md
docs/models/operations/getsessionsresponse.md
docs/models/operations/getsessionhistoryresponse.md
docs/models/operations/transcodesession.md
docs/models/operations/gettranscodesessionsmediacontainer.md
docs/models/operations/gettranscodesessionsresponsebody.md
docs/models/operations/gettranscodesessionsresponse.md
docs/models/operations/stoptranscodesessionrequest.md
docs/models/operations/stoptranscodesessionresponse.md
docs/models/operations/getupdatestatusresponse.md
docs/models/operations/download.md
docs/models/operations/checkforupdatesrequest.md
docs/models/operations/checkforupdatesresponse.md
docs/models/operations/tonight.md
docs/models/operations/skip.md
docs/models/operations/applyupdatesrequest.md
docs/models/operations/applyupdatesresponse.md
docs/models/operations/startuniversaltranscoderequest.md
docs/models/operations/startuniversaltranscoderesponse.md
docs/models/operations/state.md
docs/models/operations/gettimelinerequest.md
docs/models/operations/gettimelineresponse.md
docs/models/errors/errors.md
docs/models/errors/getservercapabilitiesresponsebody.md
docs/models/errors/getserverpreferenceserrors.md
docs/models/errors/getserverpreferencesresponsebody.md
docs/models/errors/getavailableclientserrors.md
docs/models/errors/getavailableclientsresponsebody.md
docs/models/errors/getdeviceserrors.md
docs/models/errors/getdevicesresponsebody.md
docs/models/errors/getserveridentityerrors.md
docs/models/errors/getserveridentityresponsebody.md
docs/models/errors/getmyplexaccounterrors.md
docs/models/errors/getmyplexaccountresponsebody.md
docs/models/errors/getresizedphotoerrors.md
docs/models/errors/getresizedphotoresponsebody.md
docs/models/errors/getserverlisterrors.md
docs/models/errors/getserverlistresponsebody.md
docs/models/errors/markplayederrors.md
docs/models/errors/markplayedresponsebody.md
docs/models/errors/markunplayederrors.md
docs/models/errors/markunplayedresponsebody.md
docs/models/errors/updateplayprogresserrors.md
docs/models/errors/updateplayprogressresponsebody.md
docs/models/errors/getserveractivitieserrors.md
docs/models/errors/getserveractivitiesresponsebody.md
docs/models/errors/cancelserveractivitieserrors.md
docs/models/errors/cancelserveractivitiesresponsebody.md
docs/models/errors/getbutlertaskserrors.md
docs/models/errors/getbutlertasksresponsebody.md
docs/models/errors/startalltaskserrors.md
docs/models/errors/startalltasksresponsebody.md
docs/models/errors/stopalltaskserrors.md
docs/models/errors/stopalltasksresponsebody.md
docs/models/errors/starttaskerrors.md
docs/models/errors/starttaskresponsebody.md
docs/models/errors/stoptaskerrors.md
docs/models/errors/stoptaskresponsebody.md
docs/models/errors/getglobalhubserrors.md
docs/models/errors/getglobalhubsresponsebody.md
docs/models/errors/getlibraryhubserrors.md
docs/models/errors/getlibraryhubsresponsebody.md
docs/models/errors/performsearcherrors.md
docs/models/errors/performsearchresponsebody.md
docs/models/errors/performvoicesearcherrors.md
docs/models/errors/performvoicesearchresponsebody.md
docs/models/errors/getsearchresultserrors.md
docs/models/errors/getsearchresultsresponsebody.md
docs/models/errors/getfilehasherrors.md
docs/models/errors/getfilehashresponsebody.md
docs/models/errors/getrecentlyaddederrors.md
docs/models/errors/getrecentlyaddedresponsebody.md
docs/models/errors/getlibrarieserrors.md
docs/models/errors/getlibrariesresponsebody.md
docs/models/errors/getlibraryerrors.md
docs/models/errors/getlibraryresponsebody.md
docs/models/errors/deletelibraryerrors.md
docs/models/errors/deletelibraryresponsebody.md
docs/models/errors/getlibraryitemserrors.md
docs/models/errors/getlibraryitemsresponsebody.md
docs/models/errors/refreshlibraryerrors.md
docs/models/errors/refreshlibraryresponsebody.md
docs/models/errors/getlatestlibraryitemserrors.md
docs/models/errors/getlatestlibraryitemsresponsebody.md
docs/models/errors/getcommonlibraryitemserrors.md
docs/models/errors/getcommonlibraryitemsresponsebody.md
docs/models/errors/getmetadataerrors.md
docs/models/errors/getmetadataresponsebody.md
docs/models/errors/getmetadatachildrenerrors.md
docs/models/errors/getmetadatachildrenresponsebody.md
docs/models/errors/getondeckerrors.md
docs/models/errors/getondeckresponsebody.md
docs/models/errors/loglineerrors.md
docs/models/errors/loglineresponsebody.md
docs/models/errors/logmultilineerrors.md
docs/models/errors/logmultilineresponsebody.md
docs/models/errors/enablepapertrailerrors.md
docs/models/errors/enablepapertrailresponsebody.md
docs/models/errors/createplaylisterrors.md
docs/models/errors/createplaylistresponsebody.md
docs/models/errors/getplaylistserrors.md
docs/models/errors/getplaylistsresponsebody.md
docs/models/errors/getplaylisterrors.md
docs/models/errors/getplaylistresponsebody.md
docs/models/errors/deleteplaylisterrors.md
docs/models/errors/deleteplaylistresponsebody.md
docs/models/errors/updateplaylisterrors.md
docs/models/errors/updateplaylistresponsebody.md
docs/models/errors/getplaylistcontentserrors.md
docs/models/errors/getplaylistcontentsresponsebody.md
docs/models/errors/clearplaylistcontentserrors.md
docs/models/errors/clearplaylistcontentsresponsebody.md
docs/models/errors/addplaylistcontentserrors.md
docs/models/errors/addplaylistcontentsresponsebody.md
docs/models/errors/uploadplaylisterrors.md
docs/models/errors/uploadplaylistresponsebody.md
docs/models/errors/gettransienttokenerrors.md
docs/models/errors/gettransienttokenresponsebody.md
docs/models/errors/getsourceconnectioninformationerrors.md
docs/models/errors/getsourceconnectioninformationresponsebody.md
docs/models/errors/getsessionserrors.md
docs/models/errors/getsessionsresponsebody.md
docs/models/errors/getsessionhistoryerrors.md
docs/models/errors/getsessionhistoryresponsebody.md
docs/models/errors/gettranscodesessionserrors.md
docs/models/errors/gettranscodesessionsresponsebody.md
docs/models/errors/stoptranscodesessionerrors.md
docs/models/errors/stoptranscodesessionresponsebody.md
docs/models/errors/getupdatestatuserrors.md
docs/models/errors/getupdatestatusresponsebody.md
docs/models/errors/checkforupdateserrors.md
docs/models/errors/checkforupdatesresponsebody.md
docs/models/errors/applyupdateserrors.md
docs/models/errors/applyupdatesresponsebody.md
docs/models/errors/startuniversaltranscodeerrors.md
docs/models/errors/startuniversaltranscoderesponsebody.md
docs/models/errors/gettimelineerrors.md
docs/models/errors/gettimelineresponsebody.md
docs/models/components/security.md
docs/sdks/plexapi/README.md
docs/sdks/server/README.md
docs/sdks/media/README.md
docs/sdks/activities/README.md
docs/sdks/butler/README.md
docs/sdks/hubs/README.md
docs/sdks/search/README.md
docs/sdks/library/README.md
docs/sdks/log/README.md
docs/sdks/playlists/README.md
docs/sdks/security/README.md
docs/sdks/sessions/README.md
docs/sdks/updater/README.md
docs/sdks/video/README.md
USAGE.md
.gitattributes

27
jsr.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "@lukehagar/plexjs",
"version": "0.15.0",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
"./models/components": "./src/models/components/index.ts",
"./models/operations": "./src/models/operations/index.ts",
"./lib/config": "./src/lib/config.ts",
"./lib/http": "./src/lib/http.ts",
"./lib/retries": "./src/lib/retries.ts",
"./lib/sdks": "./src/lib/sdks.ts",
"./types": "./src/types/index.ts"
},
"publish": {
"include": [
"LICENSE",
"README.md",
"RUNTIMES.md",
"USAGE.md",
"jsr.json",
"src/**/*.ts"
]
}
}

350
package-lock.json generated
View File

@@ -1,21 +1,21 @@
{
"name": "@lukehagar/plexjs",
"version": "0.10.2",
"version": "0.15.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@lukehagar/plexjs",
"version": "0.10.2",
"version": "0.15.0",
"devDependencies": {
"@types/jsonpath": "^0.2.4",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.13.2",
"eslint": "^8.55.0",
"@typescript-eslint/eslint-plugin": "^7.7.1",
"@typescript-eslint/parser": "^7.7.1",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.0",
"typescript": "^5.3.3",
"zod": "^3.22.4"
"eslint-plugin-import": "^2.29.1",
"typescript": "^5.4.5",
"zod": "^3.23.4"
},
"peerDependencies": {
"zod": ">= 3"
@@ -100,9 +100,9 @@
}
},
"node_modules/@eslint/js": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
"integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -217,39 +217,39 @@
"dev": true
},
"node_modules/@types/semver": {
"version": "7.5.7",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz",
"integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==",
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
"integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz",
"integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/type-utils": "6.21.0",
"@typescript-eslint/utils": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/type-utils": "7.7.1",
"@typescript-eslint/utils": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
"semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
"eslint": "^7.0.0 || ^8.0.0"
"@typescript-eslint/parser": "^7.0.0",
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -258,26 +258,26 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
"integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz",
"integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/typescript-estree": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/typescript-estree": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^7.0.0 || ^8.0.0"
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -286,16 +286,16 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
"integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz",
"integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0"
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -303,25 +303,25 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
"integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz",
"integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==",
"dev": true,
"dependencies": {
"@typescript-eslint/typescript-estree": "6.21.0",
"@typescript-eslint/utils": "6.21.0",
"@typescript-eslint/typescript-estree": "7.7.1",
"@typescript-eslint/utils": "7.7.1",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
"ts-api-utils": "^1.3.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^7.0.0 || ^8.0.0"
"eslint": "^8.56.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -330,12 +330,12 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
"integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz",
"integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==",
"dev": true,
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -343,22 +343,22 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
"integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz",
"integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"minimatch": "9.0.3",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
"minimatch": "^9.0.4",
"semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -371,41 +371,41 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
"integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz",
"integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/typescript-estree": "6.21.0",
"semver": "^7.5.4"
"@types/json-schema": "^7.0.15",
"@types/semver": "^7.5.8",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/typescript-estree": "7.7.1",
"semver": "^7.6.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"eslint": "^7.0.0 || ^8.0.0"
"eslint": "^8.56.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
"integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz",
"integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "6.21.0",
"eslint-visitor-keys": "^3.4.1"
"@typescript-eslint/types": "7.7.1",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
"node": "^18.18.0 || >=20.0.0"
},
"funding": {
"type": "opencollective",
@@ -978,16 +978,16 @@
}
},
"node_modules/eslint": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
"integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@eslint/js": "8.57.0",
"@humanwhocodes/config-array": "^0.11.14",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -2151,9 +2151,9 @@
}
},
"node_modules/minimatch": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -2799,9 +2799,9 @@
}
},
"node_modules/ts-api-utils": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz",
"integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
"integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
"engines": {
"node": ">=16"
@@ -2920,9 +2920,9 @@
}
},
"node_modules/typescript": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -3031,9 +3031,9 @@
}
},
"node_modules/zod": {
"version": "3.22.4",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
"integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
"version": "3.23.4",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.4.tgz",
"integrity": "sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
@@ -3101,9 +3101,9 @@
}
},
"@eslint/js": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
"integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"dev": true
},
"@humanwhocodes/config-array": {
@@ -3195,110 +3195,110 @@
"dev": true
},
"@types/semver": {
"version": "7.5.7",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz",
"integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==",
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
"integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz",
"integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==",
"dev": true,
"requires": {
"@eslint-community/regexpp": "^4.5.1",
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/type-utils": "6.21.0",
"@typescript-eslint/utils": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/type-utils": "7.7.1",
"@typescript-eslint/utils": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
"semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
}
},
"@typescript-eslint/parser": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
"integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz",
"integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==",
"dev": true,
"requires": {
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/typescript-estree": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/typescript-estree": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
"integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz",
"integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==",
"dev": true,
"requires": {
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0"
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1"
}
},
"@typescript-eslint/type-utils": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
"integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz",
"integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==",
"dev": true,
"requires": {
"@typescript-eslint/typescript-estree": "6.21.0",
"@typescript-eslint/utils": "6.21.0",
"@typescript-eslint/typescript-estree": "7.7.1",
"@typescript-eslint/utils": "7.7.1",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
"ts-api-utils": "^1.3.0"
}
},
"@typescript-eslint/types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
"integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz",
"integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
"integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz",
"integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==",
"dev": true,
"requires": {
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/visitor-keys": "6.21.0",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/visitor-keys": "7.7.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
"minimatch": "9.0.3",
"semver": "^7.5.4",
"ts-api-utils": "^1.0.1"
"minimatch": "^9.0.4",
"semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
}
},
"@typescript-eslint/utils": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
"integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz",
"integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
"@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/types": "6.21.0",
"@typescript-eslint/typescript-estree": "6.21.0",
"semver": "^7.5.4"
"@types/json-schema": "^7.0.15",
"@types/semver": "^7.5.8",
"@typescript-eslint/scope-manager": "7.7.1",
"@typescript-eslint/types": "7.7.1",
"@typescript-eslint/typescript-estree": "7.7.1",
"semver": "^7.6.0"
}
},
"@typescript-eslint/visitor-keys": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
"integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz",
"integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==",
"dev": true,
"requires": {
"@typescript-eslint/types": "6.21.0",
"eslint-visitor-keys": "^3.4.1"
"@typescript-eslint/types": "7.7.1",
"eslint-visitor-keys": "^3.4.3"
}
},
"@ungap/structured-clone": {
@@ -3715,16 +3715,16 @@
"dev": true
},
"eslint": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
"integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@eslint/js": "8.57.0",
"@humanwhocodes/config-array": "^0.11.14",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -4588,9 +4588,9 @@
}
},
"minimatch": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
"requires": {
"brace-expansion": "^2.0.1"
@@ -5024,9 +5024,9 @@
}
},
"ts-api-utils": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz",
"integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
"integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
"dev": true,
"requires": {}
},
@@ -5110,9 +5110,9 @@
}
},
"typescript": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"dev": true
},
"unbox-primitive": {
@@ -5190,9 +5190,9 @@
"dev": true
},
"zod": {
"version": "3.22.4",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
"integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
"version": "3.23.4",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.4.tgz",
"integrity": "sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==",
"dev": true
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "@lukehagar/plexjs",
"version": "0.10.2",
"author": "LukeHagar",
"version": "0.15.0",
"author": "LukeHagar",
"main": "./index.js",
"sideEffects": false,
"repository": {
@@ -14,19 +14,18 @@
"build": "tsc",
"prepare": "npm run build"
},
"keywords": [],
"peerDependencies": {
"zod": ">= 3"
},
"devDependencies": {
"@types/jsonpath": "^0.2.4",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.13.2",
"eslint": "^8.55.0",
"@typescript-eslint/eslint-plugin": "^7.7.1",
"@typescript-eslint/parser": "^7.7.1",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.0",
"typescript": "^5.3.3",
"zod": "^3.22.4"
"eslint-plugin-import": "^2.29.1",
"typescript": "^5.4.5",
"zod": "^3.23.4"
},
"dependencies": {

View File

@@ -2,6 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { RequestInput } from "../lib/http";
import {
AfterErrorContext,
AfterErrorHook,
@@ -9,6 +10,8 @@ import {
AfterSuccessHook,
BeforeRequestContext,
BeforeRequestHook,
BeforeCreateRequestHook,
BeforeCreateRequestContext,
Hooks,
SDKInitHook,
SDKInitOptions,
@@ -18,6 +21,7 @@ import { initHooks } from "./registration";
export class SDKHooks implements Hooks {
sdkInitHooks: SDKInitHook[] = [];
beforeCreateRequestHooks: BeforeCreateRequestHook[] = [];
beforeRequestHooks: BeforeRequestHook[] = [];
afterSuccessHooks: AfterSuccessHook[] = [];
afterErrorHooks: AfterErrorHook[] = [];
@@ -30,6 +34,10 @@ export class SDKHooks implements Hooks {
this.sdkInitHooks.push(hook);
}
registerBeforeCreateRequestHook(hook: BeforeCreateRequestHook) {
this.beforeCreateRequestHooks.push(hook);
}
registerBeforeRequestHook(hook: BeforeRequestHook) {
this.beforeRequestHooks.push(hook);
}
@@ -46,6 +54,16 @@ export class SDKHooks implements Hooks {
return this.sdkInitHooks.reduce((opts, hook) => hook.sdkInit(opts), opts);
}
beforeCreateRequest(hookCtx: BeforeCreateRequestContext, input: RequestInput): RequestInput {
let inp = input;
for (const hook of this.beforeCreateRequestHooks) {
inp = hook.beforeCreateRequest(hookCtx, inp);
}
return inp;
}
async beforeRequest(hookCtx: BeforeRequestContext, request: Request): Promise<Request> {
let req = request;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { HTTPClient } from "../lib/http";
import { HTTPClient, RequestInput } from "../lib/http";
export type HookContext = {
operationID: string;
@@ -16,6 +16,8 @@ export type SDKInitOptions = {
baseURL: URL | null;
client: HTTPClient;
};
export type BeforeCreateRequestContext = HookContext & {};
export type BeforeRequestContext = HookContext & {};
export type AfterSuccessContext = HookContext & {};
export type AfterErrorContext = HookContext & {};
@@ -28,30 +30,41 @@ export interface SDKInitHook {
sdkInit: (opts: SDKInitOptions) => SDKInitOptions;
}
/**
* BeforeRequestHook is called before the SDK sends a request. The hook can
* modify the request before it is sent or throw an error to stop the request
* from being sent.
*/
export interface BeforeCreateRequestHook {
/**
* A hook that is called before the SDK creates a `Request` object. The hook
* can modify how a request is constructed since certain modifications, like
* changing the request URL, cannot be done on a request object directly.
*/
beforeCreateRequest: (hookCtx: BeforeCreateRequestContext, input: RequestInput) => RequestInput;
}
export interface BeforeRequestHook {
/**
* A hook that is called before the SDK sends a request. The hook can
* introduce instrumentation code such as logging, tracing and metrics or
* replace the request before it is sent or throw an error to stop the
* request from being sent.
*/
beforeRequest: (hookCtx: BeforeRequestContext, request: Request) => Awaitable<Request>;
}
/**
* AfterSuccessHook is called after the SDK receives a response. The hook can
* modify the response before it is handled or throw an error to stop the
* response from being handled.
*/
export interface AfterSuccessHook {
/**
* A hook that is called after the SDK receives a response. The hook can
* introduce instrumentation code such as logging, tracing and metrics or
* modify the response before it is handled or throw an error to stop the
* response from being handled.
*/
afterSuccess: (hookCtx: AfterSuccessContext, response: Response) => Awaitable<Response>;
}
/**
* AfterErrorHook is called after the SDK encounters an error, or a
* non-successful response. The hook can modify the response if available
* otherwise modify the error.
*/
export interface AfterErrorHook {
/**
* A hook that is called after the SDK encounters an error, or a
* non-successful response. The hook can introduce instrumentation code such
* as logging, tracing and metrics or modify the response or error values.
*/
afterError: (
hookCtx: AfterErrorContext,
response: Response | null,
@@ -65,6 +78,8 @@ export interface AfterErrorHook {
export interface Hooks {
/** Registers a hook to be used by the SDK for initialization event. */
registerSDKInitHook(hook: SDKInitHook): void;
/** Registers a hook to be used by the SDK for to modify `Request` construction. */
registerBeforeCreateRequestHook(hook: BeforeCreateRequestHook): void;
/** Registers a hook to be used by the SDK for the before request event. */
registerBeforeRequestHook(hook: BeforeRequestHook): void;
/** Registers a hook to be used by the SDK for the after success event. */

View File

@@ -4,7 +4,7 @@
import { HTTPClient } from "./http";
import { RetryConfig } from "./retries";
import { pathToFunc } from "./url";
import { Params, pathToFunc } from "./url";
/**
* Contains the list of servers available to the SDK
@@ -27,6 +27,11 @@ export enum ServerProtocol {
export type SDKOptions = {
accessToken?: string | (() => Promise<string>);
/**
* Allows setting the xPlexClientIdentifier parameter for all supported operations
*/
xPlexClientIdentifier?: string;
httpClient?: HTTPClient;
/**
* Allows overriding the default server used by the SDK
@@ -57,14 +62,14 @@ export type SDKOptions = {
export function serverURLFromOptions(options: SDKOptions): URL | null {
let serverURL = options.serverURL;
const serverParams = [
const serverParams: Params[] = [
{
protocol: options.protocol?.toString() ?? "http",
ip: options.ip?.toString() ?? "10.10.10.47",
port: options.port?.toString() ?? "32400",
protocol: options.protocol ?? "http",
ip: options.ip ?? "10.10.10.47",
port: options.port ?? "32400",
},
];
let params: Record<string, string> = {};
let params: Params = {};
if (!serverURL) {
const serverIdx = options.serverIdx ?? 0;
@@ -79,10 +84,10 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
return new URL(u);
}
export const SDK_METADATA = Object.freeze({
export const SDK_METADATA = {
language: "typescript",
openapiDocVersion: "0.0.3",
sdkVersion: "0.10.2",
genVersion: "2.281.2",
userAgent: "speakeasy-sdk/typescript 0.10.2 2.281.2 0.0.3 @lukehagar/plexjs",
});
sdkVersion: "0.15.0",
genVersion: "2.326.3",
userAgent: "speakeasy-sdk/typescript 0.15.0 2.326.3 0.0.3 @lukehagar/plexjs",
} as const;

View File

@@ -15,7 +15,7 @@ export function encodeMatrix(
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) {
): string {
let out = "";
const pairs: [string, unknown][] = options?.explode
? explode(key, value)
@@ -65,7 +65,7 @@ export function encodeLabel(
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) {
): string {
let out = "";
const pairs: [string, unknown][] = options?.explode
? explode(key, value)
@@ -100,7 +100,13 @@ export function encodeLabel(
return out;
}
function formEncoder(sep: string) {
type FormEncoder = (
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) => string;
function formEncoder(sep: string): FormEncoder {
return (
key: string,
value: unknown,
@@ -157,7 +163,7 @@ export function encodeBodyForm(
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) {
): string {
let out = "";
const pairs: [string, unknown][] = options?.explode
? explode(key, value)
@@ -200,7 +206,7 @@ export function encodeDeepObject(
key: string,
value: unknown,
options?: { charEncoding?: "percent" | "none" },
) {
): string {
if (value == null) {
return "";
}
@@ -247,7 +253,7 @@ export function encodeJSON(
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) {
): string {
if (typeof value === "undefined") {
return "";
}
@@ -265,7 +271,7 @@ export const encodeSimple = (
key: string,
value: unknown,
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
) => {
): string => {
let out = "";
const pairs: [string, unknown][] = options?.explode
? explode(key, value)
@@ -337,7 +343,7 @@ function serializeValue(value: unknown): string {
return `${value}`;
}
function jsonReplacer(_: string, value: unknown) {
function jsonReplacer(_: string, value: unknown): unknown {
if (value instanceof Uint8Array) {
return bytesToBase64(value);
} else {

View File

@@ -7,15 +7,38 @@ export type Fetcher = (
init?: RequestInit,
) => Promise<Response>;
const DEFAULT_FETCHER: Fetcher = (input, init) => fetch(input, init);
export type Awaitable<T> = T | Promise<T>;
const DEFAULT_FETCHER: Fetcher = (input, init) => {
// If input is a Request and init is undefined, Bun will discard the method,
// headers, body and other options that were set on the request object.
// Node.js and browers would ignore an undefined init value. This check is
// therefore needed for interop with Bun.
if (init == null) {
return fetch(input);
} else {
return fetch(input, init);
}
};
export type RequestInput = {
/**
* The URL the request will use.
*/
url: URL;
/**
* Options used to create a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
*/
options?: RequestInit | undefined;
};
export interface HTTPClientOptions {
fetcher?: Fetcher;
}
type BeforeRequestHook = (req: Request) => Request | void;
type RequestErrorHook = (err: unknown, req: Request) => void;
type ResponseHook = (res: Response, req: Request) => void;
export type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
export type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
export type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
export class HTTPClient {
private fetcher: Fetcher;
@@ -28,17 +51,27 @@ export class HTTPClient {
}
async request(request: Request): Promise<Response> {
const req = this.requestHooks.reduce((currentReq, fn) => {
const nextRequest = fn(currentReq);
return nextRequest || currentReq;
}, request);
let req = request;
for (const hook of this.requestHooks) {
const nextRequest = await hook(req);
if (nextRequest) {
req = nextRequest;
}
}
try {
const res = await this.fetcher(req);
this.responseHooks.forEach((fn) => fn(res, req));
for (const hook of this.responseHooks) {
await hook(res, req);
}
return res;
} catch (err) {
this.requestErrorHooks.forEach((fn) => fn(err, req));
for (const hook of this.requestErrorHooks) {
await hook(err, req);
}
throw err;
}
}
@@ -88,7 +121,7 @@ export class HTTPClient {
| [hook: "beforeRequest", fn: BeforeRequestHook]
| [hook: "requestError", fn: RequestErrorHook]
| [hook: "response", fn: ResponseHook]
) {
): this {
let target: unknown[];
if (args[0] === "beforeRequest") {
target = this.requestHooks;
@@ -108,7 +141,7 @@ export class HTTPClient {
return this;
}
clone() {
clone(): HTTPClient {
const child = new HTTPClient(this.options);
child.requestHooks = this.requestHooks.slice();
child.requestErrorHooks = this.requestErrorHooks.slice();
@@ -118,29 +151,56 @@ export class HTTPClient {
}
}
export function matchContentType(response: Response, pattern: string): boolean {
if (pattern === "*" || pattern === "*/*") {
// A semicolon surrounded by optional whitespace characters is used to separate
// segments in a media type string.
const mediaParamSeparator = /\s*;\s*/g;
function matchContentType(response: Response, pattern: string): boolean {
// `*` is a special case which means anything is acceptable.
if (pattern === "*") {
return true;
}
const contentType =
response.headers.get("content-type") ?? "application/octet-stream";
let contentType =
response.headers.get("content-type")?.trim() || "application/octet-stream";
contentType = contentType.toLowerCase();
const idx = contentType.split(";").findIndex((raw) => {
const ctype = raw.trim();
if (ctype === pattern) {
return true;
}
const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
const [wantType = "", ...wantParams] = wantParts;
const parts = ctype.split("/");
if (parts.length !== 2) {
if (wantType.split("/").length !== 2) {
return false;
}
const gotParts = contentType.split(mediaParamSeparator);
const [gotType = "", ...gotParams] = gotParts;
const [type = "", subtype = ""] = gotType.split("/");
if (!type || !subtype) {
return false;
}
if (
wantType !== "*/*" &&
gotType !== wantType &&
`${type}/*` !== wantType &&
`*/${subtype}` !== wantType
) {
return false;
}
if (gotParams.length < wantParams.length) {
return false;
}
const params = new Set(gotParams);
for (const wantParam of wantParams) {
if (!params.has(wantParam)) {
return false;
}
}
return `${parts[0]}/*` === pattern || `*/${parts[1]}` === pattern;
});
return idx >= 0;
return true;
}
const codeRangeRE = new RegExp("^[0-9]xx$", "i");
@@ -148,7 +208,7 @@ const codeRangeRE = new RegExp("^[0-9]xx$", "i");
export function matchStatusCode(
response: Response,
codes: number | string | (number | string)[],
) {
): boolean {
const actual = `${response.status}`;
const expectedCodes = Array.isArray(codes) ? codes : [codes];
if (!expectedCodes.length) {

View File

@@ -40,7 +40,11 @@ export class ClientSDK {
this.client = client;
}
protected createRequest$(conf: RequestConfig, options?: RequestOptions) {
protected createRequest$(
context: HookContext,
conf: RequestConfig,
options?: RequestOptions
): Request {
const { method, path, query, headers: opHeaders, security } = conf;
const base = conf.baseURL ?? this.baseURL;
@@ -71,10 +75,10 @@ export class ClientSDK {
const headers = new Headers(opHeaders);
const username = security?.basic.username || "";
const password = security?.basic.password || "";
if (username || password) {
const encoded = stringToBase64([username, password].join(":"));
const username = security?.basic.username;
const password = security?.basic.password;
if (username != null || password != null) {
const encoded = stringToBase64([username || "", password || ""].join(":"));
headers.set("Authorization", `Basic ${encoded}`);
}
@@ -95,12 +99,17 @@ export class ClientSDK {
headers.set(k, v);
}
return new Request(reqURL, {
...options?.fetchOptions,
body: conf.body ?? null,
headers,
method,
const input = this.hooks$.beforeCreateRequest(context, {
url: reqURL,
options: {
...options?.fetchOptions,
body: conf.body ?? null,
headers,
method,
},
});
return new Request(input.url, input.options);
}
protected async do$(
@@ -109,7 +118,7 @@ export class ClientSDK {
context: HookContext;
errorCodes: number | string | (number | string)[];
}
) {
): Promise<Response> {
const { context, errorCodes } = options;
let response = await this.client.request(await this.hooks$.beforeRequest(context, req));

View File

@@ -30,21 +30,15 @@ export class SecurityError extends Error {
}
export type SecurityState = {
basic: { username: string; password?: string };
basic: { username?: string | undefined; password?: string | undefined };
headers: Record<string, string>;
queryParams: Record<string, string>;
cookies: Record<string, string>;
};
type SecurityInputBasicPacked = {
type: "http:basic";
value: { username: string; password?: string } | null | undefined;
};
type SecurityInputBasic = {
type: "http:basic";
value: string | null | undefined;
fieldName: "username" | "password";
value: { username?: string | undefined; password?: string | undefined } | null | undefined;
};
type SecurityInputBearer = {
@@ -74,12 +68,11 @@ type SecurityInputOAuth2 = {
type SecurityInputOAuth2ClientCredentials = {
type: "oauth2:client_credentials";
value: string | null | undefined;
fieldName: "clientID" | "clientSecret";
fieldName: string;
};
export type SecurityInput =
| SecurityInputBasic
| SecurityInputBasicPacked
| SecurityInputBearer
| SecurityInputAPIKey
| SecurityInputOAuth2
@@ -94,7 +87,21 @@ export function resolveSecurity(...options: SecurityInput[][]): SecurityState |
cookies: {},
};
const option = options.find((opts) => opts.every((o) => Boolean(o.value)));
const option = options.find((opts) => {
return opts.every((o) => {
if (o.value == null) {
return false;
} else if (o.type === "http:basic") {
return o.value.username != null || o.value.password != null;
} else if (typeof o.value === "string") {
return !!o.value;
} else {
throw new Error(
`Unrecognized security type: ${o.type} (value type: ${typeof o.value})`
);
}
});
});
if (option == null) {
return null;
}
@@ -139,16 +146,12 @@ export function resolveSecurity(...options: SecurityInput[][]): SecurityState |
return state;
}
function applyBasic(state: SecurityState, spec: SecurityInputBasic | SecurityInputBasicPacked) {
function applyBasic(state: SecurityState, spec: SecurityInputBasic) {
if (spec.value == null) {
return;
}
if ("fieldName" in spec) {
state.basic[spec.fieldName] = spec.value;
} else {
state.basic = spec.value;
}
state.basic = spec.value;
}
function applyBearer(
@@ -166,8 +169,14 @@ function applyBearer(
state.headers[spec.fieldName] = value;
}
export function resolveGlobalSecurity(security: Partial<components.Security> | null | undefined) {
export function resolveGlobalSecurity(
security: Partial<components.Security> | null | undefined
): SecurityState | null {
return resolveSecurity([
{ value: security?.accessToken, fieldName: "X-Plex-Token", type: "apiKey:header" },
{
fieldName: "X-Plex-Token",
type: "apiKey:header",
value: security?.accessToken,
},
]);
}

View File

@@ -4,10 +4,12 @@
const hasOwn = Object.prototype.hasOwnProperty;
export type Params = Partial<Record<string, string | number>>;
export function pathToFunc(
pathPattern: string,
options?: { charEncoding?: "percent" | "none" },
): (params?: Record<string, string | number>) => string {
): (params?: Params) => string {
const paramRE = /\{([a-zA-Z0-9_]+?)\}/g;
return function buildURLPath(params: Record<string, unknown> = {}): string {

View File

@@ -116,6 +116,7 @@ export namespace AddPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<AddPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace ApplyUpdatesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<ApplyUpdatesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -119,6 +119,7 @@ export namespace CancelServerActivitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CancelServerActivitiesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace CheckForUpdatesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CheckForUpdatesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -119,6 +119,7 @@ export namespace ClearPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<ClearPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace CreatePlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CreatePlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace DeleteLibraryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<DeleteLibraryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace DeletePlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<DeletePlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace EnablePaperTrailResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<EnablePaperTrailErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -116,6 +116,7 @@ export namespace GetAvailableClientsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetAvailableClientsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetButlerTasksResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetButlerTasksErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetDevicesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetDevicesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetFileHashResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetFileHashErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetGlobalHubsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetGlobalHubsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetLibrariesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibrariesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetLibraryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibraryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetLibraryHubsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibraryHubsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetMetadataResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMetadataErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -116,6 +116,7 @@ export namespace GetMetadataChildrenResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMetadataChildrenErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetMyPlexAccountResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMyPlexAccountErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetOnDeckResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetOnDeckErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetPinResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPinErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetPlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -116,6 +116,7 @@ export namespace GetPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetPlaylistsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetRecentlyAddedResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetRecentlyAddedErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetResizedPhotoResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetResizedPhotoErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetSearchResultsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSearchResultsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -116,6 +116,7 @@ export namespace GetServerActivitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerActivitiesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -119,6 +119,7 @@ export namespace GetServerCapabilitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<Errors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetServerIdentityResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerIdentityErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetServerListResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerListErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -116,6 +116,7 @@ export namespace GetServerPreferencesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerPreferencesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetSessionHistoryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSessionHistoryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetSessionsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSessionsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -129,6 +129,7 @@ export namespace GetSourceConnectionInformationResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSourceConnectionInformationErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetStatisticsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetStatisticsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -115,6 +115,7 @@ export namespace GetTimelineResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetTimelineErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

Some files were not shown because too many files have changed in this diff Show More