Compare commits

...

34 Commits

Author SHA1 Message Date
speakeasybot
a449d25ac4 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.285.1 2024-05-09 03:47:33 +00:00
speakeasybot
6af375d524 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.285.1 2024-05-09 03:32:46 +00:00
speakeasybot
fc838e8ebf ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.285.1 2024-05-09 00:27:26 +00:00
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
77 changed files with 2707 additions and 2903 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

@@ -1,26 +1,28 @@
name: Generate name: Generate
permissions: permissions:
checks: write checks: write
contents: write contents: write
pull-requests: write pull-requests: write
statuses: write statuses: write
"on":
workflow_dispatch: on:
inputs: workflow_dispatch:
force: inputs:
description: Force generation of SDKs force:
type: boolean description: Force generation of SDKs
default: false type: boolean
schedule: default: false
- cron: 0 0 * * * schedule:
- cron: 0 0 * * *
jobs: jobs:
generate: generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15 uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
with: with:
force: ${{ github.event.inputs.force }} force: ${{ github.event.inputs.force }}
mode: direct mode: direct
speakeasy_version: latest speakeasy_version: latest
secrets: secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }} github_access_token: ${{ secrets.GITHUB_TOKEN }}
npm_token: ${{ secrets.NPM_TOKEN }} npm_token: ${{ secrets.NPM_TOKEN }}
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }} speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}

View File

@@ -1,27 +1,32 @@
lockVersion: 2.0.0 lockVersion: 2.0.0
id: 16f22cbf-f23f-4419-8924-3a4b06381947 id: 16f22cbf-f23f-4419-8924-3a4b06381947
management: management:
docChecksum: a91eaf9ec1e6a3a6f4bf0571f5b18bae docChecksum: 99616de456f2dedb2cba4420596c067b
docVersion: 0.0.3 docVersion: 0.0.3
speakeasyVersion: 1.260.6 speakeasyVersion: 1.285.1
generationVersion: 2.311.1 generationVersion: 2.326.3
releaseVersion: 0.13.0 releaseVersion: 0.15.2
configChecksum: 62265d55fc035cecbf6f03081c6e5587 configChecksum: 89b96f99c1f640afd0e03c5534ea436b
repoURL: https://github.com/LukeHagar/plexjs.git repoURL: https://github.com/LukeHagar/plexjs.git
repoSubDirectory: . repoSubDirectory: .
installationURL: https://github.com/LukeHagar/plexjs installationURL: https://github.com/LukeHagar/plexjs
published: true published: true
features: features:
typescript: typescript:
additionalDependencies: 0.1.0
constsAndDefaults: 0.1.5 constsAndDefaults: 0.1.5
core: 3.8.0 core: 3.9.3
flattening: 2.81.1 flattening: 2.81.1
globalSecurity: 2.82.9 globalSecurity: 2.82.9
globalSecurityCallbacks: 0.1.0
globalSecurityFlattening: 0.1.0
globalServerURLs: 2.82.4 globalServerURLs: 2.82.4
globals: 2.82.1 globals: 2.82.1
methodServerURLs: 2.82.1 methodServerURLs: 2.82.1
nameOverrides: 2.81.2 nameOverrides: 2.81.2
responseFormat: 0.2.3 responseFormat: 0.2.3
sdkHooks: 0.1.0
unions: 2.85.4
generatedFiles: generatedFiles:
- src/sdk/server.ts - src/sdk/server.ts
- src/sdk/media.ts - src/sdk/media.ts
@@ -92,7 +97,6 @@ generatedFiles:
- src/models/operations/getlibraries.ts - src/models/operations/getlibraries.ts
- src/models/operations/getlibrary.ts - src/models/operations/getlibrary.ts
- src/models/operations/deletelibrary.ts - src/models/operations/deletelibrary.ts
- src/models/operations/getlibraryitems.ts
- src/models/operations/refreshlibrary.ts - src/models/operations/refreshlibrary.ts
- src/models/operations/searchlibrary.ts - src/models/operations/searchlibrary.ts
- src/models/operations/getmetadata.ts - src/models/operations/getmetadata.ts
@@ -315,19 +319,6 @@ generatedFiles:
- docs/models/operations/getlibraryresponse.md - docs/models/operations/getlibraryresponse.md
- docs/models/operations/deletelibraryrequest.md - docs/models/operations/deletelibraryrequest.md
- docs/models/operations/deletelibraryresponse.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/refreshlibraryrequest.md
- docs/models/operations/refreshlibraryresponse.md - docs/models/operations/refreshlibraryresponse.md
- docs/models/operations/type.md - docs/models/operations/type.md

View File

@@ -12,7 +12,7 @@ generation:
auth: auth:
oAuth2ClientCredentialsEnabled: false oAuth2ClientCredentialsEnabled: false
typescript: typescript:
version: 0.13.0 version: 0.15.2
additionalDependencies: additionalDependencies:
dependencies: {} dependencies: {}
devDependencies: {} devDependencies: {}
@@ -32,6 +32,7 @@ typescript:
webhooks: models/webhooks webhooks: models/webhooks
inputModelSuffix: input inputModelSuffix: input
maxMethodParams: 4 maxMethodParams: 4
methodArguments: require-security-and-request
outputModelSuffix: output outputModelSuffix: output
packageName: '@lukehagar/plexjs' packageName: '@lukehagar/plexjs'
responseFormat: envelope responseFormat: envelope

View File

@@ -1,9 +1,18 @@
speakeasyVersion: 1.260.6 speakeasyVersion: 1.285.1
sources: sources:
my-source: {} my-source:
sourceNamespace: my-source
sourceRevisionDigest: sha256:d02f790aaad0af14e824d3d12f3cfee2ff053696264b98e8a50d9c7e51d01c9c
sourceBlobDigest: sha256:d6b9c5fdd8cb9e49ac59809162309a04d47249564668baf4250b77819cfee0e0
tags:
- latest
- main
targets: targets:
plexjs: plexjs:
source: my-source source: my-source
sourceNamespace: my-source
sourceRevisionDigest: sha256:d02f790aaad0af14e824d3d12f3cfee2ff053696264b98e8a50d9c7e51d01c9c
sourceBlobDigest: sha256:d6b9c5fdd8cb9e49ac59809162309a04d47249564668baf4250b77819cfee0e0
outLocation: /github/workspace/repo outLocation: /github/workspace/repo
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0
@@ -12,6 +21,8 @@ workflow:
my-source: my-source:
inputs: inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
registry:
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
targets: targets:
plexjs: plexjs:
target: typescript target: typescript
@@ -19,3 +30,5 @@ workflow:
publish: publish:
npm: npm:
token: $NPM_TOKEN token: $NPM_TOKEN
codeSamples:
output: codeSamples.yaml

