Compare commits

...

11 Commits

Author SHA1 Message Date
speakeasybot
779aa2dc9e ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.252.0 2024-04-13 00:26:21 +00:00
speakeasybot
0d73a769fb ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.231.1 2024-04-02 00:28:18 +00:00
speakeasybot
eeadc8c329 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.228.1 2024-03-29 16:38:38 +00:00
speakeasybot
dbe2e37bba ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.227.0 2024-03-27 00:27:27 +00:00
speakeasybot
6c314bea48 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.213.0 2024-03-20 00:27:47 +00:00
speakeasybot
9e28d57f15 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.209.3 2024-03-15 15:04:11 +00:00
Luke Hagar
9da9389549 migrated speakeasy to v15 2024-03-15 09:56:46 -05:00
speakeasy-github
fd886229c2 chore: update dependencies 2024-03-14 00:27:53 +00:00
speakeasybot
8a8615f241 ci: regenerated with OpenAPI Doc 0.0.3, Speakeasy CLI 1.209.2 2024-03-14 00:26:50 +00:00
speakeasy-github
29b8ad88d9 chore: update dependencies 2024-03-13 00:28:02 +00:00
speakeasybot
fd13b3d892 ci: regenerated with OpenAPI Doc 0.0.3, Speakeasy CLI 1.207.1 2024-03-13 00:27:03 +00:00
154 changed files with 877 additions and 1026 deletions

View File

@@ -1,31 +1,26 @@
name: Generate
permissions:
checks: write
contents: write
pull-requests: write
statuses: write
checks: write
contents: write
pull-requests: write
statuses: write
"on":
workflow_dispatch:
inputs:
force:
description: Force generation of SDKs
type: boolean
default: false
schedule:
- cron: 0 0 * * *
workflow_dispatch:
inputs:
force:
description: Force generation of SDKs
type: boolean
default: false
schedule:
- cron: 0 0 * * *
jobs:
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/sdk-generation.yaml@v14
with:
force: ${{ github.event.inputs.force }}
languages: |
- typescript
mode: direct
openapi_docs: |
- https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
publish_typescript: true
speakeasy_version: latest
secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
npm_token: ${{ secrets.NPM_TOKEN }}
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
with:
force: ${{ github.event.inputs.force }}
mode: direct
speakeasy_version: latest
secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
npm_token: ${{ secrets.NPM_TOKEN }}
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}

View File

@@ -1,12 +1,12 @@
lockVersion: 2.0.0
id: 16f22cbf-f23f-4419-8924-3a4b06381947
management:
docChecksum: e34dac84738ebf2d447ea2b9055a6eeb
docChecksum: a91eaf9ec1e6a3a6f4bf0571f5b18bae
docVersion: 0.0.3
speakeasyVersion: 1.204.1
generationVersion: 2.279.1
releaseVersion: 0.10.0
configChecksum: c2caa0bd788a98a059e51f793eff1525
speakeasyVersion: 1.252.0
generationVersion: 2.306.0
releaseVersion: 0.12.2
configChecksum: 0d4d85f9171a505af1cd904fb99d1391
repoURL: https://github.com/LukeHagar/plexjs.git
repoSubDirectory: .
installationURL: https://github.com/LukeHagar/plexjs
@@ -14,13 +14,14 @@ management:
features:
typescript:
constsAndDefaults: 0.1.5
core: 3.6.1
core: 3.7.1
flattening: 2.81.1
globalSecurity: 2.82.4
globalServerURLs: 2.82.3
globalSecurity: 2.82.9
globalServerURLs: 2.82.4
globals: 2.82.1
methodServerURLs: 2.82.1
nameOverrides: 2.81.1
responseFormat: 0.2.0
nameOverrides: 2.81.2
responseFormat: 0.2.3
generatedFiles:
- src/sdk/server.ts
- src/sdk/media.ts
@@ -46,7 +47,6 @@ generatedFiles:
- src/lib/base64.ts
- src/lib/config.ts
- src/lib/encodings.ts
- src/lib/event-streams.ts
- src/lib/http.ts
- src/lib/retries.ts
- src/lib/schemas.ts
@@ -57,7 +57,6 @@ generatedFiles:
- src/models/errors/sdkerror.ts
- src/models/errors/sdkvalidationerror.ts
- src/types/blobs.ts
- src/types/decimal.ts
- src/types/index.ts
- src/types/operations.ts
- src/types/rfcdate.ts