View File

@@ -4,6 +4,8 @@ sources:
my-source: my-source:
inputs: inputs:
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
registry:
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
targets: targets:
plexjs: plexjs:
target: typescript target: typescript
@@ -11,3 +13,5 @@ targets:
publish: publish:
npm: npm:
token: $NPM_TOKEN token: $NPM_TOKEN
codeSamples:
output: codeSamples.yaml

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; }

View File

@@ -33,7 +33,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -104,7 +104,6 @@ run();
* [getLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries * [getLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries
* [getLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details * [getLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details
* [deleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section * [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 * [refreshLibrary](docs/sdks/library/README.md#refreshlibrary) - Refresh Library
* [searchLibrary](docs/sdks/library/README.md#searchlibrary) - Search Library * [searchLibrary](docs/sdks/library/README.md#searchlibrary) - Search Library
* [getMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata * [getMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata
@@ -176,7 +175,7 @@ import * as errors from "@lukehagar/plexjs/models/errors";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -228,7 +227,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
serverIdx: 0, serverIdx: 0,
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -259,7 +258,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
serverURL: "{protocol}://{ip}:{port}", serverURL: "{protocol}://{ip}:{port}",
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -280,14 +279,11 @@ The server URL can also be overridden on a per-operation basis, provided a serve
import { PlexAPI } from "@lukehagar/plexjs"; import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const strong = false; const result = await plexAPI.plex.getPin(false, "Postman", {
const xPlexClientIdentifier = "<value>";
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier, {
serverURL: "https://plex.tv/api/v2", serverURL: "https://plex.tv/api/v2",
}); });
@@ -330,7 +326,7 @@ const httpClient = new HTTPClient({
httpClient.addHook("beforeRequest", (request) => { httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(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"); nextRequest.headers.set("x-custom-header", "custom value");
@@ -366,7 +362,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -392,7 +388,7 @@ For supported JavaScript runtimes, please consult [RUNTIMES.md](RUNTIMES.md).
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. 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 `"<value>"` 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. 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 ### Available Globals
@@ -413,14 +409,11 @@ This is used to track the client application and its usage
import { PlexAPI } from "@lukehagar/plexjs"; import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const strong = false; const result = await plexAPI.plex.getPin(false, "Postman");
const xPlexClientIdentifier = "<value>";
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
// Handle the result // Handle the result
console.log(result); console.log(result);

View File

@@ -328,4 +328,224 @@ Based on:
### Generated ### Generated
- [typescript v0.13.0] . - [typescript v0.13.0] .
### Releases ### Releases
- [NPM v0.13.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.0 - . - [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 - .
## 2024-05-09 00:26:57
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.285.1 (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 - .
## 2024-05-09 03:30:33
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.285.1 (2.326.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.15.1] .
### Releases
- [NPM v0.15.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.15.1 - .
## 2024-05-09 03:45:22
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.285.1 (2.326.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.15.2] .
### Releases
- [NPM v0.15.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.15.2 - .

View File

@@ -4,7 +4,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {

1300
codeSamples.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -3,6 +3,6 @@
## Fields ## Fields
| Field | Type | Required | Description | | 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. | | `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 ## Fields
| Field | Type | Required | Description | | 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/> | | `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/> | | `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 ## Fields
| Field | Type | Required | Description | | 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/> | | `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 ## Fields
| Field | Type | Required | Description | | Field | Type | Required | Description | Example |
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
| `ratingKey` | *number* | :heavy_check_mark: | The rating key of the media item | | `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 | | `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 | | `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 | | `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE | 1 |
| `time` | *number* | :heavy_check_mark: | The time of the media item | | `time` | *number* | :heavy_check_mark: | The time of the media item | 2000 |
| `duration` | *number* | :heavy_check_mark: | The duration of the media item | | `duration` | *number* | :heavy_check_mark: | The duration of the media item | 10000 |
| `context` | *string* | :heavy_check_mark: | The context of the media item | | `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 | | `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 | | `playBackTime` | *number* | :heavy_check_mark: | The playback time of the media item | 2000 |
| `row` | *number* | :heavy_check_mark: | The row of the media item | | `row` | *number* | :heavy_check_mark: | The row of the media item | 1 |

View File

@@ -3,7 +3,7 @@
## Fields ## Fields
| Field | Type | Required | Description | | Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for | | `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/> | | `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 ## Fields
| Field | Type | Required | Description | | Field | Type | Required | Description | Example |
| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
| `hasMDE` | *number* | :heavy_check_mark: | Whether the media item has MDE | | `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 | | `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 | | `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 | | `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 | | `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 | | `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 | | `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 | | `directStream` | *number* | :heavy_minus_sign: | Whether to use direct stream or not | 0 |
| `subtitleSize` | *number* | :heavy_minus_sign: | The size of the subtitles | | `subtitleSize` | *number* | :heavy_minus_sign: | The size of the subtitles | 100 |
| `subtites` | *string* | :heavy_minus_sign: | The subtitles | | `subtites` | *string* | :heavy_minus_sign: | The subtitles | burn |
| `audioBoost` | *number* | :heavy_minus_sign: | The audio boost | | `audioBoost` | *number* | :heavy_minus_sign: | The audio boost | 100 |
| `location` | *string* | :heavy_minus_sign: | The location of the transcode session | | `location` | *string* | :heavy_minus_sign: | The location of the transcode session | lan |
| `mediaBufferSize` | *number* | :heavy_minus_sign: | The size of the media buffer | | `mediaBufferSize` | *number* | :heavy_minus_sign: | The size of the media buffer | 102400 |
| `session` | *string* | :heavy_minus_sign: | The session ID | | `session` | *string* | :heavy_minus_sign: | The session ID | zvcage8b7rkioqcm8f4uns4c |
| `addDebugOverlay` | *number* | :heavy_minus_sign: | Whether to add a debug overlay or not | | `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 | | `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 ## Fields
| Field | Type | Required | Description | | Field | Type | Required | Description | Example |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `key` | *string* | :heavy_check_mark: | the media key | | `key` | *string* | :heavy_check_mark: | the media key | |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | | `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. | | `state` | *string* | :heavy_check_mark: | The playback state of the media item. | played |

View File

@@ -28,7 +28,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -70,13 +70,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const activityUUID = "<value>"; const result = await plexAPI.activities.cancelServerActivities("25b71ed5-0f9d-461c-baa7-d404e9e10d3e");
const result = await plexAPI.activities.cancelServerActivities(activityUUID);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -87,11 +85,11 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `activityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | | `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` | 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.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 ### Response

View File

@@ -24,14 +24,11 @@ import { GetTransientTokenQueryParamType, Scope } from "@lukehagar/plexjs/models
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const type = GetTransientTokenQueryParamType.Delegation; const result = await plexAPI.authentication.getTransientToken(GetTransientTokenQueryParamType.Delegation, Scope.All);
const scope = Scope.All;
const result = await plexAPI.authentication.getTransientToken(type, scope);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -73,13 +70,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const source = "server://client-identifier"; const result = await plexAPI.authentication.getSourceConnectionInformation("server://client-identifier");
const result = await plexAPI.authentication.getSourceConnectionInformation(source);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -25,7 +25,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -72,7 +72,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -115,7 +115,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -163,13 +163,11 @@ import { TaskName } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const taskName = TaskName.CleanOldBundles; const result = await plexAPI.butler.startTask(TaskName.CleanOldBundles);
const result = await plexAPI.butler.startTask(taskName);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -210,13 +208,11 @@ import { PathParamTaskName } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const taskName = PathParamTaskName.BackupDatabase; const result = await plexAPI.butler.stopTask(PathParamTaskName.BackupDatabase);
const result = await plexAPI.butler.stopTask(taskName);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -23,14 +23,11 @@ import { OnlyTransient } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const count = 1262.49; const result = await plexAPI.hubs.getGlobalHubs(1262.49, OnlyTransient.One);
const onlyTransient = OnlyTransient.One;
const result = await plexAPI.hubs.getGlobalHubs(count, onlyTransient);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -72,15 +69,11 @@ import { QueryParamOnlyTransient } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sectionId = 6728.76; const result = await plexAPI.hubs.getLibraryHubs(6728.76, 9010.22, QueryParamOnlyTransient.Zero);
const count = 9010.22;
const onlyTransient = QueryParamOnlyTransient.Zero;
const result = await plexAPI.hubs.getLibraryHubs(sectionId, count, onlyTransient);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -13,7 +13,6 @@ API Calls interacting with Plex Media Server Libraries
* [getLibraries](#getlibraries) - Get All Libraries * [getLibraries](#getlibraries) - Get All Libraries
* [getLibrary](#getlibrary) - Get Library Details * [getLibrary](#getlibrary) - Get Library Details
* [deleteLibrary](#deletelibrary) - Delete Library Section * [deleteLibrary](#deletelibrary) - Delete Library Section
* [getLibraryItems](#getlibraryitems) - Get Library Items
* [refreshLibrary](#refreshlibrary) - Refresh Library * [refreshLibrary](#refreshlibrary) - Refresh Library
* [searchLibrary](#searchlibrary) - Search Library * [searchLibrary](#searchlibrary) - Search Library
* [getMetadata](#getmetadata) - Get Items Metadata * [getMetadata](#getmetadata) - Get Items Metadata
@@ -31,14 +30,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const url = "file://C:\Image.png&type=13"; const result = await plexAPI.library.getFileHash("file://C:\Image.png&type=13", 4462.17);
const type = 4462.17;
const result = await plexAPI.library.getFileHash(url, type);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -79,7 +75,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -127,7 +123,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -209,14 +205,11 @@ import { IncludeDetails } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sectionId = 1000; const result = await plexAPI.library.getLibrary(1000, IncludeDetails.Zero);
const includeDetails = IncludeDetails.Zero;
const result = await plexAPI.library.getLibrary(sectionId, includeDetails);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -256,13 +249,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sectionId = 1000; const result = await plexAPI.library.deleteLibrary(1000);
const result = await plexAPI.library.deleteLibrary(sectionId);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -290,73 +281,6 @@ run();
| errors.DeleteLibraryResponseBody | 401 | application/json | | errors.DeleteLibraryResponseBody | 401 | application/json |
| errors.SDKError | 4xx-5xx | */* | | 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";
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 451092;
const tag = Tag.Unwatched;
const result = await plexAPI.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 ## refreshLibrary
This endpoint Refreshes the library. This endpoint Refreshes the library.
@@ -369,13 +293,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sectionId = 934.16; const result = await plexAPI.library.refreshLibrary(934.16);
const result = await plexAPI.library.refreshLibrary(sectionId);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -433,14 +355,11 @@ import { Type } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sectionId = 933505; const result = await plexAPI.library.searchLibrary(933505, Type.Four);
const type = Type.Four;
const result = await plexAPI.library.searchLibrary(sectionId, type);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -480,13 +399,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const ratingKey = 8382.31; const result = await plexAPI.library.getMetadata(8382.31);
const result = await plexAPI.library.getMetadata(ratingKey);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -526,13 +443,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const ratingKey = 1539.14; const result = await plexAPI.library.getMetadataChildren(1539.14);
const result = await plexAPI.library.getMetadataChildren(ratingKey);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -572,7 +487,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {

View File

@@ -25,15 +25,11 @@ import { Level } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const level = Level.Three; const result = await plexAPI.log.logLine(Level.Three, "Test log message", "Postman");
const message = "Test log message";
const source = "Postman";
const result = await plexAPI.log.logLine(level, message, source);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -95,7 +91,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -141,7 +137,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {

View File

@@ -23,13 +23,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const key = 59398; const result = await plexAPI.media.markPlayed(59398);
const result = await plexAPI.media.markPlayed(key);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -68,13 +66,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const key = 59398; const result = await plexAPI.media.markUnplayed(59398);
const result = await plexAPI.media.markUnplayed(key);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -114,15 +110,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const key = "<value>"; const result = await plexAPI.media.updatePlayProgress("<value>", 90000, "played");
const time = 6900.91;
const state = "<value>";
const result = await plexAPI.media.updatePlayProgress(key, time, state);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -133,13 +125,13 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `key` | *string* | :heavy_check_mark: | the media key | | `key` | *string* | :heavy_check_mark: | the media key | |
| `time` | *number* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | | `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. | | `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` | 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.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 ### Response

View File

@@ -36,7 +36,7 @@ import { QueryParamType, Smart } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -85,14 +85,11 @@ import { PlaylistType, QueryParamSmart } from "@lukehagar/plexjs/models/operatio
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistType = PlaylistType.Audio; const result = await plexAPI.playlists.getPlaylists(PlaylistType.Audio, QueryParamSmart.Zero);
const smart = QueryParamSmart.Zero;
const result = await plexAPI.playlists.getPlaylists(playlistType, smart);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -134,13 +131,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 4109.48; const result = await plexAPI.playlists.getPlaylist(4109.48);
const result = await plexAPI.playlists.getPlaylist(playlistID);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -180,13 +175,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 216.22; const result = await plexAPI.playlists.deletePlaylist(216.22);
const result = await plexAPI.playlists.deletePlaylist(playlistID);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -226,15 +219,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 3915; const result = await plexAPI.playlists.updatePlaylist(3915, "<value>", "<value>");
const title = "<value>";
const summary = "<value>";
const result = await plexAPI.playlists.updatePlaylist(playlistID, title, summary);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -279,14 +268,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 5004.46; const result = await plexAPI.playlists.getPlaylistContents(5004.46, 9403.59);
const type = 9403.59;
const result = await plexAPI.playlists.getPlaylistContents(playlistID, type);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -327,13 +313,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 1893.18; const result = await plexAPI.playlists.clearPlaylistContents(1893.18);
const result = await plexAPI.playlists.clearPlaylistContents(playlistID);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -374,15 +358,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const playlistID = 8502.01; const result = await plexAPI.playlists.addPlaylistContents(8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123);
const uri = "server://12345/com.plexapp.plugins.library/library/metadata/1";
const playQueueID = 123;
const result = await plexAPI.playlists.addPlaylistContents(playlistID, uri, playQueueID);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -425,14 +405,11 @@ import { Force } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const path = "/home/barkley/playlist.m3u"; const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", Force.Zero);
const force = Force.Zero;
const result = await plexAPI.playlists.uploadPlaylist(path, force);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -21,14 +21,11 @@ Retrieve a Pin from Plex.tv for authentication flows
import { PlexAPI } from "@lukehagar/plexjs"; import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const strong = false; const result = await plexAPI.plex.getPin(false, "Postman");
const xPlexClientIdentifier = "<value>";
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -39,13 +36,13 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | 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/> | | `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/> | | `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` | 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.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. | | `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response ### Response
@@ -68,14 +65,11 @@ Retrieve an Access Token from Plex.tv after the Pin has already been authenticat
import { PlexAPI } from "@lukehagar/plexjs"; import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const pinID = "<value>"; const result = await plexAPI.plex.getToken("<value>", "Postman");
const xPlexClientIdentifier = "<value>";
const result = await plexAPI.plex.getToken(pinID, xPlexClientIdentifier);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -86,13 +80,13 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | Parameter | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for | | `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/> | | `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` | 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.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. | | `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 |
### Response ### Response

View File

@@ -35,15 +35,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const query = "dylan"; const result = await plexAPI.search.performSearch("dylan", 1516.53, 5);
const sectionId = 1516.53;
const limit = 5;
const result = await plexAPI.search.performSearch(query, sectionId, limit);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -88,15 +84,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const query = "dead+poop"; const result = await plexAPI.search.performVoiceSearch("dead+poop", 4094.8, 5);
const sectionId = 4094.8;
const limit = 5;
const result = await plexAPI.search.performVoiceSearch(query, sectionId, limit);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -137,13 +129,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const query = "110"; const result = await plexAPI.search.getSearchResults("110");
const result = await plexAPI.search.getSearchResults(query);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -28,7 +28,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -70,7 +70,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -112,7 +112,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -154,7 +154,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -196,7 +196,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -238,7 +238,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -282,7 +282,7 @@ import { MinSize, Upscale } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -333,7 +333,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {

View File

@@ -24,7 +24,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -66,7 +66,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -108,7 +108,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -150,13 +150,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const sessionKey = "zz7llzqlx8w9vnrsbnwhbmep"; const result = await plexAPI.sessions.stopTranscodeSession("zz7llzqlx8w9vnrsbnwhbmep");
const result = await plexAPI.sessions.stopTranscodeSession(sessionKey);
// Handle the result // Handle the result
console.log(result) console.log(result)

View File

@@ -21,13 +21,11 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const timespan = 411769; const result = await plexAPI.statistics.getStatistics(4);
const result = await plexAPI.statistics.getStatistics(timespan);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -38,11 +36,11 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | 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/> | | `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` | 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.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 ### Response

View File

@@ -24,7 +24,7 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
@@ -67,13 +67,11 @@ import { Download } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const download = Download.One; const result = await plexAPI.updater.checkForUpdates(Download.One);
const result = await plexAPI.updater.checkForUpdates(download);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -84,11 +82,11 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | 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. | | `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` | 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.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 ### Response
@@ -114,14 +112,11 @@ import { Skip, Tonight } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const tonight = Tonight.One; const result = await plexAPI.updater.applyUpdates(Tonight.One, Skip.One);
const skip = Skip.Zero;
const result = await plexAPI.updater.applyUpdates(tonight, skip);
// Handle the result // Handle the result
console.log(result) console.log(result)
@@ -132,12 +127,12 @@ run();
### Parameters ### Parameters
| Parameter | Type | Required | Description | | 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 | | `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`. | | `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` | 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.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 ### Response

View File

@@ -23,21 +23,21 @@ import { State } from "@lukehagar/plexjs/models/operations";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const result = await plexAPI.video.getTimeline({ const result = await plexAPI.video.getTimeline({
ratingKey: 716.56, ratingKey: 23409,
key: "<key>", key: "/library/metadata/23409",
state: State.Paused, state: State.Playing,
hasMDE: 7574.33, hasMDE: 1,
time: 3327.51, time: 2000,
duration: 7585.39, duration: 10000,
context: "<value>", context: "home:hub.continueWatching",
playQueueItemID: 1406.21, playQueueItemID: 1,
playBackTime: 2699.34, playBackTime: 2000,
row: 3536.42, row: 1,
}); });
// Handle the result // Handle the result
@@ -77,16 +77,27 @@ import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({ const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>", accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>", xPlexClientIdentifier: "Postman",
}); });
async function run() { async function run() {
const result = await plexAPI.video.startUniversalTranscode({ const result = await plexAPI.video.startUniversalTranscode({
hasMDE: 8924.99, hasMDE: 1,
path: "/etc/mail", path: "/library/metadata/23409",
mediaIndex: 9962.95, mediaIndex: 0,
partIndex: 1232.82, partIndex: 0,
protocol: "<value>", 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 // 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

View File

@@ -2,7 +2,7 @@
{ {
"name": "@lukehagar/plexjs", "name": "@lukehagar/plexjs",
"version": "0.13.0", "version": "0.15.2",
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts", "./models/errors": "./src/models/errors/index.ts",
@@ -20,6 +20,7 @@
"README.md", "README.md",
"RUNTIMES.md", "RUNTIMES.md",
"USAGE.md", "USAGE.md",
"jsr.json",
"src/**/*.ts" "src/**/*.ts"
] ]
} }

350
package-lock.json generated
View File

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

View File

@@ -1,6 +1,6 @@
{ {
"name": "@lukehagar/plexjs", "name": "@lukehagar/plexjs",
"version": "0.13.0", "version": "0.15.2",
"author": "LukeHagar", "author": "LukeHagar",
"main": "./index.js", "main": "./index.js",
"sideEffects": false, "sideEffects": false,
@@ -19,13 +19,13 @@
}, },
"devDependencies": { "devDependencies": {
"@types/jsonpath": "^0.2.4", "@types/jsonpath": "^0.2.4",
"@typescript-eslint/eslint-plugin": "^6.13.2", "@typescript-eslint/eslint-plugin": "^7.7.1",
"@typescript-eslint/parser": "^6.13.2", "@typescript-eslint/parser": "^7.7.1",
"eslint": "^8.55.0", "eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1", "eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.0", "eslint-plugin-import": "^2.29.1",
"typescript": "^5.3.3", "typescript": "^5.4.5",
"zod": "^3.22.4" "zod": "^3.23.4"
}, },
"dependencies": { "dependencies": {

View File

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

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/ */
import { HTTPClient } from "../lib/http"; import { HTTPClient, RequestInput } from "../lib/http";
export type HookContext = { export type HookContext = {
operationID: string; operationID: string;
@@ -16,6 +16,8 @@ export type SDKInitOptions = {
baseURL: URL | null; baseURL: URL | null;
client: HTTPClient; client: HTTPClient;
}; };
export type BeforeCreateRequestContext = HookContext & {};
export type BeforeRequestContext = HookContext & {}; export type BeforeRequestContext = HookContext & {};
export type AfterSuccessContext = HookContext & {}; export type AfterSuccessContext = HookContext & {};
export type AfterErrorContext = HookContext & {}; export type AfterErrorContext = HookContext & {};
@@ -28,30 +30,41 @@ export interface SDKInitHook {
sdkInit: (opts: SDKInitOptions) => SDKInitOptions; sdkInit: (opts: SDKInitOptions) => SDKInitOptions;
} }
/** export interface BeforeCreateRequestHook {
* 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 * A hook that is called before the SDK creates a `Request` object. The hook
* from being sent. * 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 { 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>; 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 { 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>; 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 { 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: ( afterError: (
hookCtx: AfterErrorContext, hookCtx: AfterErrorContext,
response: Response | null, response: Response | null,
@@ -65,6 +78,8 @@ export interface AfterErrorHook {
export interface Hooks { export interface Hooks {
/** Registers a hook to be used by the SDK for initialization event. */ /** Registers a hook to be used by the SDK for initialization event. */
registerSDKInitHook(hook: SDKInitHook): void; 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. */ /** Registers a hook to be used by the SDK for the before request event. */
registerBeforeRequestHook(hook: BeforeRequestHook): void; registerBeforeRequestHook(hook: BeforeRequestHook): void;
/** Registers a hook to be used by the SDK for the after success event. */ /** Registers a hook to be used by the SDK for the after success event. */

View File

@@ -87,7 +87,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = { export const SDK_METADATA = {
language: "typescript", language: "typescript",
openapiDocVersion: "0.0.3", openapiDocVersion: "0.0.3",
sdkVersion: "0.13.0", sdkVersion: "0.15.2",
genVersion: "2.311.1", genVersion: "2.326.3",
userAgent: "speakeasy-sdk/typescript 0.13.0 2.311.1 0.0.3 @lukehagar/plexjs", userAgent: "speakeasy-sdk/typescript 0.15.2 2.326.3 0.0.3 @lukehagar/plexjs",
} as const; } as const;

View File

@@ -9,7 +9,28 @@ export type Fetcher = (
export type Awaitable<T> = T | Promise<T>; export type Awaitable<T> = T | Promise<T>;
const DEFAULT_FETCHER: Fetcher = (input, init) => fetch(input, init); 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 { export interface HTTPClientOptions {
fetcher?: Fetcher; fetcher?: Fetcher;
@@ -130,29 +151,56 @@ export class HTTPClient {
} }
} }
export function matchContentType(response: Response, pattern: string): boolean { // A semicolon surrounded by optional whitespace characters is used to separate
if (pattern === "*" || pattern === "*/*") { // 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; return true;
} }
const contentType = let contentType =
response.headers.get("content-type") ?? "application/octet-stream"; response.headers.get("content-type")?.trim() || "application/octet-stream";
contentType = contentType.toLowerCase();
const idx = contentType.split(";").findIndex((raw) => { const wantParts = pattern.toLowerCase().trim().split(mediaParamSeparator);
const ctype = raw.trim(); const [wantType = "", ...wantParams] = wantParts;
if (ctype === pattern) {
return true;
}
const parts = ctype.split("/"); if (wantType.split("/").length !== 2) {
if (parts.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 false;
} }
}
return `${parts[0]}/*` === pattern || `*/${parts[1]}` === pattern; return true;
});
return idx >= 0;
} }
const codeRangeRE = new RegExp("^[0-9]xx$", "i"); const codeRangeRE = new RegExp("^[0-9]xx$", "i");

View File

@@ -40,7 +40,11 @@ export class ClientSDK {
this.client = client; this.client = client;
} }
protected createRequest$(conf: RequestConfig, options?: RequestOptions): Request { protected createRequest$(
context: HookContext,
conf: RequestConfig,
options?: RequestOptions
): Request {
const { method, path, query, headers: opHeaders, security } = conf; const { method, path, query, headers: opHeaders, security } = conf;
const base = conf.baseURL ?? this.baseURL; const base = conf.baseURL ?? this.baseURL;
@@ -95,12 +99,17 @@ export class ClientSDK {
headers.set(k, v); headers.set(k, v);
} }
return new Request(reqURL, { const input = this.hooks$.beforeCreateRequest(context, {
...options?.fetchOptions, url: reqURL,
body: conf.body ?? null, options: {
headers, ...options?.fetchOptions,
method, body: conf.body ?? null,
headers,
method,
},
}); });
return new Request(input.url, input.options);
} }
protected async do$( protected async do$(

View File

@@ -68,7 +68,7 @@ type SecurityInputOAuth2 = {
type SecurityInputOAuth2ClientCredentials = { type SecurityInputOAuth2ClientCredentials = {
type: "oauth2:client_credentials"; type: "oauth2:client_credentials";
value: string | null | undefined; value: string | null | undefined;
fieldName: "clientID" | "clientSecret"; fieldName: string;
}; };
export type SecurityInput = export type SecurityInput =

View File

@@ -4,6 +4,7 @@
export class SDKError extends Error { export class SDKError extends Error {
public readonly statusCode: number; public readonly statusCode: number;
public readonly contentType: string;
constructor( constructor(
message: string, message: string,
@@ -11,11 +12,13 @@ export class SDKError extends Error {
public readonly body: string = "" public readonly body: string = ""
) { ) {
const statusCode = rawResponse.status; const statusCode = rawResponse.status;
const contentType = rawResponse.headers.get("content-type") || "";
const bodyString = body.length > 0 ? `\n${body}` : ""; const bodyString = body.length > 0 ? `\n${body}` : "";
super(`${message}: Status ${statusCode}${bodyString}`); super(`${message}: Status ${statusCode} Content-Type ${contentType} Body ${bodyString}`);
this.statusCode = statusCode; this.statusCode = statusCode;
this.contentType = contentType;
this.name = "SDKError"; this.name = "SDKError";
} }

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,6 @@ export * from "./getglobalhubs";
export * from "./getlibraries"; export * from "./getlibraries";
export * from "./getlibrary"; export * from "./getlibrary";
export * from "./getlibraryhubs"; export * from "./getlibraryhubs";
export * from "./getlibraryitems";
export * from "./getmetadata"; export * from "./getmetadata";
export * from "./getmetadatachildren"; export * from "./getmetadatachildren";
export * from "./getmyplexaccount"; export * from "./getmyplexaccount";

View File

@@ -71,7 +71,8 @@ export class Activities extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -82,12 +83,13 @@ export class Activities extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -118,7 +120,11 @@ export class Activities extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -172,7 +178,8 @@ export class Activities extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -184,12 +191,13 @@ export class Activities extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -209,7 +217,11 @@ export class Activities extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -90,7 +90,8 @@ export class Authentication extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -102,12 +103,13 @@ export class Authentication extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -127,7 +129,11 @@ export class Authentication extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -188,7 +194,8 @@ export class Authentication extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -200,12 +207,13 @@ export class Authentication extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -225,7 +233,11 @@ export class Authentication extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -69,7 +69,8 @@ export class Butler extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -80,12 +81,13 @@ export class Butler extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -116,7 +118,11 @@ export class Butler extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -156,7 +162,8 @@ export class Butler extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -167,12 +174,13 @@ export class Butler extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -192,7 +200,11 @@ export class Butler extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -234,7 +246,8 @@ export class Butler extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -245,12 +258,13 @@ export class Butler extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -270,7 +284,11 @@ export class Butler extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -335,7 +353,8 @@ export class Butler extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -347,12 +366,13 @@ export class Butler extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, [200, 202])) { if (this.matchStatusCode(response, [200, 202])) {
@@ -372,7 +392,11 @@ export class Butler extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -433,7 +457,8 @@ export class Butler extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "404", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "404", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -445,12 +470,13 @@ export class Butler extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -470,7 +496,11 @@ export class Butler extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -92,7 +92,8 @@ export class Hubs extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -104,12 +105,13 @@ export class Hubs extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -140,7 +142,11 @@ export class Hubs extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -207,7 +213,8 @@ export class Hubs extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -219,12 +226,13 @@ export class Hubs extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -255,7 +263,11 @@ export class Hubs extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
} }

View File

@@ -89,7 +89,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -101,12 +102,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -126,7 +128,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -168,7 +174,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -179,12 +186,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -215,7 +223,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -256,7 +268,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -267,12 +280,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -303,7 +317,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -405,7 +423,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -417,12 +436,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -453,7 +473,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -507,7 +531,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -519,12 +544,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -544,7 +570,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -554,121 +584,6 @@ export class Library extends ClientSDK {
); );
} }
/**
* Get Library Items
*
* @remarks
* 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.
*
*/
async getLibraryItems(
sectionId: number,
tag: operations.Tag,
options?: RequestOptions
): Promise<operations.GetLibraryItemsResponse> {
const input$: operations.GetLibraryItemsRequest = {
sectionId: sectionId,
tag: tag,
};
const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Accept", "application/json");
const payload$ = schemas$.parse(
input$,
(value$) => operations.GetLibraryItemsRequest$.outboundSchema.parse(value$),
"Input validation failed"
);
const body$ = null;
const pathParams$ = {
sectionId: enc$.encodeSimple("sectionId", payload$.sectionId, {
explode: false,
charEncoding: "percent",
}),
tag: enc$.encodeSimple("tag", payload$.tag, {
explode: false,
charEncoding: "percent",
}),
};
const path$ = this.templateURLComponent("/library/sections/{sectionId}/{tag}")(pathParams$);
const query$ = "";
let security$;
if (typeof this.options$.accessToken === "function") {
security$ = { accessToken: await this.options$.accessToken() };
} else if (this.options$.accessToken) {
security$ = { accessToken: this.options$.accessToken };
} else {
security$ = {};
}
const context = {
operationID: "getLibraryItems",
oAuth2Scopes: [],
securitySource: this.options$.accessToken,
};
const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["4XX", "5XX"] };
const request = this.createRequest$(
{
security: securitySettings$,
method: "GET",
path: path$,
headers: headers$,
query: query$,
body: body$,
},
options
);
const response = await this.do$(request, doOptions);
const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status,
RawResponse: response,
};
if (this.matchResponse(response, 200, "application/json")) {
const responseBody = await response.json();
const result = schemas$.parse(
responseBody,
(val$) => {
return operations.GetLibraryItemsResponse$.inboundSchema.parse({
...responseFields$,
object: val$,
});
},
"Response validation failed"
);
return result;
} else {
const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody);
}
}
/** /**
* Refresh Library * Refresh Library
* *
@@ -722,7 +637,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -734,12 +650,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -759,7 +676,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -845,7 +766,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["4XX", "5XX"] }; const doOptions = { context, errorCodes: ["4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -857,12 +779,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -880,7 +803,11 @@ export class Library extends ClientSDK {
return result; return result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -935,7 +862,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -947,12 +875,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -983,7 +912,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -1040,7 +973,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -1052,12 +986,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -1088,7 +1023,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -1124,7 +1063,8 @@ export class Library extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -1135,12 +1075,13 @@ export class Library extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -1171,7 +1112,11 @@ export class Library extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
} }

View File

@@ -97,7 +97,8 @@ export class Log extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -109,12 +110,13 @@ export class Log extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -134,7 +136,11 @@ export class Log extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -172,16 +178,17 @@ export class Log extends ClientSDK {
* *
*/ */
async logMultiLine( async logMultiLine(
input: string, request: string,
options?: RequestOptions options?: RequestOptions
): Promise<operations.LogMultiLineResponse> { ): Promise<operations.LogMultiLineResponse> {
const input$ = request;
const headers$ = new Headers(); const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent); headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Content-Type", "text/plain"); headers$.set("Content-Type", "text/plain");
headers$.set("Accept", "application/json"); headers$.set("Accept", "application/json");
const payload$ = schemas$.parse( const payload$ = schemas$.parse(
input, input$,
(value$) => z.string().parse(value$), (value$) => z.string().parse(value$),
"Input validation failed" "Input validation failed"
); );
@@ -207,7 +214,8 @@ export class Log extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -219,12 +227,13 @@ export class Log extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -244,7 +253,11 @@ export class Log extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -286,7 +299,8 @@ export class Log extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "403", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "403", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -297,12 +311,13 @@ export class Log extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -322,7 +337,11 @@ export class Log extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -86,7 +86,8 @@ export class Media extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -98,12 +99,13 @@ export class Media extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -123,7 +125,11 @@ export class Media extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -181,7 +187,8 @@ export class Media extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -193,12 +200,13 @@ export class Media extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -218,7 +226,11 @@ export class Media extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -283,7 +295,8 @@ export class Media extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -295,12 +308,13 @@ export class Media extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -320,7 +334,11 @@ export class Media extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -48,15 +48,16 @@ export class Playlists extends ClientSDK {
* *
*/ */
async createPlaylist( async createPlaylist(
input: operations.CreatePlaylistRequest, request: operations.CreatePlaylistRequest,
options?: RequestOptions options?: RequestOptions
): Promise<operations.CreatePlaylistResponse> { ): Promise<operations.CreatePlaylistResponse> {
const input$ = request;
const headers$ = new Headers(); const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent); headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Accept", "application/json"); headers$.set("Accept", "application/json");
const payload$ = schemas$.parse( const payload$ = schemas$.parse(
input, input$,
(value$) => operations.CreatePlaylistRequest$.outboundSchema.parse(value$), (value$) => operations.CreatePlaylistRequest$.outboundSchema.parse(value$),
"Input validation failed" "Input validation failed"
); );
@@ -93,7 +94,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -105,12 +107,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -141,7 +144,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -199,7 +206,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -211,12 +219,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -247,7 +256,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -303,7 +316,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -315,12 +329,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -351,7 +366,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -406,7 +425,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -418,12 +438,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -443,7 +464,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -516,7 +541,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "PUT", method: "PUT",
@@ -528,12 +554,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -553,7 +580,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -623,7 +654,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -635,12 +667,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -671,7 +704,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -726,7 +763,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -738,12 +776,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -763,7 +802,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -837,7 +880,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "PUT", method: "PUT",
@@ -849,12 +893,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -885,7 +930,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -941,7 +990,8 @@ export class Playlists extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "POST", method: "POST",
@@ -953,12 +1003,13 @@ export class Playlists extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -978,7 +1029,11 @@ export class Playlists extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -88,7 +88,8 @@ export class Plex extends ClientSDK {
const context = { operationID: "getPin", oAuth2Scopes: [], securitySource: null }; const context = { operationID: "getPin", oAuth2Scopes: [], securitySource: null };
const doOptions = { context, errorCodes: ["400", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
method: "POST", method: "POST",
baseURL: baseURL$, baseURL: baseURL$,
@@ -100,12 +101,13 @@ export class Plex extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -136,7 +138,11 @@ export class Plex extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -192,7 +198,8 @@ export class Plex extends ClientSDK {
const context = { operationID: "getToken", oAuth2Scopes: [], securitySource: null }; const context = { operationID: "getToken", oAuth2Scopes: [], securitySource: null };
const doOptions = { context, errorCodes: ["400", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
method: "GET", method: "GET",
baseURL: baseURL$, baseURL: baseURL$,
@@ -204,12 +211,13 @@ export class Plex extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -229,7 +237,11 @@ export class Plex extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -107,7 +107,8 @@ export class Search extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -119,12 +120,13 @@ export class Search extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -144,7 +146,11 @@ export class Search extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -215,7 +221,8 @@ export class Search extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -227,12 +234,13 @@ export class Search extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -252,7 +260,11 @@ export class Search extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -310,7 +322,8 @@ export class Search extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -322,12 +335,13 @@ export class Search extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -358,7 +372,11 @@ export class Search extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
} }

View File

@@ -71,7 +71,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -82,12 +83,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -118,7 +120,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -155,7 +161,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -166,12 +173,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -202,7 +210,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -239,7 +251,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -250,12 +263,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -286,7 +300,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -321,7 +339,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -332,12 +351,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -368,7 +388,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -405,7 +429,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -416,12 +441,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -452,7 +478,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -487,7 +517,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -498,12 +529,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -534,7 +566,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -546,15 +582,16 @@ export class Server extends ClientSDK {
* *
*/ */
async getResizedPhoto( async getResizedPhoto(
input: operations.GetResizedPhotoRequest, request: operations.GetResizedPhotoRequest,
options?: RequestOptions options?: RequestOptions
): Promise<operations.GetResizedPhotoResponse> { ): Promise<operations.GetResizedPhotoResponse> {
const input$ = request;
const headers$ = new Headers(); const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent); headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Accept", "application/json"); headers$.set("Accept", "application/json");
const payload$ = schemas$.parse( const payload$ = schemas$.parse(
input, input$,
(value$) => operations.GetResizedPhotoRequest$.outboundSchema.parse(value$), (value$) => operations.GetResizedPhotoRequest$.outboundSchema.parse(value$),
"Input validation failed" "Input validation failed"
); );
@@ -599,7 +636,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -611,12 +649,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -636,7 +675,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -677,7 +720,8 @@ export class Server extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -688,12 +732,13 @@ export class Server extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -724,7 +769,11 @@ export class Server extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
} }

View File

@@ -69,7 +69,8 @@ export class Sessions extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -80,12 +81,13 @@ export class Sessions extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -116,7 +118,11 @@ export class Sessions extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -153,7 +159,8 @@ export class Sessions extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -164,12 +171,13 @@ export class Sessions extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -200,7 +208,11 @@ export class Sessions extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -237,7 +249,8 @@ export class Sessions extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -248,12 +261,13 @@ export class Sessions extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -284,7 +298,11 @@ export class Sessions extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -338,7 +356,8 @@ export class Sessions extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "DELETE", method: "DELETE",
@@ -350,12 +369,13 @@ export class Sessions extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 204)) { if (this.matchStatusCode(response, 204)) {
@@ -375,7 +395,11 @@ export class Sessions extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -89,7 +89,8 @@ export class Statistics extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -101,12 +102,13 @@ export class Statistics extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -137,7 +139,11 @@ export class Statistics extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
} }

View File

@@ -69,7 +69,8 @@ export class Updater extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -80,12 +81,13 @@ export class Updater extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchResponse(response, 200, "application/json")) { if (this.matchResponse(response, 200, "application/json")) {
@@ -116,7 +118,11 @@ export class Updater extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
} }
@@ -171,7 +177,8 @@ export class Updater extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "PUT", method: "PUT",
@@ -183,12 +190,13 @@ export class Updater extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -208,7 +216,11 @@ export class Updater extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -273,7 +285,8 @@ export class Updater extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "500", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "500", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "PUT", method: "PUT",
@@ -285,12 +298,13 @@ export class Updater extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -310,7 +324,11 @@ export class Updater extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(

View File

@@ -45,15 +45,16 @@ export class Video extends ClientSDK {
* Get the timeline for a media item * Get the timeline for a media item
*/ */
async getTimeline( async getTimeline(
input: operations.GetTimelineRequest, request: operations.GetTimelineRequest,
options?: RequestOptions options?: RequestOptions
): Promise<operations.GetTimelineResponse> { ): Promise<operations.GetTimelineResponse> {
const input$ = request;
const headers$ = new Headers(); const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent); headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Accept", "application/json"); headers$.set("Accept", "application/json");
const payload$ = schemas$.parse( const payload$ = schemas$.parse(
input, input$,
(value$) => operations.GetTimelineRequest$.outboundSchema.parse(value$), (value$) => operations.GetTimelineRequest$.outboundSchema.parse(value$),
"Input validation failed" "Input validation failed"
); );
@@ -107,7 +108,8 @@ export class Video extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -119,12 +121,13 @@ export class Video extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -144,7 +147,11 @@ export class Video extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(
@@ -161,15 +168,16 @@ export class Video extends ClientSDK {
* Begin a Universal Transcode Session * Begin a Universal Transcode Session
*/ */
async startUniversalTranscode( async startUniversalTranscode(
input: operations.StartUniversalTranscodeRequest, request: operations.StartUniversalTranscodeRequest,
options?: RequestOptions options?: RequestOptions
): Promise<operations.StartUniversalTranscodeResponse> { ): Promise<operations.StartUniversalTranscodeResponse> {
const input$ = request;
const headers$ = new Headers(); const headers$ = new Headers();
headers$.set("user-agent", SDK_METADATA.userAgent); headers$.set("user-agent", SDK_METADATA.userAgent);
headers$.set("Accept", "application/json"); headers$.set("Accept", "application/json");
const payload$ = schemas$.parse( const payload$ = schemas$.parse(
input, input$,
(value$) => operations.StartUniversalTranscodeRequest$.outboundSchema.parse(value$), (value$) => operations.StartUniversalTranscodeRequest$.outboundSchema.parse(value$),
"Input validation failed" "Input validation failed"
); );
@@ -256,7 +264,8 @@ export class Video extends ClientSDK {
const securitySettings$ = this.resolveGlobalSecurity(security$); const securitySettings$ = this.resolveGlobalSecurity(security$);
const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] }; const doOptions = { context, errorCodes: ["400", "401", "4XX", "5XX"] };
const request = this.createRequest$( const request$ = this.createRequest$(
context,
{ {
security: securitySettings$, security: securitySettings$,
method: "GET", method: "GET",
@@ -268,12 +277,13 @@ export class Video extends ClientSDK {
options options
); );
const response = await this.do$(request, doOptions); const response = await this.do$(request$, doOptions);
const responseFields$ = { const responseFields$ = {
ContentType: response.headers.get("content-type") ?? "application/octet-stream", ContentType: response.headers.get("content-type") ?? "application/octet-stream",
StatusCode: response.status, StatusCode: response.status,
RawResponse: response, RawResponse: response,
Headers: {},
}; };
if (this.matchStatusCode(response, 200)) { if (this.matchStatusCode(response, 200)) {
@@ -293,7 +303,11 @@ export class Video extends ClientSDK {
throw result; throw result;
} else { } else {
const responseBody = await response.text(); const responseBody = await response.text();
throw new errors.SDKError("Unexpected API response", response, responseBody); throw new errors.SDKError(
"Unexpected API response status or content-type",
response,
responseBody
);
} }
return schemas$.parse( return schemas$.parse(