12
.speakeasy/workflow.yaml Normal file
View File

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

113
README.md
View File

@@ -31,12 +31,13 @@ yarn add @lukehagar/plexjs
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -173,14 +174,15 @@ Validation errors can also occur when either method arguments or data returned f
import { PlexAPI } from "@lukehagar/plexjs";
import * as errors from "@lukehagar/plexjs/models/errors";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
let result;
try {
result = await sdk.server.getServerCapabilities();
result = await plexAPI.server.getServerCapabilities();
} catch (err) {
switch (true) {
case err instanceof errors.SDKValidationError: {
@@ -223,13 +225,14 @@ You can override the default server globally by passing a server index to the `s
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
serverIdx: 0,
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
serverIdx: 0,
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -253,13 +256,14 @@ The default server can also be overridden globally by passing a URL to the `serv
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
serverURL: "{protocol}://{ip}:{port}",
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
serverURL: "{protocol}://{ip}:{port}",
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -275,13 +279,15 @@ The server URL can also be overridden on a per-operation basis, provided a serve
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>",
});
async function run() {
const sdk = new PlexAPI();
const xPlexClientIdentifier = "<value>";
const strong = false;
const xPlexClientIdentifier = "<value>";
const result = await sdk.plex.getPin(xPlexClientIdentifier, strong, {
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier, {
serverURL: "https://plex.tv/api/v2",
});
@@ -358,12 +364,13 @@ To authenticate with the API the `accessToken` parameter must be set when initia
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.server.getServerCapabilities();
async function run() {
const result = await plexAPI.server.getServerCapabilities();
// Handle the result
console.log(result);
@@ -380,6 +387,50 @@ run();
For supported JavaScript runtimes, please consult [RUNTIMES.md](RUNTIMES.md).
<!-- End Requirements [requirements] -->
<!-- Start Global Parameters [global-parameters] -->
## Global Parameters
A parameter is configured globally. This parameter must be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed.
For example, you can set `X-Plex-Client-Identifier` to `"<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.
### Available Globals
The following global parameter is available. The required parameter must be set when you initialize the SDK client.
| Name | Type | Required | Description |
| ---- | ---- |:--------:| ----------- |
| xPlexClientIdentifier | string | ✔️ | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
|
### Example
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>",
});
async function run() {
const strong = false;
const xPlexClientIdentifier = "<value>";
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
// Handle the result
console.log(result);
}
run();
```
<!-- End Global Parameters [global-parameters] -->
<!-- Placeholder for Future Speakeasy SDK Sections -->
# Development

View File

@@ -229,3 +229,83 @@ Based on:
- [typescript v0.10.0] .
### Releases
- [NPM v0.10.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.0 - .
## 2024-03-13 00:25:35
### Changes
Based on:
- OpenAPI Doc 0.0.3
- Speakeasy CLI 1.207.1 (2.280.6) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.1] .
### Releases
- [NPM v0.10.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.1 - .
## 2024-03-14 00:25:24
### Changes
Based on:
- OpenAPI Doc 0.0.3
- Speakeasy CLI 1.209.2 (2.281.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.2] .
### Releases
- [NPM v0.10.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.2 - .
## 2024-03-15 15:02:11
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.209.3 (2.281.2) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.3] .
### Releases
- [NPM v0.10.3] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.3 - .
## 2024-03-20 00:25:49
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.213.0 (2.283.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.10.4] .
### Releases
- [NPM v0.10.4] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.10.4 - .
## 2024-03-27 00:25:29
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.227.0 (2.291.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.11.0] .
### Releases
- [NPM v0.11.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.11.0 - .
## 2024-03-29 16:36:42
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.228.1 (2.292.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.0] .
### Releases
- [NPM v0.12.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.0 - .
## 2024-04-02 00:26:20
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.231.1 (2.295.1) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.1] .
### Releases
- [NPM v0.12.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.1 - .
## 2024-04-13 00:23:00
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.252.0 (2.306.0) https://github.com/speakeasy-api/speakeasy
### Generated
- [typescript v0.12.2] .
### Releases
- [NPM v0.12.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.2 - .

View File

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

View File

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

View File

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

View File

@@ -26,12 +26,13 @@ Get Server Activities
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.activities.getServerActivities();
async function run() {
const result = await plexAPI.activities.getServerActivities();
// Handle the result
console.log(result)
@@ -67,14 +68,15 @@ Cancel Server Activities
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const activityUUID = "<value>";
const result = await sdk.activities.cancelServerActivities(activityUUID);
const result = await plexAPI.activities.cancelServerActivities(activityUUID);
// Handle the result
console.log(result)

View File

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

View File

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

View File

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

View File

@@ -29,15 +29,16 @@ This resource returns hash values for local files
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const url = "file://C:\Image.png&type=13";
const type = 4462.17;
const result = await sdk.library.getFileHash(url, type);
const result = await plexAPI.library.getFileHash(url, type);
// Handle the result
console.log(result)
@@ -76,12 +77,13 @@ This endpoint will return the recently added content.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.library.getRecentlyAdded();
async function run() {
const result = await plexAPI.library.getRecentlyAdded();
// Handle the result
console.log(result)
@@ -123,12 +125,13 @@ This allows a client to provide a rich interface around the media (e.g. allow so
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.library.getLibraries();
async function run() {
const result = await plexAPI.library.getLibraries();
// Handle the result
console.log(result)
@@ -204,15 +207,16 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
import { PlexAPI } from "@lukehagar/plexjs";
import { IncludeDetails } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 1000;
const includeDetails = IncludeDetails.Zero;
const result = await sdk.library.getLibrary(sectionId, includeDetails);
const result = await plexAPI.library.getLibrary(sectionId, includeDetails);
// Handle the result
console.log(result)
@@ -250,14 +254,15 @@ Delate a library using a specific section
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 1000;
const result = await sdk.library.deleteLibrary(sectionId);
const result = await plexAPI.library.deleteLibrary(sectionId);
// Handle the result
console.log(result)
@@ -315,15 +320,16 @@ Fetches details from a specific section of the library identified by a section k
import { PlexAPI } from "@lukehagar/plexjs";
import { Tag } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 451092;
const tag = Tag.Unwatched;
const result = await sdk.library.getLibraryItems(sectionId, tag);
const result = await plexAPI.library.getLibraryItems(sectionId, tag);
// Handle the result
console.log(result)
@@ -361,14 +367,15 @@ This endpoint Refreshes the library.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 934.16;
const result = await sdk.library.refreshLibrary(sectionId);
const result = await plexAPI.library.refreshLibrary(sectionId);
// Handle the result
console.log(result)
@@ -424,15 +431,16 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
import { PlexAPI } from "@lukehagar/plexjs";
import { Type } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const sectionId = 933505;
const type = Type.Four;
const result = await sdk.library.searchLibrary(sectionId, type);
const result = await plexAPI.library.searchLibrary(sectionId, type);
// Handle the result
console.log(result)
@@ -470,14 +478,15 @@ This endpoint will return the metadata of a library item specified with the rati
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const ratingKey = 8382.31;
const result = await sdk.library.getMetadata(ratingKey);
const result = await plexAPI.library.getMetadata(ratingKey);
// Handle the result
console.log(result)
@@ -515,14 +524,15 @@ This endpoint will return the children of of a library item specified with the r
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const ratingKey = 1539.14;
const result = await sdk.library.getMetadataChildren(ratingKey);
const result = await plexAPI.library.getMetadataChildren(ratingKey);
// Handle the result
console.log(result)
@@ -560,12 +570,13 @@ This endpoint will return the on deck content.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.library.getOnDeck();
async function run() {
const result = await plexAPI.library.getOnDeck();
// Handle the result
console.log(result)

View File

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

View File

@@ -21,14 +21,15 @@ This will mark the provided media key as Played.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const key = 59398;
const result = await sdk.media.markPlayed(key);
const result = await plexAPI.media.markPlayed(key);
// Handle the result
console.log(result)
@@ -65,14 +66,15 @@ This will mark the provided media key as Unplayed.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const key = 59398;
const result = await sdk.media.markUnplayed(key);
const result = await plexAPI.media.markUnplayed(key);
// Handle the result
console.log(result)
@@ -110,16 +112,17 @@ This API command can be used to update the play progress of a media item.
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const key = "<value>";
const time = 6900.91;
const state = "<value>";
const result = await sdk.media.updatePlayProgress(key, time, state);
const result = await plexAPI.media.updatePlayProgress(key, time, state);
// Handle the result
console.log(result)

View File

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

View File

@@ -20,13 +20,15 @@ Retrieve a Pin from Plex.tv for authentication flows
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>",
});
async function run() {
const sdk = new PlexAPI();
const xPlexClientIdentifier = "<value>";
const strong = false;
const xPlexClientIdentifier = "<value>";
const result = await sdk.plex.getPin(xPlexClientIdentifier, strong);
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
// Handle the result
console.log(result)
@@ -39,8 +41,8 @@ run();
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `strong` | *boolean* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> |
| `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/> |
| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |
@@ -65,13 +67,15 @@ Retrieve an Access Token from Plex.tv after the Pin has already been authenticat
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI();
const plexAPI = new PlexAPI({
xPlexClientIdentifier: "<value>",
});
async function run() {
const pinID = "<value>";
const xPlexClientIdentifier = "<value>";
const result = await sdk.plex.getToken(pinID, xPlexClientIdentifier);
const result = await plexAPI.plex.getToken(pinID, xPlexClientIdentifier);
// Handle the result
console.log(result)
@@ -85,7 +89,7 @@ run();
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for |
| `xPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `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/> |
| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. |
| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. |
| `options.serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |

View File

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

View File

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

View File

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

View File

@@ -19,14 +19,15 @@ This will return the media statistics for the server
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const timespan = 411769;
const result = await sdk.statistics.getStatistics(timespan);
const result = await plexAPI.statistics.getStatistics(timespan);
// Handle the result
console.log(result)

View File

@@ -22,12 +22,13 @@ Querying status of updates
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.updater.getUpdateStatus();
async function run() {
const result = await plexAPI.updater.getUpdateStatus();
// Handle the result
console.log(result)
@@ -64,14 +65,15 @@ Checking for updates
import { PlexAPI } from "@lukehagar/plexjs";
import { Download } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const download = Download.One;
const result = await sdk.updater.checkForUpdates(download);
const result = await plexAPI.updater.checkForUpdates(download);
// Handle the result
console.log(result)
@@ -110,15 +112,16 @@ Note that these two parameters are effectively mutually exclusive. The `tonight`
import { PlexAPI } from "@lukehagar/plexjs";
import { Skip, Tonight } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
async function run() {
const tonight = Tonight.One;
const skip = Skip.Zero;
const result = await sdk.updater.applyUpdates(tonight, skip);
const result = await plexAPI.updater.applyUpdates(tonight, skip);
// Handle the result
console.log(result)

View File

@@ -21,12 +21,13 @@ Get the timeline for a media item
import { PlexAPI } from "@lukehagar/plexjs";
import { State } from "@lukehagar/plexjs/models/operations";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.video.getTimeline({
async function run() {
const result = await plexAPI.video.getTimeline({
ratingKey: 716.56,
key: "<key>",
state: State.Paused,
@@ -74,12 +75,13 @@ Begin a Universal Transcode Session
```typescript
import { PlexAPI } from "@lukehagar/plexjs";
async function run() {
const sdk = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
xPlexClientIdentifier: "<value>",
});
const result = await sdk.video.startUniversalTranscode({
async function run() {
const result = await plexAPI.video.startUniversalTranscode({
hasMDE: 8924.99,
path: "/etc/mail",
mediaIndex: 9962.95,

View File

@@ -12,13 +12,14 @@ generation:
auth:
oAuth2ClientCredentialsEnabled: false
typescript:
version: 0.10.0
version: 0.12.2
additionalDependencies:
dependencies: {}
devDependencies: {}
peerDependencies: {}
author: LukeHagar
clientServerStatusCodesAsErrors: true
enumFormat: enum
flattenGlobalSecurity: true
imports:
option: openapi

272
package-lock.json generated
View File

@@ -1,16 +1,12 @@
{
"name": "@lukehagar/plexjs",
"version": "0.10.0",
"version": "0.12.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@lukehagar/plexjs",
"version": "0.10.0",
"dependencies": {
"decimal.js": "^10.4.3",
"jsonpath": "^1.1.1"
},
"version": "0.12.2",
"devDependencies": {
"@types/jsonpath": "^0.2.4",
"@typescript-eslint/eslint-plugin": "^6.13.2",
@@ -770,15 +766,11 @@
}
}
},
"node_modules/decimal.js": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"node_modules/define-data-property": {
"version": "1.1.4",
@@ -985,94 +977,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/escodegen": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
"integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^4.2.0",
"esutils": "^2.0.2",
"optionator": "^0.8.1"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
"node": ">=4.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/escodegen/node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/escodegen/node_modules/estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/escodegen/node_modules/levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dependencies": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dependencies": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"word-wrap": "~1.2.3"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/escodegen/node_modules/type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dependencies": {
"prelude-ls": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/eslint": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
@@ -1349,18 +1253,6 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz",
"integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/esquery": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
@@ -1398,6 +1290,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -1445,7 +1338,8 @@
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
"node_modules/fastq": {
"version": "1.17.1",
@@ -2179,16 +2073,6 @@
"json5": "lib/cli.js"
}
},
"node_modules/jsonpath": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz",
"integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==",
"dependencies": {
"esprima": "1.2.2",
"static-eval": "2.0.2",
"underscore": "1.12.1"
}
},
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -2785,23 +2669,6 @@
"node": ">=8"
}
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"optional": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/static-eval": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz",
"integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==",
"dependencies": {
"escodegen": "^1.8.1"
}
},
"node_modules/string.prototype.trim": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
@@ -3080,11 +2947,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/underscore": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
"integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -3144,14 +3006,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -3697,15 +3551,11 @@
"ms": "2.1.2"
}
},
"decimal.js": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"define-data-property": {
"version": "1.1.4",
@@ -3864,65 +3714,6 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
},
"escodegen": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
"integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
"requires": {
"esprima": "^4.0.1",
"estraverse": "^4.2.0",
"esutils": "^2.0.2",
"optionator": "^0.8.1",
"source-map": "~0.6.1"
},
"dependencies": {
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"estraverse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
},
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"requires": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
}
},
"optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"requires": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"word-wrap": "~1.2.3"
}
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w=="
},
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"requires": {
"prelude-ls": "~1.1.2"
}
}
}
},
"eslint": {
"version": "8.56.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
@@ -4144,11 +3935,6 @@
"eslint-visitor-keys": "^3.4.1"
}
},
"esprima": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz",
"integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A=="
},
"esquery": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
@@ -4176,7 +3962,8 @@
"esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
"fast-deep-equal": {
"version": "3.1.3",
@@ -4217,7 +4004,8 @@
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
"fastq": {
"version": "1.17.1",
@@ -4740,16 +4528,6 @@
"minimist": "^1.2.0"
}
},
"jsonpath": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz",
"integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==",
"requires": {
"esprima": "1.2.2",
"static-eval": "2.0.2",
"underscore": "1.12.1"
}
},
"keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -5155,20 +4933,6 @@
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"optional": true
},
"static-eval": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz",
"integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==",
"requires": {
"escodegen": "^1.8.1"
}
},
"string.prototype.trim": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
@@ -5363,11 +5127,6 @@
"which-boxed-primitive": "^1.0.2"
}
},
"underscore": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz",
"integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
},
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -5412,11 +5171,6 @@
"has-tostringtag": "^1.0.1"
}
},
"word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",

View File

@@ -1,6 +1,6 @@
{
"name": "@lukehagar/plexjs",
"version": "0.10.0",
"version": "0.12.2",
"author": "LukeHagar",
"main": "./index.js",
"sideEffects": false,
@@ -29,7 +29,6 @@
"zod": "^3.22.4"
},
"dependencies": {
"decimal.js": "^10.4.3",
"jsonpath": "^1.1.1"
}
}

View File

@@ -27,6 +27,11 @@ export enum ServerProtocol {
export type SDKOptions = {
accessToken?: string | (() => Promise<string>);
/**
* Allows setting the xPlexClientIdentifier parameter for all supported operations
*/
xPlexClientIdentifier?: string;
httpClient?: HTTPClient;
/**
* Allows overriding the default server used by the SDK
@@ -65,9 +70,12 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
},
];
let params: Record<string, string> = {};
const serverIdx = options.serverIdx ?? 0;
if (!serverURL) {
const serverIdx = options.serverIdx ?? 0;
if (serverIdx < 0 || serverIdx >= ServerList.length) {
throw new Error(`Invalid server index ${serverIdx}`);
}
serverURL = ServerList[serverIdx] || "";
params = serverParams[serverIdx] || {};
}
@@ -79,7 +87,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = Object.freeze({
language: "typescript",
openapiDocVersion: "0.0.3",
sdkVersion: "0.10.0",
genVersion: "2.279.1",
userAgent: "speakeasy-sdk/typescript 0.10.0 2.279.1 0.0.3 @lukehagar/plexjs",
sdkVersion: "0.12.2",
genVersion: "2.306.0",
userAgent: "speakeasy-sdk/typescript 0.12.2 2.306.0 0.0.3 @lukehagar/plexjs",
});

View File

@@ -1,192 +0,0 @@
/*
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
export type ServerEvent<T> = {
data?: T | undefined;
event?: string | undefined;
retry?: number | undefined;
id?: string | undefined;
};
const LF = 0x0a;
const CR = 0x0d;
const NEWLINE_CHARS = new Set([LF, CR]);
const MESSAGE_BOUNDARIES = [
new Uint8Array([CR, LF, CR, LF]),
new Uint8Array([CR, CR]),
new Uint8Array([LF, LF]),
];
export class EventStream<Event extends ServerEvent<unknown>> {
private readonly stream: ReadableStream<Uint8Array>;
private readonly decoder: (rawEvent: ServerEvent<string>) => Event;
constructor(init: {
stream: ReadableStream<Uint8Array>;
decoder: (rawEvent: ServerEvent<string>) => Event;
}) {
this.stream = init.stream;
this.decoder = init.decoder;
}
async *[Symbol.asyncIterator]() {
const reader = this.stream.getReader();
let buffer = new Uint8Array([]);
let position = 0;
try {
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
const newBuffer = new Uint8Array(buffer.length + value.length);
newBuffer.set(buffer);
newBuffer.set(value, buffer.length);
buffer = newBuffer;
for (let i = position; i < buffer.length; i++) {
const boundary = findBoundary(buffer, i);
if (boundary == null) {
continue;
}
const chunk = buffer.slice(position, i);
position = i + boundary.length;
const event = parseEvent(chunk, this.decoder);
if (event != null) {
yield event;
}
}
if (position > 0) {
buffer = buffer.slice(position);
position = 0;
}
}
if (buffer.length > 0) {
const event = parseEvent(buffer, this.decoder);
if (event != null) {
yield event;
}
}
} finally {
reader.releaseLock();
}
}
}
function findBoundary(buffer: Uint8Array, start: number): Uint8Array | null {
const char1 = buffer[start];
const char2 = buffer[start + 1];
// Don't bother checking if the first two characters are not new line
// characters.
if (
char1 == null ||
char2 == null ||
!NEWLINE_CHARS.has(char1) ||
!NEWLINE_CHARS.has(char2)
) {
return null;
}
for (const s of MESSAGE_BOUNDARIES) {
const seq = peekSequence(start, buffer, s);
if (seq != null) {
return seq;
}
}
return null;
}
function peekSequence(
position: number,
buffer: Uint8Array,
sequence: Uint8Array,
): Uint8Array | null {
if (sequence.length > buffer.length - position) {
return null;
}
for (let i = 0; i < sequence.length; i++) {
if (buffer[position + i] !== sequence[i]) {
return null;
}
}
return sequence;
}
function parseEvent<Event extends ServerEvent<unknown>>(
chunk: Uint8Array,
decoder: (rawEvent: ServerEvent<string>) => Event,
) {
if (!chunk.length) {
return null;
}
const td = new TextDecoder();
const raw = td.decode(chunk);
const lines = raw.split(/\r?\n|\r/g);
let publish = false;
const rawEvent: ServerEvent<string> = {};
for (const line of lines) {
if (!line) {
continue;
}
const delim = line.indexOf(":");
// Lines starting with a colon are ignored.
if (delim === 0) {
continue;
}
const field = delim > 0 ? line.substring(0, delim) : "";
let value = delim > 0 ? line.substring(delim + 1) : "";
if (value.charAt(0) === " ") {
value = value.substring(1);
}
switch (field) {
case "event": {
publish = true;
rawEvent.event = value;
break;
}
case "data": {
publish = true;
rawEvent.data ??= "";
rawEvent.data += value + "\n";
break;
}
case "id": {
publish = true;
rawEvent.id = value;
break;
}
case "retry": {
const r = parseInt(value, 10);
if (!Number.isNaN(r)) {
publish = true;
rawEvent.retry = r;
}
break;
}
}
}
if (!publish) {
return null;
}
if (rawEvent.data != null) {
rawEvent.data = rawEvent.data.slice(0, -1);
}
return decoder(rawEvent);
}

View File

@@ -7,15 +7,17 @@ export type Fetcher = (
init?: RequestInit,
) => Promise<Response>;
type Awaitable<T> = T | Promise<T>;
const DEFAULT_FETCHER: Fetcher = (input, init) => fetch(input, init);
export interface HTTPClientOptions {
fetcher?: Fetcher;
}
type BeforeRequestHook = (req: Request) => Request | void;
type RequestErrorHook = (err: unknown, req: Request) => void;
type ResponseHook = (res: Response, req: Request) => void;
type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
export class HTTPClient {
private fetcher: Fetcher;
@@ -28,17 +30,27 @@ export class HTTPClient {
}
async request(request: Request): Promise<Response> {
const req = this.requestHooks.reduce((currentReq, fn) => {
const nextRequest = fn(currentReq);
return nextRequest || currentReq;
}, request);
let req = request;
for (const hook of this.requestHooks) {
const nextRequest = await hook(req);
if (nextRequest) {
req = nextRequest;
}
}
try {
const res = await this.fetcher(req);
this.responseHooks.forEach((fn) => fn(res, req));
for (const hook of this.responseHooks) {
await hook(res, req);
}
return res;
} catch (err) {
this.requestErrorHooks.forEach((fn) => fn(err, req));
for (const hook of this.requestErrorHooks) {
await hook(err, req);
}
throw err;
}
}

View File

@@ -71,10 +71,10 @@ export class ClientSDK {
const headers = new Headers(opHeaders);
const username = security?.basic.username || "";
const password = security?.basic.password || "";
if (username) {
const encoded = stringToBase64([username, password].join(":"));
const username = security?.basic.username;
const password = security?.basic.password;
if (username != null || password != null) {
const encoded = stringToBase64([username || "", password || ""].join(":"));
headers.set("Authorization", `Basic ${encoded}`);
}

View File

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

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type Security = {
accessToken: string;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type AddPlaylistContentsErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace AddPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<AddPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type ApplyUpdatesErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace ApplyUpdatesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<ApplyUpdatesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type CancelServerActivitiesErrors = {
code?: number | undefined;
@@ -119,6 +119,7 @@ export namespace CancelServerActivitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CancelServerActivitiesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type CheckForUpdatesErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace CheckForUpdatesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CheckForUpdatesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type ClearPlaylistContentsErrors = {
code?: number | undefined;
@@ -119,6 +119,7 @@ export namespace ClearPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<ClearPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type CreatePlaylistErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace CreatePlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<CreatePlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type DeleteLibraryErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace DeleteLibraryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<DeleteLibraryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type DeletePlaylistErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace DeletePlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<DeletePlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type EnablePaperTrailErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace EnablePaperTrailResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<EnablePaperTrailErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetAvailableClientsErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetAvailableClientsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetAvailableClientsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetButlerTasksErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetButlerTasksResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetButlerTasksErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetDevicesErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetDevicesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetDevicesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetFileHashErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetFileHashResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetFileHashErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetGlobalHubsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetGlobalHubsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetGlobalHubsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetLibrariesErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetLibrariesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibrariesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetLibraryErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetLibraryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibraryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetLibraryHubsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetLibraryHubsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetLibraryHubsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetMetadataErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetMetadataResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMetadataErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetMetadataChildrenErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetMetadataChildrenResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMetadataChildrenErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetMyPlexAccountErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetMyPlexAccountResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetMyPlexAccountErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetOnDeckErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetOnDeckResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetOnDeckErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetPinErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetPinResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPinErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetPlaylistErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetPlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetPlaylistContentsErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetPlaylistContentsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistContentsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetPlaylistsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetPlaylistsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetPlaylistsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetRecentlyAddedErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetRecentlyAddedResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetRecentlyAddedErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetResizedPhotoErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetResizedPhotoResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetResizedPhotoErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetSearchResultsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetSearchResultsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSearchResultsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetServerActivitiesErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetServerActivitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerActivitiesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type Errors = {
code?: number | undefined;
@@ -119,6 +119,7 @@ export namespace GetServerCapabilitiesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<Errors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetServerIdentityErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetServerIdentityResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerIdentityErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetServerListErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetServerListResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerListErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetServerPreferencesErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetServerPreferencesResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetServerPreferencesErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetSessionHistoryErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetSessionHistoryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSessionHistoryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetSessionsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetSessionsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSessionsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetSourceConnectionInformationErrors = {
code?: number | undefined;
@@ -129,6 +129,7 @@ export namespace GetSourceConnectionInformationResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetSourceConnectionInformationErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetStatisticsErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetStatisticsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetStatisticsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetTimelineErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetTimelineResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetTimelineErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetTokenErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetTokenResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetTokenErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetTranscodeSessionsErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace GetTranscodeSessionsResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetTranscodeSessionsErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetTransientTokenErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetTransientTokenResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetTransientTokenErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type GetUpdateStatusErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace GetUpdateStatusResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<GetUpdateStatusErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type LogLineErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace LogLineResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<LogLineErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type LogMultiLineErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace LogMultiLineResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<LogMultiLineErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type MarkPlayedErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace MarkPlayedResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<MarkPlayedErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type MarkUnplayedErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace MarkUnplayedResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<MarkUnplayedErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type PerformSearchErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace PerformSearchResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<PerformSearchErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type PerformVoiceSearchErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace PerformVoiceSearchResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<PerformVoiceSearchErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type RefreshLibraryErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace RefreshLibraryResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<RefreshLibraryErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StartAllTasksErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace StartAllTasksResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StartAllTasksErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StartTaskErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace StartTaskResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StartTaskErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StartUniversalTranscodeErrors = {
code?: number | undefined;
@@ -120,6 +120,7 @@ export namespace StartUniversalTranscodeResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StartUniversalTranscodeErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StopAllTasksErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace StopAllTasksResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StopAllTasksErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StopTaskErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace StopTaskResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StopTaskErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type StopTranscodeSessionErrors = {
code?: number | undefined;
@@ -116,6 +116,7 @@ export namespace StopTranscodeSessionResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<StopTranscodeSessionErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type UpdatePlaylistErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace UpdatePlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<UpdatePlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type UpdatePlayProgressErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace UpdatePlayProgressResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<UpdatePlayProgressErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type UploadPlaylistErrors = {
code?: number | undefined;
@@ -115,6 +115,7 @@ export namespace UploadPlaylistResponseBody$ {
...(v.RawResponse === undefined ? null : { rawResponse: v.RawResponse }),
});
});
export type Outbound = {
errors?: Array<UploadPlaylistErrors$.Outbound> | undefined;
RawResponse?: never | undefined;

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type AddPlaylistContentsRequest = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
/**
* 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

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type CancelServerActivitiesRequest = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
/**
* Indicate that you want to start download any updates found.

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type ClearPlaylistContentsRequest = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
/**
* type of playlist to create

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type DeleteLibraryRequest = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type DeletePlaylistRequest = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type EnablePaperTrailResponse = {
/**

View File

@@ -2,7 +2,7 @@
* Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
*/
import { z } from "zod";
import * as z from "zod";
export type Server = {
name?: string | undefined;

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