mirror of
https://github.com/LukeHagar/plexgo.git
synced 2025-12-06 12:37:46 +00:00
Compare commits
130 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeebf438e1 | ||
|
|
dc815780a6 | ||
|
|
636840a553 | ||
|
|
c65c9e0cae | ||
|
|
95df2396e7 | ||
|
|
f52d81d1f6 | ||
|
|
d83bd96c5f | ||
|
|
2289036c2b | ||
|
|
a7eedd3598 | ||
|
|
e579b8d23b | ||
|
|
fd429e38e0 | ||
|
|
2b4a59f67f | ||
|
|
6268a854c1 | ||
|
|
d061e9c253 | ||
|
|
fcfb68eec7 | ||
|
|
37dabea51a | ||
|
|
f47e4b689b | ||
|
|
04130d41d4 | ||
|
|
393db01a6c | ||
|
|
41621a4bbd | ||
|
|
05f0b1a99a | ||
|
|
f00090bddf | ||
|
|
d8bcbcc30c | ||
|
|
0ce63f1ceb | ||
|
|
da8b549711 | ||
|
|
3cfd677a46 | ||
|
|
e4db9f59ee | ||
|
|
79aced35cd | ||
|
|
2135733290 | ||
|
|
66d2bed79b | ||
|
|
42be0c1e5b | ||
|
|
4f8ae99d93 | ||
|
|
1802af77f6 | ||
|
|
d77dabeb98 | ||
|
|
7b82e1d5a3 | ||
|
|
f677adc9a9 | ||
|
|
9de12cb55c | ||
|
|
52e3fd977d | ||
|
|
88cd5f17cf | ||
|
|
6e9e5028bc | ||
|
|
5fc7421ebf | ||
|
|
caedf0fada | ||
|
|
2e6d62cc3d | ||
|
|
ee418c915d | ||
|
|
89eb756371 | ||
|
|
747f1cc472 | ||
|
|
3caad468dc | ||
|
|
135f07bb5b | ||
|
|
f713adaa5f | ||
|
|
afd7c86d0b | ||
|
|
a1c0bd593c | ||
|
|
7f62aa433e | ||
|
|
d6b4319cf2 | ||
|
|
c487a62f2c | ||
|
|
d2d4cd1c5a | ||
|
|
686079b3d5 | ||
|
|
8ebf35b969 | ||
|
|
8558402eae | ||
|
|
89b2332133 | ||
|
|
98cfef0ea2 | ||
|
|
cb95b7e9ac | ||
|
|
e290570ac9 | ||
|
|
764eb6c75a | ||
|
|
11f26917b7 | ||
|
|
a34f15746e | ||
|
|
12afbc6467 | ||
|
|
8267c3fcbd | ||
|
|
3f2fc4fe8c | ||
|
|
21517ca298 | ||
|
|
d7fe60ed91 | ||
|
|
b09c6ad37a | ||
|
|
6a5cd06342 | ||
|
|
9531527f23 | ||
|
|
db2b15241c | ||
|
|
344db7cbcb | ||
|
|
af9748433a | ||
|
|
8f332b739e | ||
|
|
c504a2d46e | ||
|
|
95d64024f2 | ||
|
|
457b36fb49 | ||
|
|
8691720920 | ||
|
|
205c454485 | ||
|
|
71b5f4f4b7 | ||
|
|
f3779b0079 | ||
|
|
0eaf609b40 | ||
|
|
b0931cba2e | ||
|
|
d09f9292ce | ||
|
|
9a382342e4 | ||
|
|
b8b984dc14 | ||
|
|
0de5991239 | ||
|
|
0ff88615e0 | ||
|
|
0eb6f2c692 | ||
|
|
0adacc0e13 | ||
|
|
ec6ef7db64 | ||
|
|
32a5beaae6 | ||
|
|
ea30334a95 | ||
|
|
f3eb760757 | ||
|
|
683823eab9 | ||
|
|
6942d6b905 | ||
|
|
1a7051235f | ||
|
|
68fedfa8fc | ||
|
|
5916d2ace5 | ||
|
|
417454ebb2 | ||
|
|
992291fe20 | ||
|
|
515f318f05 | ||
|
|
8b81bc5692 | ||
|
|
9dd356ea91 | ||
|
|
efe42104bc | ||
|
|
70001e1e72 | ||
|
|
0118475c63 | ||
|
|
f812f82747 | ||
|
|
7b38f4ba85 | ||
|
|
7caa38277c | ||
|
|
2cfb7aefac | ||
|
|
41ce744f6d | ||
|
|
2b4d612003 | ||
|
|
853bfe69d5 | ||
|
|
81cfd47570 | ||
|
|
44e551a11d | ||
|
|
264d228db7 | ||
|
|
c1bc2419c8 | ||
|
|
471d850f17 | ||
|
|
b3ac2d0c2e | ||
|
|
61283a5769 | ||
|
|
70d2e2a152 | ||
|
|
89e9047e5b | ||
|
|
79e46e9d00 | ||
|
|
46d64acf0d | ||
|
|
9132d30c11 | ||
|
|
bba1a7ab9e |
@@ -11,18 +11,18 @@ permissions:
|
|||||||
description: Force generation of SDKs
|
description: Force generation of SDKs
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
set_version:
|
||||||
|
description: optionally set a specific SDK version
|
||||||
|
type: string
|
||||||
schedule:
|
schedule:
|
||||||
- cron: 0 0 * * *
|
- cron: 0 0 * * *
|
||||||
jobs:
|
jobs:
|
||||||
generate:
|
generate:
|
||||||
uses: speakeasy-api/sdk-generation-action/.github/workflows/sdk-generation.yaml@v14
|
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
|
||||||
with:
|
with:
|
||||||
force: ${{ github.event.inputs.force }}
|
force: ${{ github.event.inputs.force }}
|
||||||
languages: |
|
|
||||||
- go
|
|
||||||
mode: direct
|
mode: direct
|
||||||
openapi_docs: |
|
set_version: ${{ github.event.inputs.set_version }}
|
||||||
- https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
|
|
||||||
speakeasy_version: latest
|
speakeasy_version: latest
|
||||||
secrets:
|
secrets:
|
||||||
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
19
.github/workflows/sdk_publish.yaml
vendored
Normal file
19
.github/workflows/sdk_publish.yaml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Publish
|
||||||
|
permissions:
|
||||||
|
checks: write
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
statuses: write
|
||||||
|
"on":
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- RELEASES.md
|
||||||
|
- '*/RELEASES.md'
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
uses: speakeasy-api/sdk-generation-action/.github/workflows/sdk-publish.yaml@v15
|
||||||
|
secrets:
|
||||||
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
|
||||||
2544
.speakeasy/gen.lock
2544
.speakeasy/gen.lock
File diff suppressed because one or more lines are too long
@@ -6,9 +6,15 @@ generation:
|
|||||||
optionalPropertyRendering: withExample
|
optionalPropertyRendering: withExample
|
||||||
useClassNamesForArrayFields: true
|
useClassNamesForArrayFields: true
|
||||||
fixes:
|
fixes:
|
||||||
nameResolutionDec2023: false
|
nameResolutionDec2023: true
|
||||||
|
parameterOrderingFeb2024: true
|
||||||
|
requestResponseComponentNamesFeb2024: true
|
||||||
|
auth:
|
||||||
|
oAuth2ClientCredentialsEnabled: true
|
||||||
go:
|
go:
|
||||||
version: 0.0.1
|
version: 0.15.1
|
||||||
|
additionalDependencies: {}
|
||||||
|
allowUnknownFieldsInWeakUnions: false
|
||||||
clientServerStatusCodesAsErrors: true
|
clientServerStatusCodesAsErrors: true
|
||||||
flattenGlobalSecurity: true
|
flattenGlobalSecurity: true
|
||||||
imports:
|
imports:
|
||||||
@@ -21,5 +27,7 @@ go:
|
|||||||
webhooks: models/webhooks
|
webhooks: models/webhooks
|
||||||
inputModelSuffix: input
|
inputModelSuffix: input
|
||||||
maxMethodParams: 4
|
maxMethodParams: 4
|
||||||
|
methodArguments: require-security-and-request
|
||||||
outputModelSuffix: output
|
outputModelSuffix: output
|
||||||
packageName: github.com/LukeHagar/plexgo
|
packageName: github.com/LukeHagar/plexgo
|
||||||
|
responseFormat: envelope
|
||||||
39
.speakeasy/workflow.lock
Normal file
39
.speakeasy/workflow.lock
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
speakeasyVersion: 1.406.0
|
||||||
|
sources:
|
||||||
|
my-source:
|
||||||
|
sourceNamespace: my-source
|
||||||
|
sourceRevisionDigest: sha256:92a2a2049bfbf67bea601a6b1b77d274e83a2d3b6968a0bc02dc290b21c7689d
|
||||||
|
sourceBlobDigest: sha256:f7e2709f52370dff16c1851a7a4e44a89f2e978e9cae335bffc10625950b3bd9
|
||||||
|
tags:
|
||||||
|
- latest
|
||||||
|
- main
|
||||||
|
plexapi:
|
||||||
|
sourceNamespace: plexapi
|
||||||
|
sourceRevisionDigest: sha256:8d2eb3adbd97ce5976291c4b123d1eadfef62d1f6bf86c6a18bcd89443f2f390
|
||||||
|
sourceBlobDigest: sha256:3e48471b7e058840fc598ccd75b2cbf8187961c7e625fe7b606555ce9a9bf109
|
||||||
|
tags:
|
||||||
|
- latest
|
||||||
|
- main
|
||||||
|
targets:
|
||||||
|
plexgo:
|
||||||
|
source: plexapi
|
||||||
|
sourceNamespace: plexapi
|
||||||
|
sourceRevisionDigest: sha256:8d2eb3adbd97ce5976291c4b123d1eadfef62d1f6bf86c6a18bcd89443f2f390
|
||||||
|
sourceBlobDigest: sha256:3e48471b7e058840fc598ccd75b2cbf8187961c7e625fe7b606555ce9a9bf109
|
||||||
|
codeSamplesNamespace: code-samples-go-plexgo
|
||||||
|
codeSamplesRevisionDigest: sha256:321c24585c4a0c1ed0e924fe504aa2f02e26d9e6d539262e90861142fbf72882
|
||||||
|
workflow:
|
||||||
|
workflowVersion: 1.0.0
|
||||||
|
speakeasyVersion: latest
|
||||||
|
sources:
|
||||||
|
plexapi:
|
||||||
|
inputs:
|
||||||
|
- location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main
|
||||||
|
targets:
|
||||||
|
plexgo:
|
||||||
|
target: go
|
||||||
|
source: plexapi
|
||||||
|
codeSamples:
|
||||||
|
output: codeSamples.yaml
|
||||||
|
registry:
|
||||||
|
location: registry.speakeasyapi.dev/plexapi/plexapi/code-samples-go-plexgo
|
||||||
14
.speakeasy/workflow.yaml
Normal file
14
.speakeasy/workflow.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
workflowVersion: 1.0.0
|
||||||
|
speakeasyVersion: latest
|
||||||
|
sources:
|
||||||
|
plexapi:
|
||||||
|
inputs:
|
||||||
|
- location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main
|
||||||
|
targets:
|
||||||
|
plexgo:
|
||||||
|
target: go
|
||||||
|
source: plexapi
|
||||||
|
codeSamples:
|
||||||
|
output: codeSamples.yaml
|
||||||
|
registry:
|
||||||
|
location: registry.speakeasyapi.dev/plexapi/plexapi/code-samples-go-plexgo
|
||||||
26
CONTRIBUTING.md
Normal file
26
CONTRIBUTING.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Contributing to This Repository
|
||||||
|
|
||||||
|
Thank you for your interest in contributing to this repository. Please note that this repository contains generated code. As such, we do not accept direct changes or pull requests. Instead, we encourage you to follow the guidelines below to report issues and suggest improvements.
|
||||||
|
|
||||||
|
## How to Report Issues
|
||||||
|
|
||||||
|
If you encounter any bugs or have suggestions for improvements, please open an issue on GitHub. When reporting an issue, please provide as much detail as possible to help us reproduce the problem. This includes:
|
||||||
|
|
||||||
|
- A clear and descriptive title
|
||||||
|
- Steps to reproduce the issue
|
||||||
|
- Expected and actual behavior
|
||||||
|
- Any relevant logs, screenshots, or error messages
|
||||||
|
- Information about your environment (e.g., operating system, software versions)
|
||||||
|
- For example can be collected using the `npx envinfo` command from your terminal if you have Node.js installed
|
||||||
|
|
||||||
|
## Issue Triage and Upstream Fixes
|
||||||
|
|
||||||
|
We will review and triage issues as quickly as possible. Our goal is to address bugs and incorporate improvements in the upstream source code. Fixes will be included in the next generation of the generated code.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
If you have any questions or need further assistance, please feel free to reach out by opening an issue.
|
||||||
|
|
||||||
|
Thank you for your understanding and cooperation!
|
||||||
|
|
||||||
|
The Maintainers
|
||||||
22
LICENSE.md
22
LICENSE.md
@@ -1,21 +1,7 @@
|
|||||||
MIT License
|
Copyright 2024 Luke Hagar
|
||||||
|
|
||||||
Copyright (c) 2023 LukeHagar
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|||||||
358
README.md
358
README.md
@@ -7,18 +7,55 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Start Summary [summary] -->
|
||||||
|
## Summary
|
||||||
|
|
||||||
## 🏗 **Welcome to your new SDK!** 🏗
|
Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server
|
||||||
|
|
||||||
It has been generated successfully based on your OpenAPI spec. However, it is not yet ready for production use. Here are some next steps:
|
# Plex Media Server OpenAPI Specification
|
||||||
- [ ] 🛠 Make your SDK feel handcrafted by [customizing it](https://www.speakeasyapi.dev/docs/customize-sdks)
|
|
||||||
- [ ] ♻️ Refine your SDK quickly by iterating locally with the [Speakeasy CLI](https://github.com/speakeasy-api/speakeasy)
|
An Open Source OpenAPI Specification for Plex Media Server
|
||||||
- [ ] 🎁 Publish your SDK to package managers by [configuring automatic publishing](https://www.speakeasyapi.dev/docs/productionize-sdks/publish-sdks)
|
|
||||||
- [ ] ✨ When ready to productionize, delete this section from the README
|
Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/)
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
[API Documentation](https://plexapi.dev)
|
||||||
|
|
||||||
|
## SDKs
|
||||||
|
|
||||||
|
The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec).
|
||||||
|
|
||||||
|
| Language | Repository | Releases | Other |
|
||||||
|
| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
|
||||||
|
| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - |
|
||||||
|
| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - |
|
||||||
|
| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) |
|
||||||
|
| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - |
|
||||||
|
| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - |
|
||||||
|
| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - |
|
||||||
|
| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - |
|
||||||
|
| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | -
|
||||||
|
<!-- End Summary [summary] -->
|
||||||
|
|
||||||
|
<!-- Start Table of Contents [toc] -->
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
* [SDK Installation](#sdk-installation)
|
||||||
|
* [SDK Example Usage](#sdk-example-usage)
|
||||||
|
* [Available Resources and Operations](#available-resources-and-operations)
|
||||||
|
* [Retries](#retries)
|
||||||
|
* [Error Handling](#error-handling)
|
||||||
|
* [Server Selection](#server-selection)
|
||||||
|
* [Custom HTTP Client](#custom-http-client)
|
||||||
|
* [Authentication](#authentication)
|
||||||
|
* [Special Types](#special-types)
|
||||||
|
<!-- End Table of Contents [toc] -->
|
||||||
|
|
||||||
<!-- Start SDK Installation [installation] -->
|
<!-- Start SDK Installation [installation] -->
|
||||||
## SDK Installation
|
## SDK Installation
|
||||||
|
|
||||||
|
To add the SDK as a dependency to your project:
|
||||||
```bash
|
```bash
|
||||||
go get github.com/LukeHagar/plexgo
|
go get github.com/LukeHagar/plexgo
|
||||||
```
|
```
|
||||||
@@ -35,13 +72,17 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/LukeHagar/plexgo"
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -49,7 +90,6 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.Object != nil {
|
if res.Object != nil {
|
||||||
// handle response
|
// handle response
|
||||||
}
|
}
|
||||||
@@ -61,28 +101,21 @@ func main() {
|
|||||||
<!-- Start Available Resources and Operations [operations] -->
|
<!-- Start Available Resources and Operations [operations] -->
|
||||||
## Available Resources and Operations
|
## Available Resources and Operations
|
||||||
|
|
||||||
### [Server](docs/sdks/server/README.md)
|
<details open>
|
||||||
|
<summary>Available methods</summary>
|
||||||
* [GetServerCapabilities](docs/sdks/server/README.md#getservercapabilities) - Server Capabilities
|
|
||||||
* [GetServerPreferences](docs/sdks/server/README.md#getserverpreferences) - Get Server Preferences
|
|
||||||
* [GetAvailableClients](docs/sdks/server/README.md#getavailableclients) - Get Available Clients
|
|
||||||
* [GetDevices](docs/sdks/server/README.md#getdevices) - Get Devices
|
|
||||||
* [GetServerIdentity](docs/sdks/server/README.md#getserveridentity) - Get Server Identity
|
|
||||||
* [GetMyPlexAccount](docs/sdks/server/README.md#getmyplexaccount) - Get MyPlex Account
|
|
||||||
* [GetResizedPhoto](docs/sdks/server/README.md#getresizedphoto) - Get a Resized Photo
|
|
||||||
* [GetServerList](docs/sdks/server/README.md#getserverlist) - Get Server List
|
|
||||||
|
|
||||||
### [Media](docs/sdks/media/README.md)
|
|
||||||
|
|
||||||
* [MarkPlayed](docs/sdks/media/README.md#markplayed) - Mark Media Played
|
|
||||||
* [MarkUnplayed](docs/sdks/media/README.md#markunplayed) - Mark Media Unplayed
|
|
||||||
* [UpdatePlayProgress](docs/sdks/media/README.md#updateplayprogress) - Update Media Play Progress
|
|
||||||
|
|
||||||
### [Activities](docs/sdks/activities/README.md)
|
### [Activities](docs/sdks/activities/README.md)
|
||||||
|
|
||||||
* [GetServerActivities](docs/sdks/activities/README.md#getserveractivities) - Get Server Activities
|
* [GetServerActivities](docs/sdks/activities/README.md#getserveractivities) - Get Server Activities
|
||||||
* [CancelServerActivities](docs/sdks/activities/README.md#cancelserveractivities) - Cancel Server Activities
|
* [CancelServerActivities](docs/sdks/activities/README.md#cancelserveractivities) - Cancel Server Activities
|
||||||
|
|
||||||
|
### [Authentication](docs/sdks/authentication/README.md)
|
||||||
|
|
||||||
|
* [GetTransientToken](docs/sdks/authentication/README.md#gettransienttoken) - Get a Transient Token
|
||||||
|
* [GetSourceConnectionInformation](docs/sdks/authentication/README.md#getsourceconnectioninformation) - Get Source Connection Information
|
||||||
|
* [GetTokenDetails](docs/sdks/authentication/README.md#gettokendetails) - Get Token Details
|
||||||
|
* [PostUsersSignInData](docs/sdks/authentication/README.md#postuserssignindata) - Get User Sign In Data
|
||||||
|
|
||||||
### [Butler](docs/sdks/butler/README.md)
|
### [Butler](docs/sdks/butler/README.md)
|
||||||
|
|
||||||
* [GetButlerTasks](docs/sdks/butler/README.md#getbutlertasks) - Get Butler tasks
|
* [GetButlerTasks](docs/sdks/butler/README.md#getbutlertasks) - Get Butler tasks
|
||||||
@@ -94,27 +127,23 @@ func main() {
|
|||||||
### [Hubs](docs/sdks/hubs/README.md)
|
### [Hubs](docs/sdks/hubs/README.md)
|
||||||
|
|
||||||
* [GetGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs
|
* [GetGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs
|
||||||
|
* [GetRecentlyAdded](docs/sdks/hubs/README.md#getrecentlyadded) - Get Recently Added
|
||||||
* [GetLibraryHubs](docs/sdks/hubs/README.md#getlibraryhubs) - Get library specific hubs
|
* [GetLibraryHubs](docs/sdks/hubs/README.md#getlibraryhubs) - Get library specific hubs
|
||||||
|
|
||||||
### [Search](docs/sdks/search/README.md)
|
|
||||||
|
|
||||||
* [PerformSearch](docs/sdks/search/README.md#performsearch) - Perform a search
|
|
||||||
* [PerformVoiceSearch](docs/sdks/search/README.md#performvoicesearch) - Perform a voice search
|
|
||||||
* [GetSearchResults](docs/sdks/search/README.md#getsearchresults) - Get Search Results
|
|
||||||
|
|
||||||
### [Library](docs/sdks/library/README.md)
|
### [Library](docs/sdks/library/README.md)
|
||||||
|
|
||||||
* [GetFileHash](docs/sdks/library/README.md#getfilehash) - Get Hash Value
|
* [GetFileHash](docs/sdks/library/README.md#getfilehash) - Get Hash Value
|
||||||
* [GetRecentlyAdded](docs/sdks/library/README.md#getrecentlyadded) - Get Recently Added
|
* [GetRecentlyAddedLibrary](docs/sdks/library/README.md#getrecentlyaddedlibrary) - Get Recently Added
|
||||||
* [GetLibraries](docs/sdks/library/README.md#getlibraries) - Get All Libraries
|
* [GetAllLibraries](docs/sdks/library/README.md#getalllibraries) - Get All Libraries
|
||||||
* [GetLibrary](docs/sdks/library/README.md#getlibrary) - Get Library Details
|
* [GetLibraryDetails](docs/sdks/library/README.md#getlibrarydetails) - Get Library Details
|
||||||
* [DeleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section
|
* [DeleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section
|
||||||
* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
|
* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
|
||||||
* [RefreshLibrary](docs/sdks/library/README.md#refreshlibrary) - Refresh Library
|
* [GetRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library
|
||||||
* [GetLatestLibraryItems](docs/sdks/library/README.md#getlatestlibraryitems) - Get Latest Library Items
|
* [GetSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library
|
||||||
* [GetCommonLibraryItems](docs/sdks/library/README.md#getcommonlibraryitems) - Get Common Library Items
|
* [GetSearchAllLibraries](docs/sdks/library/README.md#getsearchalllibraries) - Search All Libraries
|
||||||
* [GetMetadata](docs/sdks/library/README.md#getmetadata) - Get Items Metadata
|
* [GetMetaDataByRatingKey](docs/sdks/library/README.md#getmetadatabyratingkey) - Get Metadata by RatingKey
|
||||||
* [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children
|
* [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children
|
||||||
|
* [GetTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content
|
||||||
* [GetOnDeck](docs/sdks/library/README.md#getondeck) - Get On Deck
|
* [GetOnDeck](docs/sdks/library/README.md#getondeck) - Get On Deck
|
||||||
|
|
||||||
### [Log](docs/sdks/log/README.md)
|
### [Log](docs/sdks/log/README.md)
|
||||||
@@ -123,6 +152,14 @@ func main() {
|
|||||||
* [LogMultiLine](docs/sdks/log/README.md#logmultiline) - Logging a multi-line message
|
* [LogMultiLine](docs/sdks/log/README.md#logmultiline) - Logging a multi-line message
|
||||||
* [EnablePaperTrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail
|
* [EnablePaperTrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail
|
||||||
|
|
||||||
|
### [Media](docs/sdks/media/README.md)
|
||||||
|
|
||||||
|
* [MarkPlayed](docs/sdks/media/README.md#markplayed) - Mark Media Played
|
||||||
|
* [MarkUnplayed](docs/sdks/media/README.md#markunplayed) - Mark Media Unplayed
|
||||||
|
* [UpdatePlayProgress](docs/sdks/media/README.md#updateplayprogress) - Update Media Play Progress
|
||||||
|
* [GetBannerImage](docs/sdks/media/README.md#getbannerimage) - Get Banner Image
|
||||||
|
* [GetThumbImage](docs/sdks/media/README.md#getthumbimage) - Get Thumb Image
|
||||||
|
|
||||||
### [Playlists](docs/sdks/playlists/README.md)
|
### [Playlists](docs/sdks/playlists/README.md)
|
||||||
|
|
||||||
* [CreatePlaylist](docs/sdks/playlists/README.md#createplaylist) - Create a Playlist
|
* [CreatePlaylist](docs/sdks/playlists/README.md#createplaylist) - Create a Playlist
|
||||||
@@ -135,10 +172,34 @@ func main() {
|
|||||||
* [AddPlaylistContents](docs/sdks/playlists/README.md#addplaylistcontents) - Adding to a Playlist
|
* [AddPlaylistContents](docs/sdks/playlists/README.md#addplaylistcontents) - Adding to a Playlist
|
||||||
* [UploadPlaylist](docs/sdks/playlists/README.md#uploadplaylist) - Upload Playlist
|
* [UploadPlaylist](docs/sdks/playlists/README.md#uploadplaylist) - Upload Playlist
|
||||||
|
|
||||||
### [Security](docs/sdks/security/README.md)
|
### [Plex](docs/sdks/plex/README.md)
|
||||||
|
|
||||||
* [GetTransientToken](docs/sdks/security/README.md#gettransienttoken) - Get a Transient Token.
|
* [GetCompanionsData](docs/sdks/plex/README.md#getcompanionsdata) - Get Companions Data
|
||||||
* [GetSourceConnectionInformation](docs/sdks/security/README.md#getsourceconnectioninformation) - Get Source Connection Information
|
* [GetUserFriends](docs/sdks/plex/README.md#getuserfriends) - Get list of friends of the user logged in
|
||||||
|
* [GetGeoData](docs/sdks/plex/README.md#getgeodata) - Get Geo Data
|
||||||
|
* [GetHomeData](docs/sdks/plex/README.md#gethomedata) - Get Plex Home Data
|
||||||
|
* [GetServerResources](docs/sdks/plex/README.md#getserverresources) - Get Server Resources
|
||||||
|
* [GetPin](docs/sdks/plex/README.md#getpin) - Get a Pin
|
||||||
|
* [GetTokenByPinID](docs/sdks/plex/README.md#gettokenbypinid) - Get Access Token by PinId
|
||||||
|
|
||||||
|
|
||||||
|
### [Search](docs/sdks/search/README.md)
|
||||||
|
|
||||||
|
* [PerformSearch](docs/sdks/search/README.md#performsearch) - Perform a search
|
||||||
|
* [PerformVoiceSearch](docs/sdks/search/README.md#performvoicesearch) - Perform a voice search
|
||||||
|
* [GetSearchResults](docs/sdks/search/README.md#getsearchresults) - Get Search Results
|
||||||
|
|
||||||
|
### [Server](docs/sdks/server/README.md)
|
||||||
|
|
||||||
|
* [GetServerCapabilities](docs/sdks/server/README.md#getservercapabilities) - Get Server Capabilities
|
||||||
|
* [GetServerPreferences](docs/sdks/server/README.md#getserverpreferences) - Get Server Preferences
|
||||||
|
* [GetAvailableClients](docs/sdks/server/README.md#getavailableclients) - Get Available Clients
|
||||||
|
* [GetDevices](docs/sdks/server/README.md#getdevices) - Get Devices
|
||||||
|
* [GetServerIdentity](docs/sdks/server/README.md#getserveridentity) - Get Server Identity
|
||||||
|
* [GetMyPlexAccount](docs/sdks/server/README.md#getmyplexaccount) - Get MyPlex Account
|
||||||
|
* [GetResizedPhoto](docs/sdks/server/README.md#getresizedphoto) - Get a Resized Photo
|
||||||
|
* [GetMediaProviders](docs/sdks/server/README.md#getmediaproviders) - Get Media Providers
|
||||||
|
* [GetServerList](docs/sdks/server/README.md#getserverlist) - Get Server List
|
||||||
|
|
||||||
### [Sessions](docs/sdks/sessions/README.md)
|
### [Sessions](docs/sdks/sessions/README.md)
|
||||||
|
|
||||||
@@ -147,6 +208,12 @@ func main() {
|
|||||||
* [GetTranscodeSessions](docs/sdks/sessions/README.md#gettranscodesessions) - Get Transcode Sessions
|
* [GetTranscodeSessions](docs/sdks/sessions/README.md#gettranscodesessions) - Get Transcode Sessions
|
||||||
* [StopTranscodeSession](docs/sdks/sessions/README.md#stoptranscodesession) - Stop a Transcode Session
|
* [StopTranscodeSession](docs/sdks/sessions/README.md#stoptranscodesession) - Stop a Transcode Session
|
||||||
|
|
||||||
|
### [Statistics](docs/sdks/statistics/README.md)
|
||||||
|
|
||||||
|
* [GetStatistics](docs/sdks/statistics/README.md#getstatistics) - Get Media Statistics
|
||||||
|
* [GetResourcesStatistics](docs/sdks/statistics/README.md#getresourcesstatistics) - Get Resources Statistics
|
||||||
|
* [GetBandwidthStatistics](docs/sdks/statistics/README.md#getbandwidthstatistics) - Get Bandwidth Statistics
|
||||||
|
|
||||||
### [Updater](docs/sdks/updater/README.md)
|
### [Updater](docs/sdks/updater/README.md)
|
||||||
|
|
||||||
* [GetUpdateStatus](docs/sdks/updater/README.md#getupdatestatus) - Querying status of updates
|
* [GetUpdateStatus](docs/sdks/updater/README.md#getupdatestatus) - Querying status of updates
|
||||||
@@ -155,19 +222,124 @@ func main() {
|
|||||||
|
|
||||||
### [Video](docs/sdks/video/README.md)
|
### [Video](docs/sdks/video/README.md)
|
||||||
|
|
||||||
* [StartUniversalTranscode](docs/sdks/video/README.md#startuniversaltranscode) - Start Universal Transcode
|
|
||||||
* [GetTimeline](docs/sdks/video/README.md#gettimeline) - Get the timeline for a media item
|
* [GetTimeline](docs/sdks/video/README.md#gettimeline) - Get the timeline for a media item
|
||||||
|
* [StartUniversalTranscode](docs/sdks/video/README.md#startuniversaltranscode) - Start Universal Transcode
|
||||||
|
|
||||||
|
### [Watchlist](docs/sdks/watchlist/README.md)
|
||||||
|
|
||||||
|
* [GetWatchList](docs/sdks/watchlist/README.md#getwatchlist) - Get User Watchlist
|
||||||
|
|
||||||
|
</details>
|
||||||
<!-- End Available Resources and Operations [operations] -->
|
<!-- End Available Resources and Operations [operations] -->
|
||||||
|
|
||||||
|
<!-- Start Retries [retries] -->
|
||||||
|
## Retries
|
||||||
|
|
||||||
|
Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
|
||||||
|
|
||||||
|
To change the default retry strategy for a single API call, simply provide a `retry.Config` object to the call by using the `WithRetries` option:
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
|
"log"
|
||||||
|
"models/operations"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
s := plexgo.New(
|
||||||
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
res, err := s.Server.GetServerCapabilities(ctx, operations.WithRetries(
|
||||||
|
retry.Config{
|
||||||
|
Strategy: "backoff",
|
||||||
|
Backoff: &retry.BackoffStrategy{
|
||||||
|
InitialInterval: 1,
|
||||||
|
MaxInterval: 50,
|
||||||
|
Exponent: 1.1,
|
||||||
|
MaxElapsedTime: 100,
|
||||||
|
},
|
||||||
|
RetryConnectionErrors: false,
|
||||||
|
}))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if res.Object != nil {
|
||||||
|
// handle response
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
If you'd like to override the default retry strategy for all operations that support retries, you can use the `WithRetryConfig` option at SDK initialization:
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
s := plexgo.New(
|
||||||
|
plexgo.WithRetryConfig(
|
||||||
|
retry.Config{
|
||||||
|
Strategy: "backoff",
|
||||||
|
Backoff: &retry.BackoffStrategy{
|
||||||
|
InitialInterval: 1,
|
||||||
|
MaxInterval: 50,
|
||||||
|
Exponent: 1.1,
|
||||||
|
MaxElapsedTime: 100,
|
||||||
|
},
|
||||||
|
RetryConnectionErrors: false,
|
||||||
|
}),
|
||||||
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if res.Object != nil {
|
||||||
|
// handle response
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
<!-- End Retries [retries] -->
|
||||||
|
|
||||||
<!-- Start Error Handling [errors] -->
|
<!-- Start Error Handling [errors] -->
|
||||||
## Error Handling
|
## Error Handling
|
||||||
|
|
||||||
Handling errors in this SDK should largely match your expectations. All operations return a response object or an error, they will never return both. When specified by the OpenAPI spec document, the SDK will return the appropriate subclass.
|
Handling errors in this SDK should largely match your expectations. All operations return a response object or an error, they will never return both.
|
||||||
|
|
||||||
| Error Object | Status Code | Content Type |
|
By Default, an API error will return `sdkerrors.SDKError`. When custom error responses are specified for an operation, the SDK may also return their associated error. You can refer to respective *Errors* tables in SDK docs for more details on possible error types for each operation.
|
||||||
|
|
||||||
|
For example, the `GetServerCapabilities` function may return the following errors:
|
||||||
|
|
||||||
|
| Error Type | Status Code | Content Type |
|
||||||
| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
|
| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
|
||||||
| sdkerrors.GetServerCapabilitiesResponseBody | 401 | application/json |
|
| sdkerrors.GetServerCapabilitiesBadRequest | 400 | application/json |
|
||||||
| sdkerrors.SDKError | 4xx-5xx | */* |
|
| sdkerrors.GetServerCapabilitiesUnauthorized | 401 | application/json |
|
||||||
|
| sdkerrors.SDKError | 4XX, 5XX | \*/\* |
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
@@ -178,7 +350,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/LukeHagar/plexgo"
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
@@ -186,13 +357,24 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
||||||
var e *sdkerrors.GetServerCapabilitiesResponseBody
|
var e *sdkerrors.GetServerCapabilitiesBadRequest
|
||||||
|
if errors.As(err, &e) {
|
||||||
|
// handle error
|
||||||
|
log.Fatal(e.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
var e *sdkerrors.GetServerCapabilitiesUnauthorized
|
||||||
if errors.As(err, &e) {
|
if errors.As(err, &e) {
|
||||||
// handle error
|
// handle error
|
||||||
log.Fatal(e.Error())
|
log.Fatal(e.Error())
|
||||||
@@ -218,8 +400,7 @@ You can override the default server globally using the `WithServerIndex` option
|
|||||||
|
|
||||||
| # | Server | Variables |
|
| # | Server | Variables |
|
||||||
| - | ------ | --------- |
|
| - | ------ | --------- |
|
||||||
| 0 | `http://10.10.10.47:32400` | None |
|
| 0 | `{protocol}://{ip}:{port}` | `protocol` (default is `https`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) |
|
||||||
| 1 | `{protocol}://{ip}:{port}` | `protocol` (default is `http`), `ip` (default is `10.10.10.47`), `port` (default is `32400`) |
|
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
@@ -229,14 +410,18 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/LukeHagar/plexgo"
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithServerIndex(1),
|
plexgo.WithServerIndex(0),
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -244,7 +429,6 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.Object != nil {
|
if res.Object != nil {
|
||||||
// handle response
|
// handle response
|
||||||
}
|
}
|
||||||
@@ -268,14 +452,18 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/LukeHagar/plexgo"
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithServerURL("http://10.10.10.47:32400"),
|
plexgo.WithServerURL("{protocol}://{ip}:{port}"),
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -283,12 +471,46 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.Object != nil {
|
if res.Object != nil {
|
||||||
// handle response
|
// handle response
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Override Server URL Per-Operation
|
||||||
|
|
||||||
|
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
s := plexgo.New(
|
||||||
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
res, err := s.Plex.GetCompanionsData(ctx, operations.WithServerURL("https://plex.tv/api/v2"))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if res.ResponseBodies != nil {
|
||||||
|
// handle response
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
<!-- End Server Selection [server] -->
|
<!-- End Server Selection [server] -->
|
||||||
|
|
||||||
@@ -345,6 +567,11 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -352,7 +579,6 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.Object != nil {
|
if res.Object != nil {
|
||||||
// handle response
|
// handle response
|
||||||
}
|
}
|
||||||
@@ -364,7 +590,27 @@ func main() {
|
|||||||
<!-- Start Special Types [types] -->
|
<!-- Start Special Types [types] -->
|
||||||
## Special Types
|
## Special Types
|
||||||
|
|
||||||
|
This SDK defines the following custom types to assist with marshalling and unmarshalling data.
|
||||||
|
|
||||||
|
### Date
|
||||||
|
|
||||||
|
`types.Date` is a wrapper around time.Time that allows for JSON marshaling a date string formatted as "2006-01-02".
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
```go
|
||||||
|
d1 := types.NewDate(time.Now()) // returns *types.Date
|
||||||
|
|
||||||
|
d2 := types.DateFromTime(time.Now()) // returns types.Date
|
||||||
|
|
||||||
|
d3, err := types.NewDateFromString("2019-01-01") // returns *types.Date, error
|
||||||
|
|
||||||
|
d4, err := types.DateFromString("2019-01-01") // returns types.Date, error
|
||||||
|
|
||||||
|
d5 := types.MustNewDateFromString("2019-01-01") // returns *types.Date and panics on error
|
||||||
|
|
||||||
|
d6 := types.MustDateFromString("2019-01-01") // returns types.Date and panics on error
|
||||||
|
```
|
||||||
<!-- End Special Types [types] -->
|
<!-- End Special Types [types] -->
|
||||||
|
|
||||||
<!-- Placeholder for Future Speakeasy SDK Sections -->
|
<!-- Placeholder for Future Speakeasy SDK Sections -->
|
||||||
|
|||||||
946
RELEASES.md
946
RELEASES.md
@@ -8,4 +8,948 @@ Based on:
|
|||||||
### Generated
|
### Generated
|
||||||
- [go v0.0.1] .
|
- [go v0.0.1] .
|
||||||
### Releases
|
### Releases
|
||||||
- [Go v0.0.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.1 - .
|
- [Go v0.0.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.1 - .
|
||||||
|
|
||||||
|
## 2024-01-05 19:50:49
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.133.1 (2.228.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.0.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.0.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.2 - .
|
||||||
|
|
||||||
|
## 2024-01-17 00:48:29
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.142.1 (2.234.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.0.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.0.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.3 - .
|
||||||
|
|
||||||
|
## 2024-01-18 23:37:12
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.147.0 (2.237.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.0.4] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.0.4] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.4 - .
|
||||||
|
|
||||||
|
## 2024-01-19 17:28:15
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.147.0 (2.237.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.0.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.0.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.0.5 - .
|
||||||
|
|
||||||
|
## 2024-01-20 03:10:19
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.148.0 (2.237.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.1.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.1.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.1.0 - .
|
||||||
|
|
||||||
|
## 2024-01-22 17:16:22
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.148.0 (2.237.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.1.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.1.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.1.1 - .
|
||||||
|
|
||||||
|
## 2024-01-23 20:47:20
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.150.0 (2.237.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.1.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.1.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.1.2 - .
|
||||||
|
|
||||||
|
## 2024-01-23 21:56:10
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.150.0 (2.237.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.1.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.1.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.1.3 - .
|
||||||
|
|
||||||
|
## 2024-01-31 15:05:54
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.158.0 (2.239.4) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.2.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.2.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.2.0 - .
|
||||||
|
|
||||||
|
## 2024-02-01 00:46:46
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.161.0 (2.245.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.2.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.2.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.2.1 - .
|
||||||
|
|
||||||
|
## 2024-02-05 14:23:54
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.166.1 (2.249.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.3.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.3.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.3.0 - .
|
||||||
|
|
||||||
|
## 2024-02-23 14:46:30
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.193.0 (2.269.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.4.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.4.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.4.0 - .
|
||||||
|
|
||||||
|
## 2024-02-24 00:41:54
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.193.4 (2.272.4) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.4.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.4.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.4.1 - .
|
||||||
|
|
||||||
|
## 2024-02-27 00:43:09
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.194.0 (2.272.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.4.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.4.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.4.2 - .
|
||||||
|
|
||||||
|
## 2024-03-02 00:42:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.200.0 (2.277.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.4.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.4.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.4.3 - .
|
||||||
|
|
||||||
|
## 2024-03-08 00:43:49
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.204.1 (2.279.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.5.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.5.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.5.0 - .
|
||||||
|
|
||||||
|
## 2024-03-13 00:44:38
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.207.1 (2.280.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.5.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.5.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.5.1 - .
|
||||||
|
|
||||||
|
## 2024-03-20 00:43:42
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.213.0 (2.283.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.5.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.5.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.5.2 - .
|
||||||
|
|
||||||
|
## 2024-03-27 00:44:06
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.227.0 (2.291.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.5.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.5.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.5.3 - .
|
||||||
|
|
||||||
|
## 2024-03-29 16:37:06
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.228.1 (2.292.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.0 - .
|
||||||
|
|
||||||
|
## 2024-04-03 00:44:02
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.235.0 (2.298.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.1 - .
|
||||||
|
|
||||||
|
## 2024-04-09 00:44:53
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.244.0 (2.301.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.2 - .
|
||||||
|
|
||||||
|
## 2024-04-10 00:44:38
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.245.0 (2.301.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.3 - .
|
||||||
|
|
||||||
|
## 2024-04-22 16:14:47
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc 0.0.3
|
||||||
|
- Speakeasy CLI 1.267.2 (2.312.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.4] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.4] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.4 - .
|
||||||
|
|
||||||
|
## 2024-04-24 00:45:20
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.271.0 (2.312.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
|
||||||
|
## 2024-04-25 00:48:55
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.274.1 (2.314.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
|
||||||
|
## 2024-04-26 00:46:09
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.274.1 (2.314.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
|
||||||
|
## 2024-04-27 00:45:23
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-04-28 00:50:52
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-04-29 00:47:20
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.276.0 (2.314.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-04-30 00:45:49
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.277.0 (2.317.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-05-01 00:50:59
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.277.4 (2.318.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-05-02 00:45:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.277.4 (2.318.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.5 - .
|
||||||
|
|
||||||
|
## 2024-05-03 00:50:00
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.277.8 (2.319.10) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.6] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.6] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.6 - .
|
||||||
|
|
||||||
|
## 2024-05-04 00:46:06
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.7 - .
|
||||||
|
|
||||||
|
## 2024-05-05 00:50:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.7 - .
|
||||||
|
|
||||||
|
## 2024-05-06 00:48:07
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.279.0 (2.322.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.7 - .
|
||||||
|
|
||||||
|
## 2024-05-07 00:47:05
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.280.1 (2.322.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.7 - .
|
||||||
|
|
||||||
|
## 2024-05-08 00:38:43
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.283.1 (2.324.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.6.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.6.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.6.7 - .
|
||||||
|
|
||||||
|
## 2024-05-08 18:14:51
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.285.0 (2.326.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.7.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.7.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.7.0 - .
|
||||||
|
|
||||||
|
## 2024-05-09 00:47:26
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.285.1 (2.326.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.7.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.7.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.7.0 - .
|
||||||
|
|
||||||
|
## 2024-05-23 15:56:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.295.1 (2.335.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-24 00:50:00
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.295.2 (2.335.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-25 00:47:20
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.296.1 (2.338.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-26 00:53:07
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.296.1 (2.338.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-27 00:50:25
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.296.1 (2.338.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-28 00:49:16
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.296.1 (2.338.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-29 00:52:58
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.296.1 (2.338.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-30 00:49:31
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.1 (2.338.5) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-05-31 00:50:44
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.3 (2.338.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-06-01 00:53:07
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.4 (2.338.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-06-02 00:53:31
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.4 (2.338.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-06-03 00:51:07
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.4 (2.338.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.0 - .
|
||||||
|
|
||||||
|
## 2024-06-04 00:50:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.6 (2.338.12) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-05 00:50:03
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.299.7 (2.338.12) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-06 00:49:48
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.300.0 (2.338.14) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-07 00:52:21
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.300.1 (2.339.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-08 00:50:36
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.300.1 (2.339.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-09 00:55:16
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.300.1 (2.339.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-10 00:52:30
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.300.1 (2.339.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-12 00:51:32
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.305.0 (2.340.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-13 00:10:09
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.306.0 (2.340.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-14 00:09:51
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.307.2 (2.342.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.8.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.8.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.8.1 - .
|
||||||
|
|
||||||
|
## 2024-06-15 00:09:44
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.308.1 (2.342.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.9.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.9.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.9.0 - .
|
||||||
|
|
||||||
|
## 2024-06-22 00:10:02
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.314.2 (2.349.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-23 00:10:38
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.314.2 (2.349.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-24 00:11:02
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.314.2 (2.349.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-25 00:09:42
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.315.2 (2.352.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-26 00:09:52
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.318.0 (2.352.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-27 00:10:00
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.321.0 (2.354.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-28 00:09:54
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.322.1 (2.354.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-29 00:09:38
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.322.3 (2.354.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-06-30 00:10:54
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.322.3 (2.354.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-07-01 00:11:32
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.322.3 (2.354.2) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.0 - .
|
||||||
|
|
||||||
|
## 2024-07-01 15:43:13
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.323.0 (2.356.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.10.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.10.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.10.1 - .
|
||||||
|
|
||||||
|
## 2024-09-09 18:17:18
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.393.1 (2.413.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.1 - .
|
||||||
|
|
||||||
|
## 2024-09-09 20:35:17
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.393.2 (2.413.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.2 - .
|
||||||
|
|
||||||
|
## 2024-09-10 00:08:55
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.394.0 (2.413.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.3 - .
|
||||||
|
|
||||||
|
## 2024-09-11 00:08:50
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.395.1 (2.415.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.4] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.4] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.4 - .
|
||||||
|
|
||||||
|
## 2024-09-12 00:08:45
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.396.2 (2.415.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.5] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.5] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.5 - .
|
||||||
|
|
||||||
|
## 2024-09-13 00:08:56
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.396.6 (2.415.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.6] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.6] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.6 - .
|
||||||
|
|
||||||
|
## 2024-09-14 00:08:16
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.396.9 (2.415.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.7] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.7] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.7 - .
|
||||||
|
|
||||||
|
## 2024-09-15 00:09:40
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.396.9 (2.415.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.8] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.8] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.8 - .
|
||||||
|
|
||||||
|
## 2024-09-16 00:09:14
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.396.9 (2.415.7) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.9] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.9] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.9 - .
|
||||||
|
|
||||||
|
## 2024-09-16 18:35:29
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.397.2 (2.415.8) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.10] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.10] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.10 - .
|
||||||
|
|
||||||
|
## 2024-09-18 03:01:47
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.399.0 (2.415.8) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.11] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.11] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.11 - .
|
||||||
|
|
||||||
|
## 2024-09-18 14:09:58
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.399.1 (2.415.8) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.12] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.12] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.12 - .
|
||||||
|
|
||||||
|
## 2024-09-18 15:01:19
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.399.2 (2.416.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.13] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.13] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.13 - .
|
||||||
|
|
||||||
|
## 2024-09-19 00:08:52
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.399.2 (2.416.6) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.11.14] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.11.14] https://github.com/LukeHagar/plexgo/releases/tag/v0.11.14 - .
|
||||||
|
|
||||||
|
## 2024-09-21 00:08:46
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.401.2 (2.421.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.12.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.12.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.12.0 - .
|
||||||
|
|
||||||
|
## 2024-09-22 00:09:45
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.401.2 (2.421.3) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.12.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.12.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.12.1 - .
|
||||||
|
|
||||||
|
## 2024-09-26 00:09:00
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.402.14 (2.422.22) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.13.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.13.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.13.0 - .
|
||||||
|
|
||||||
|
## 2024-10-01 00:10:01
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.405.6 (2.428.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.14.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.14.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.14.0 - .
|
||||||
|
|
||||||
|
## 2024-10-03 00:09:11
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.406.0 (2.429.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.15.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.15.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.15.0 - .
|
||||||
|
|
||||||
|
## 2024-10-04 00:09:04
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.406.0 (2.429.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.15.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.15.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.15.1 - .
|
||||||
7
USAGE.md
7
USAGE.md
@@ -5,13 +5,17 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/LukeHagar/plexgo"
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
|
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
||||||
|
plexgo.WithClientName("Plex for Roku"),
|
||||||
|
plexgo.WithClientVersion("2.4.1"),
|
||||||
|
plexgo.WithPlatform("Roku"),
|
||||||
|
plexgo.WithDeviceNickname("Roku 3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -19,7 +23,6 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.Object != nil {
|
if res.Object != nil {
|
||||||
// handle response
|
// handle response
|
||||||
}
|
}
|
||||||
|
|||||||
485
activities.go
485
activities.go
@@ -1,4 +1,4 @@
|
|||||||
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
|
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
|
||||||
package plexgo
|
package plexgo
|
||||||
|
|
||||||
@@ -6,12 +6,14 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/LukeHagar/plexgo/internal/hooks"
|
||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
|
"github.com/cenkalti/backoff/v4"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"net/url"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
||||||
@@ -33,45 +35,164 @@ func newActivities(sdkConfig sdkConfiguration) *Activities {
|
|||||||
|
|
||||||
// GetServerActivities - Get Server Activities
|
// GetServerActivities - Get Server Activities
|
||||||
// Get Server Activities
|
// Get Server Activities
|
||||||
func (s *Activities) GetServerActivities(ctx context.Context) (*operations.GetServerActivitiesResponse, error) {
|
func (s *Activities) GetServerActivities(ctx context.Context, opts ...operations.Option) (*operations.GetServerActivitiesResponse, error) {
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
hookCtx := hooks.HookContext{
|
||||||
url := strings.TrimSuffix(baseURL, "/") + "/activities"
|
Context: ctx,
|
||||||
|
OperationID: "getServerActivities",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
|
}
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
opURL, err := url.JoinPath(baseURL, "/activities")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "GET", opURL, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating request: %w", err)
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
}
|
}
|
||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("user-agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
client := s.sdkConfiguration.SecurityClient
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
|
return nil, err
|
||||||
httpRes, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error sending request: %w", err)
|
|
||||||
}
|
|
||||||
if httpRes == nil {
|
|
||||||
return nil, fmt.Errorf("error sending request: no response")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contentType := httpRes.Header.Get("Content-Type")
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
|
if retryConfig == nil {
|
||||||
|
if globalRetryConfig != nil {
|
||||||
|
retryConfig = globalRetryConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res := &operations.GetServerActivitiesResponse{
|
res := &operations.GetServerActivitiesResponse{
|
||||||
StatusCode: httpRes.StatusCode,
|
StatusCode: httpRes.StatusCode,
|
||||||
ContentType: contentType,
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
RawResponse: httpRes,
|
RawResponse: httpRes,
|
||||||
}
|
}
|
||||||
|
|
||||||
rawBody, err := io.ReadAll(httpRes.Body)
|
getRawBody := func() ([]byte, error) {
|
||||||
if err != nil {
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
return nil, fmt.Errorf("error reading response body: %w", err)
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
}
|
}
|
||||||
httpRes.Body.Close()
|
|
||||||
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
|
||||||
switch {
|
switch {
|
||||||
case httpRes.StatusCode == 200:
|
case httpRes.StatusCode == 200:
|
||||||
switch {
|
switch {
|
||||||
case utils.MatchContentType(contentType, `application/json`):
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
var out operations.GetServerActivitiesResponseBody
|
var out operations.GetServerActivitiesResponseBody
|
||||||
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -79,98 +200,302 @@ func (s *Activities) GetServerActivities(ctx context.Context) (*operations.GetSe
|
|||||||
|
|
||||||
res.Object = &out
|
res.Object = &out
|
||||||
default:
|
default:
|
||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", contentType), httpRes.StatusCode, string(rawBody), httpRes)
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode == 400:
|
case httpRes.StatusCode == 400:
|
||||||
fallthrough
|
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
|
||||||
fallthrough
|
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
|
||||||
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
|
||||||
case httpRes.StatusCode == 401:
|
|
||||||
switch {
|
switch {
|
||||||
case utils.MatchContentType(contentType, `application/json`):
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
var out sdkerrors.GetServerActivitiesResponseBody
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetServerActivitiesBadRequest
|
||||||
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out.RawResponse = httpRes
|
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
return nil, &out
|
return nil, &out
|
||||||
default:
|
default:
|
||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", contentType), httpRes.StatusCode, string(rawBody), httpRes)
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetServerActivitiesUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
|
|
||||||
return res, nil
|
return res, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CancelServerActivities - Cancel Server Activities
|
// CancelServerActivities - Cancel Server Activities
|
||||||
// Cancel Server Activities
|
// Cancel Server Activities
|
||||||
func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID string) (*operations.CancelServerActivitiesResponse, error) {
|
func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID string, opts ...operations.Option) (*operations.CancelServerActivitiesResponse, error) {
|
||||||
|
hookCtx := hooks.HookContext{
|
||||||
|
Context: ctx,
|
||||||
|
OperationID: "cancelServerActivities",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
|
}
|
||||||
|
|
||||||
request := operations.CancelServerActivitiesRequest{
|
request := operations.CancelServerActivitiesRequest{
|
||||||
ActivityUUID: activityUUID,
|
ActivityUUID: activityUUID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
url, err := utils.GenerateURL(ctx, baseURL, "/activities/{activityUUID}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/activities/{activityUUID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, "DELETE", url, nil)
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "DELETE", opURL, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating request: %w", err)
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
}
|
}
|
||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("user-agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
client := s.sdkConfiguration.SecurityClient
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
|
return nil, err
|
||||||
httpRes, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error sending request: %w", err)
|
|
||||||
}
|
|
||||||
if httpRes == nil {
|
|
||||||
return nil, fmt.Errorf("error sending request: no response")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contentType := httpRes.Header.Get("Content-Type")
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
res := &operations.CancelServerActivitiesResponse{
|
if retryConfig == nil {
|
||||||
StatusCode: httpRes.StatusCode,
|
if globalRetryConfig != nil {
|
||||||
ContentType: contentType,
|
retryConfig = globalRetryConfig
|
||||||
RawResponse: httpRes,
|
|
||||||
}
|
|
||||||
|
|
||||||
rawBody, err := io.ReadAll(httpRes.Body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error reading response body: %w", err)
|
|
||||||
}
|
|
||||||
httpRes.Body.Close()
|
|
||||||
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
|
||||||
switch {
|
|
||||||
case httpRes.StatusCode == 200:
|
|
||||||
case httpRes.StatusCode == 400:
|
|
||||||
fallthrough
|
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
|
||||||
fallthrough
|
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
|
||||||
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
|
||||||
case httpRes.StatusCode == 401:
|
|
||||||
switch {
|
|
||||||
case utils.MatchContentType(contentType, `application/json`):
|
|
||||||
var out sdkerrors.CancelServerActivitiesResponseBody
|
|
||||||
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
out.RawResponse = httpRes
|
|
||||||
|
|
||||||
return nil, &out
|
|
||||||
default:
|
|
||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", contentType), httpRes.StatusCode, string(rawBody), httpRes)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &operations.CancelServerActivitiesResponse{
|
||||||
|
StatusCode: httpRes.StatusCode,
|
||||||
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
|
RawResponse: httpRes,
|
||||||
|
}
|
||||||
|
|
||||||
|
getRawBody := func() ([]byte, error) {
|
||||||
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case httpRes.StatusCode == 200:
|
||||||
|
case httpRes.StatusCode == 400:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.CancelServerActivitiesBadRequest
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.CancelServerActivitiesUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
|
||||||
return res, nil
|
return res, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
994
authentication.go
Normal file
994
authentication.go
Normal file
@@ -0,0 +1,994 @@
|
|||||||
|
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
|
||||||
|
package plexgo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"github.com/LukeHagar/plexgo/internal/hooks"
|
||||||
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
|
"github.com/cenkalti/backoff/v4"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Authentication - API Calls regarding authentication for Plex Media Server
|
||||||
|
type Authentication struct {
|
||||||
|
sdkConfiguration sdkConfiguration
|
||||||
|
}
|
||||||
|
|
||||||
|
func newAuthentication(sdkConfig sdkConfiguration) *Authentication {
|
||||||
|
return &Authentication{
|
||||||
|
sdkConfiguration: sdkConfig,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransientToken - Get a Transient Token
|
||||||
|
// This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
|
||||||
|
func (s *Authentication) GetTransientToken(ctx context.Context, type_ operations.GetTransientTokenQueryParamType, scope operations.Scope, opts ...operations.Option) (*operations.GetTransientTokenResponse, error) {
|
||||||
|
hookCtx := hooks.HookContext{
|
||||||
|
Context: ctx,
|
||||||
|
OperationID: "getTransientToken",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
|
}
|
||||||
|
|
||||||
|
request := operations.GetTransientTokenRequest{
|
||||||
|
Type: type_,
|
||||||
|
Scope: scope,
|
||||||
|
}
|
||||||
|
|
||||||
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
opURL, err := url.JoinPath(baseURL, "/security/token")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "GET", opURL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
|
}
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
|
if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil {
|
||||||
|
return nil, fmt.Errorf("error populating query params: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
|
if retryConfig == nil {
|
||||||
|
if globalRetryConfig != nil {
|
||||||
|
retryConfig = globalRetryConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &operations.GetTransientTokenResponse{
|
||||||
|
StatusCode: httpRes.StatusCode,
|
||||||
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
|
RawResponse: httpRes,
|
||||||
|
}
|
||||||
|
|
||||||
|
getRawBody := func() ([]byte, error) {
|
||||||
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case httpRes.StatusCode == 200:
|
||||||
|
case httpRes.StatusCode == 400:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetTransientTokenBadRequest
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetTransientTokenUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSourceConnectionInformation - Get Source Connection Information
|
||||||
|
// If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.
|
||||||
|
// Note: requires Plex Media Server >= 1.15.4.
|
||||||
|
func (s *Authentication) GetSourceConnectionInformation(ctx context.Context, source string, opts ...operations.Option) (*operations.GetSourceConnectionInformationResponse, error) {
|
||||||
|
hookCtx := hooks.HookContext{
|
||||||
|
Context: ctx,
|
||||||
|
OperationID: "getSourceConnectionInformation",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
|
}
|
||||||
|
|
||||||
|
request := operations.GetSourceConnectionInformationRequest{
|
||||||
|
Source: source,
|
||||||
|
}
|
||||||
|
|
||||||
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
opURL, err := url.JoinPath(baseURL, "/security/resources")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "GET", opURL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
|
}
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
|
if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil {
|
||||||
|
return nil, fmt.Errorf("error populating query params: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
|
if retryConfig == nil {
|
||||||
|
if globalRetryConfig != nil {
|
||||||
|
retryConfig = globalRetryConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &operations.GetSourceConnectionInformationResponse{
|
||||||
|
StatusCode: httpRes.StatusCode,
|
||||||
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
|
RawResponse: httpRes,
|
||||||
|
}
|
||||||
|
|
||||||
|
getRawBody := func() ([]byte, error) {
|
||||||
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case httpRes.StatusCode == 200:
|
||||||
|
case httpRes.StatusCode == 400:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetSourceConnectionInformationBadRequest
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetSourceConnectionInformationUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTokenDetails - Get Token Details
|
||||||
|
// Get the User data from the provided X-Plex-Token
|
||||||
|
func (s *Authentication) GetTokenDetails(ctx context.Context, opts ...operations.Option) (*operations.GetTokenDetailsResponse, error) {
|
||||||
|
hookCtx := hooks.HookContext{
|
||||||
|
Context: ctx,
|
||||||
|
OperationID: "getTokenDetails",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
|
}
|
||||||
|
|
||||||
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionServerURL,
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseURL := utils.ReplaceParameters(operations.GetTokenDetailsServerList[0], map[string]string{})
|
||||||
|
if o.ServerURL != nil {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
|
|
||||||
|
opURL, err := url.JoinPath(baseURL, "/user")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "GET", opURL, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
|
}
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
|
if retryConfig == nil {
|
||||||
|
if globalRetryConfig != nil {
|
||||||
|
retryConfig = globalRetryConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &operations.GetTokenDetailsResponse{
|
||||||
|
StatusCode: httpRes.StatusCode,
|
||||||
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
|
RawResponse: httpRes,
|
||||||
|
}
|
||||||
|
|
||||||
|
getRawBody := func() ([]byte, error) {
|
||||||
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case httpRes.StatusCode == 200:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out operations.GetTokenDetailsUserPlexAccount
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
res.UserPlexAccount = &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 400:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetTokenDetailsBadRequest
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.GetTokenDetailsUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// PostUsersSignInData - Get User Sign In Data
|
||||||
|
// Sign in user with username and password and return user data with Plex authentication token
|
||||||
|
func (s *Authentication) PostUsersSignInData(ctx context.Context, request operations.PostUsersSignInDataRequest, opts ...operations.Option) (*operations.PostUsersSignInDataResponse, error) {
|
||||||
|
hookCtx := hooks.HookContext{
|
||||||
|
Context: ctx,
|
||||||
|
OperationID: "post-users-sign-in-data",
|
||||||
|
OAuth2Scopes: []string{},
|
||||||
|
SecuritySource: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
globals := operations.PostUsersSignInDataGlobals{
|
||||||
|
ClientID: s.sdkConfiguration.Globals.ClientID,
|
||||||
|
ClientName: s.sdkConfiguration.Globals.ClientName,
|
||||||
|
DeviceNickname: s.sdkConfiguration.Globals.DeviceNickname,
|
||||||
|
ClientVersion: s.sdkConfiguration.Globals.ClientVersion,
|
||||||
|
Platform: s.sdkConfiguration.Globals.Platform,
|
||||||
|
}
|
||||||
|
|
||||||
|
o := operations.Options{}
|
||||||
|
supportedOptions := []string{
|
||||||
|
operations.SupportedOptionServerURL,
|
||||||
|
operations.SupportedOptionRetries,
|
||||||
|
operations.SupportedOptionTimeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
if err := opt(&o, supportedOptions...); err != nil {
|
||||||
|
return nil, fmt.Errorf("error applying option: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseURL := utils.ReplaceParameters(operations.PostUsersSignInDataServerList[0], map[string]string{})
|
||||||
|
if o.ServerURL != nil {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
|
|
||||||
|
opURL, err := url.JoinPath(baseURL, "/users/signin")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
bodyReader, reqContentType, err := utils.SerializeRequestBody(ctx, request, false, true, "RequestBody", "form", `request:"mediaType=application/x-www-form-urlencoded"`)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout := o.Timeout
|
||||||
|
if timeout == nil {
|
||||||
|
timeout = s.sdkConfiguration.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if timeout != nil {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithTimeout(ctx, *timeout)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "POST", opURL, bodyReader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating request: %w", err)
|
||||||
|
}
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
req.Header.Set("Content-Type", reqContentType)
|
||||||
|
|
||||||
|
utils.PopulateHeaders(ctx, req, request, globals)
|
||||||
|
|
||||||
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
|
retryConfig := o.Retries
|
||||||
|
if retryConfig == nil {
|
||||||
|
if globalRetryConfig != nil {
|
||||||
|
retryConfig = globalRetryConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpRes *http.Response
|
||||||
|
if retryConfig != nil {
|
||||||
|
httpRes, err = utils.Retry(ctx, utils.Retries{
|
||||||
|
Config: retryConfig,
|
||||||
|
StatusCodes: []string{
|
||||||
|
"429",
|
||||||
|
"500",
|
||||||
|
"502",
|
||||||
|
"503",
|
||||||
|
"504",
|
||||||
|
},
|
||||||
|
}, func() (*http.Response, error) {
|
||||||
|
if req.Body != nil {
|
||||||
|
copyBody, err := req.GetBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Body = copyBody
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, backoff.Permanent(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
}
|
||||||
|
return httpRes, err
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpRes, err = s.sdkConfiguration.Client.Do(req)
|
||||||
|
if err != nil || httpRes == nil {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("error sending request: %w", err)
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("error sending request: no response")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err)
|
||||||
|
return nil, err
|
||||||
|
} else if utils.MatchStatusCodes([]string{"400", "401", "4XX", "5XX"}, httpRes.StatusCode) {
|
||||||
|
_httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if _httpRes != nil {
|
||||||
|
httpRes = _httpRes
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res := &operations.PostUsersSignInDataResponse{
|
||||||
|
StatusCode: httpRes.StatusCode,
|
||||||
|
ContentType: httpRes.Header.Get("Content-Type"),
|
||||||
|
RawResponse: httpRes,
|
||||||
|
}
|
||||||
|
|
||||||
|
getRawBody := func() ([]byte, error) {
|
||||||
|
rawBody, err := io.ReadAll(httpRes.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
httpRes.Body.Close()
|
||||||
|
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
|
||||||
|
return rawBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case httpRes.StatusCode == 201:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out operations.PostUsersSignInDataUserPlexAccount
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
res.UserPlexAccount = &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 400:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.PostUsersSignInDataBadRequest
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode == 401:
|
||||||
|
switch {
|
||||||
|
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var out sdkerrors.PostUsersSignInDataUnauthorized
|
||||||
|
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out.RawResponse = httpRes
|
||||||
|
return nil, &out
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
|
fallthrough
|
||||||
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
default:
|
||||||
|
rawBody, err := getRawBody()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
|
||||||
|
}
|
||||||
2648
codeSamples.yaml
Normal file
2648
codeSamples.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -5,4 +5,4 @@
|
|||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ------------------ | ------------------ | ------------------ | ------------------ |
|
| ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
| `AccessToken` | *string* | :heavy_check_mark: | N/A |
|
| `AccessToken` | **string* | :heavy_minus_sign: | N/A |
|
||||||
15
docs/models/operations/account.md
Normal file
15
docs/models/operations/account.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Account
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- |
|
||||||
|
| `ID` | **int* | :heavy_minus_sign: | N/A | 238960586 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /accounts/238960586 |
|
||||||
|
| `Name` | **string* | :heavy_minus_sign: | N/A | Diane |
|
||||||
|
| `DefaultAudioLanguage` | **string* | :heavy_minus_sign: | N/A | en |
|
||||||
|
| `AutoSelectAudio` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `DefaultSubtitleLanguage` | **string* | :heavy_minus_sign: | N/A | en |
|
||||||
|
| `SubtitleMode` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 |
|
||||||
9
docs/models/operations/action.md
Normal file
9
docs/models/operations/action.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Action
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
|
||||||
|
| `ID` | *string* | :heavy_check_mark: | N/A | addToContinueWatching |
|
||||||
|
| `Key` | *string* | :heavy_check_mark: | N/A | /actions/addToContinueWatching |
|
||||||
12
docs/models/operations/activedirection.md
Normal file
12
docs/models/operations/activedirection.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# ActiveDirection
|
||||||
|
|
||||||
|
The direction of the sort. Can be either `asc` or `desc`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| --------------------------- | --------------------------- |
|
||||||
|
| `ActiveDirectionAscending` | asc |
|
||||||
|
| `ActiveDirectionDescending` | desc |
|
||||||
11
docs/models/operations/addplaylistcontentsmediacontainer.md
Normal file
11
docs/models/operations/addplaylistcontentsmediacontainer.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# AddPlaylistContentsMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LeafCountAdded` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LeafCountRequested` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `Metadata` | [][operations.AddPlaylistContentsMetadata](../../models/operations/addplaylistcontentsmetadata.md) | :heavy_minus_sign: | N/A | |
|
||||||
20
docs/models/operations/addplaylistcontentsmetadata.md
Normal file
20
docs/models/operations/addplaylistcontentsmetadata.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# AddPlaylistContentsMetadata
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||||
|
| `RatingKey` | **string* | :heavy_minus_sign: | N/A | 94 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /playlists/94/items |
|
||||||
|
| `GUID` | **string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2 |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | playlist |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | A great playlist |
|
||||||
|
| `Summary` | **string* | :heavy_minus_sign: | N/A | One of my great playlists |
|
||||||
|
| `Smart` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `PlaylistType` | **string* | :heavy_minus_sign: | N/A | video |
|
||||||
|
| `Composite` | **string* | :heavy_minus_sign: | N/A | /playlists/94/composite/1705800070 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 423000 |
|
||||||
|
| `LeafCount` | **int* | :heavy_minus_sign: | N/A | 3 |
|
||||||
|
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1705716458 |
|
||||||
|
| `UpdatedAt` | **int* | :heavy_minus_sign: | N/A | 1705800070 |
|
||||||
@@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
|
| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- |
|
||||||
| `PlaylistID` | *float64* | :heavy_check_mark: | the ID of the playlist | |
|
| `PlaylistID` | *float64* | :heavy_check_mark: | the ID of the playlist | |
|
||||||
| `URI` | *string* | :heavy_check_mark: | the content URI for the playlist | library://.. |
|
| `URI` | *string* | :heavy_check_mark: | the content URI for the playlist | server://12345/com.plexapp.plugins.library/library/metadata/1 |
|
||||||
| `PlayQueueID` | *float64* | :heavy_check_mark: | the play queue to add to a playlist | 123 |
|
| `PlayQueueID` | **float64* | :heavy_minus_sign: | the play queue to add to a playlist | 123 |
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.AddPlaylistContentsResponseBody](../../models/operations/addplaylistcontentsresponsebody.md) | :heavy_minus_sign: | Playlist Updated |
|
||||||
10
docs/models/operations/addplaylistcontentsresponsebody.md
Normal file
10
docs/models/operations/addplaylistcontentsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# AddPlaylistContentsResponseBody
|
||||||
|
|
||||||
|
Playlist Updated
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.AddPlaylistContentsMediaContainer](../../models/operations/addplaylistcontentsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description | Example |
|
||||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `Tonight` | [*operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install |
|
| `Tonight` | [*operations.Tonight](../../models/operations/tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | 1 |
|
||||||
| `Skip` | [*operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`. |
|
| `Skip` | [*operations.Skip](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. | 1 |
|
||||||
11
docs/models/operations/autoselectsubtitle.md
Normal file
11
docs/models/operations/autoselectsubtitle.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# AutoSelectSubtitle
|
||||||
|
|
||||||
|
The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| --------------------------- | --------------------------- |
|
||||||
|
| `AutoSelectSubtitleDisable` | 0 |
|
||||||
|
| `AutoSelectSubtitleEnable` | 1 |
|
||||||
9
docs/models/operations/billing.md
Normal file
9
docs/models/operations/billing.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Billing
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
||||||
|
| `InternalPaymentMethod` | [operations.InternalPaymentMethod](../../models/operations/internalpaymentmethod.md) | :heavy_check_mark: | N/A |
|
||||||
|
| `PaymentMethodID` | *int64* | :heavy_check_mark: | N/A |
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description | Example |
|
||||||
| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
|
| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ |
|
||||||
| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. |
|
| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e |
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description | Example |
|
||||||
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
|
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
|
||||||
| `Download` | [*operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. |
|
| `Download` | [*operations.Download](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 |
|
||||||
8
docs/models/operations/collection.md
Normal file
8
docs/models/operations/collection.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Collection
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Working NL Subs |
|
||||||
14
docs/models/operations/connections.md
Normal file
14
docs/models/operations/connections.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Connections
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- |
|
||||||
|
| `Protocol` | [operations.Protocol](../../models/operations/protocol.md) | :heavy_check_mark: | The protocol used for the connection (http, https, etc) | http |
|
||||||
|
| `Address` | *string* | :heavy_check_mark: | The (ip) address or domain name used for the connection | |
|
||||||
|
| `Port` | *int* | :heavy_check_mark: | The port used for the connection | |
|
||||||
|
| `URI` | *string* | :heavy_check_mark: | The full URI of the connection | |
|
||||||
|
| `Local` | *bool* | :heavy_check_mark: | If the connection is local address | |
|
||||||
|
| `Relay` | *bool* | :heavy_check_mark: | If the connection is relayed through plex.direct | |
|
||||||
|
| `IPv6` | *bool* | :heavy_check_mark: | If the connection is using IPv6 | |
|
||||||
9
docs/models/operations/createplaylistmediacontainer.md
Normal file
9
docs/models/operations/createplaylistmediacontainer.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# CreatePlaylistMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 7 |
|
||||||
|
| `Metadata` | [][operations.CreatePlaylistMetadata](../../models/operations/createplaylistmetadata.md) | :heavy_minus_sign: | N/A | |
|
||||||
23
docs/models/operations/createplaylistmetadata.md
Normal file
23
docs/models/operations/createplaylistmetadata.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# CreatePlaylistMetadata
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||||
|
| `RatingKey` | **string* | :heavy_minus_sign: | N/A | 96 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /playlists/96/items |
|
||||||
|
| `GUID` | **string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55 |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | playlist |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | A Great Playlist |
|
||||||
|
| `Summary` | **string* | :heavy_minus_sign: | N/A | What a great playlist |
|
||||||
|
| `Smart` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `PlaylistType` | **string* | :heavy_minus_sign: | N/A | video |
|
||||||
|
| `Icon` | **string* | :heavy_minus_sign: | N/A | playlist://image.smart |
|
||||||
|
| `ViewCount` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LastViewedAt` | **int* | :heavy_minus_sign: | N/A | 1705719589 |
|
||||||
|
| `LeafCount` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1705719589 |
|
||||||
|
| `UpdatedAt` | **int* | :heavy_minus_sign: | N/A | 1705724593 |
|
||||||
|
| `Composite` | **string* | :heavy_minus_sign: | N/A | /playlists/96/composite/1705724593 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 141000 |
|
||||||
12
docs/models/operations/createplaylistqueryparamtype.md
Normal file
12
docs/models/operations/createplaylistqueryparamtype.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# CreatePlaylistQueryParamType
|
||||||
|
|
||||||
|
type of playlist to create
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ----------------------------------- | ----------------------------------- |
|
||||||
|
| `CreatePlaylistQueryParamTypeAudio` | audio |
|
||||||
|
| `CreatePlaylistQueryParamTypeVideo` | video |
|
||||||
|
| `CreatePlaylistQueryParamTypePhoto` | photo |
|
||||||
@@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
|
| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
||||||
| `Title` | *string* | :heavy_check_mark: | name of the playlist |
|
| `Title` | *string* | :heavy_check_mark: | name of the playlist |
|
||||||
| `Type` | [operations.Type](../../models/operations/type.md) | :heavy_check_mark: | type of playlist to create |
|
| `Type` | [operations.CreatePlaylistQueryParamType](../../models/operations/createplaylistqueryparamtype.md) | :heavy_check_mark: | type of playlist to create |
|
||||||
| `Smart` | [operations.Smart](../../models/operations/smart.md) | :heavy_check_mark: | whether the playlist is smart or not |
|
| `Smart` | [operations.Smart](../../models/operations/smart.md) | :heavy_check_mark: | whether the playlist is smart or not |
|
||||||
| `URI` | **string* | :heavy_minus_sign: | the content URI for the playlist |
|
| `URI` | *string* | :heavy_check_mark: | the content URI for the playlist |
|
||||||
| `PlayQueueID` | **float64* | :heavy_minus_sign: | the play queue to copy to a playlist |
|
| `PlayQueueID` | **float64* | :heavy_minus_sign: | the play queue to copy to a playlist |
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.CreatePlaylistResponseBody](../../models/operations/createplaylistresponsebody.md) | :heavy_minus_sign: | returns all playlists |
|
||||||
10
docs/models/operations/createplaylistresponsebody.md
Normal file
10
docs/models/operations/createplaylistresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# CreatePlaylistResponseBody
|
||||||
|
|
||||||
|
returns all playlists
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.CreatePlaylistMediaContainer](../../models/operations/createplaylistmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
12
docs/models/operations/defaultdirection.md
Normal file
12
docs/models/operations/defaultdirection.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# DefaultDirection
|
||||||
|
|
||||||
|
The direction of the sort. Can be either `asc` or `desc`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ---------------------------- | ---------------------------- |
|
||||||
|
| `DefaultDirectionAscending` | asc |
|
||||||
|
| `DefaultDirectionDescending` | desc |
|
||||||
11
docs/models/operations/defaultsubtitleaccessibility.md
Normal file
11
docs/models/operations/defaultsubtitleaccessibility.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# DefaultSubtitleAccessibility
|
||||||
|
|
||||||
|
The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------------- | ------------------------------------- |
|
||||||
|
| `DefaultSubtitleAccessibilityDisable` | 0 |
|
||||||
|
| `DefaultSubtitleAccessibilityEnable` | 1 |
|
||||||
11
docs/models/operations/defaultsubtitleforced.md
Normal file
11
docs/models/operations/defaultsubtitleforced.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# DefaultSubtitleForced
|
||||||
|
|
||||||
|
The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------ | ------------------------------ |
|
||||||
|
| `DefaultSubtitleForcedDisable` | 0 |
|
||||||
|
| `DefaultSubtitleForcedEnable` | 1 |
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
|
| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
||||||
| `SectionID` | *float64* | :heavy_check_mark: | the Id of the library to query | 1000 |
|
| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library. <br/>Note: This is unique in the context of the Plex server.<br/> | 9518 |
|
||||||
@@ -5,4 +5,4 @@
|
|||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
| `Tag` | **string* | :heavy_minus_sign: | N/A | Peyton Reed |
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | James Cameron |
|
||||||
14
docs/models/operations/feature.md
Normal file
14
docs/models/operations/feature.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Feature
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Type` | *string* | :heavy_check_mark: | N/A | |
|
||||||
|
| `Flavor` | **string* | :heavy_minus_sign: | N/A | global |
|
||||||
|
| `ScrobbleKey` | **string* | :heavy_minus_sign: | N/A | /:/scrobble/new |
|
||||||
|
| `UnscrobbleKey` | **string* | :heavy_minus_sign: | N/A | /:/unscrobble/new |
|
||||||
|
| `Directory` | [][operations.GetMediaProvidersDirectory](../../models/operations/getmediaprovidersdirectory.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Action` | [][operations.Action](../../models/operations/action.md) | :heavy_minus_sign: | N/A | |
|
||||||
11
docs/models/operations/field.md
Normal file
11
docs/models/operations/field.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Field
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Key` | *string* | :heavy_check_mark: | N/A | show.title |
|
||||||
|
| `Title` | *string* | :heavy_check_mark: | N/A | Show Title |
|
||||||
|
| `Type` | *string* | :heavy_check_mark: | N/A | string |
|
||||||
|
| `SubType` | **string* | :heavy_minus_sign: | N/A | rating |
|
||||||
9
docs/models/operations/fieldtype.md
Normal file
9
docs/models/operations/fieldtype.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# FieldType
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
|
| `Type` | *string* | :heavy_check_mark: | N/A | tag |
|
||||||
|
| `Operator` | [][operations.Operator](../../models/operations/operator.md) | :heavy_check_mark: | N/A | |
|
||||||
12
docs/models/operations/filter.md
Normal file
12
docs/models/operations/filter.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Filter
|
||||||
|
|
||||||
|
Filter
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ----------------- | ----------------- |
|
||||||
|
| `FilterAll` | all |
|
||||||
|
| `FilterAvailable` | available |
|
||||||
|
| `FilterReleased` | released |
|
||||||
9
docs/models/operations/flattenseasons.md
Normal file
9
docs/models/operations/flattenseasons.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# FlattenSeasons
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| --------------------- | --------------------- |
|
||||||
|
| `FlattenSeasonsFalse` | 0 |
|
||||||
|
| `FlattenSeasonsTrue` | 1 |
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
# Force
|
# Force
|
||||||
|
|
||||||
force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist.
|
Force the refresh even if the library is already being refreshed.
|
||||||
The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Values
|
## Values
|
||||||
|
|||||||
19
docs/models/operations/friend.md
Normal file
19
docs/models/operations/friend.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Friend
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||||
|
| `Email` | *string* | :heavy_check_mark: | The account email address | username@email.com |
|
||||||
|
| `FriendlyName` | *string* | :heavy_check_mark: | The account full name | exampleUser |
|
||||||
|
| `Home` | *bool* | :heavy_check_mark: | If the account is a Plex Home user | |
|
||||||
|
| `ID` | *int* | :heavy_check_mark: | The Plex account ID | |
|
||||||
|
| `Restricted` | **bool* | :heavy_minus_sign: | If the account is a Plex Home managed user | |
|
||||||
|
| `SharedServers` | [][operations.SharedServers](../../models/operations/sharedservers.md) | :heavy_check_mark: | N/A | |
|
||||||
|
| `SharedSources` | [][operations.SharedSources](../../models/operations/sharedsources.md) | :heavy_check_mark: | N/A | |
|
||||||
|
| `Status` | [operations.Status](../../models/operations/status.md) | :heavy_check_mark: | Current friend request status | accepted |
|
||||||
|
| `Thumb` | *string* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578 |
|
||||||
|
| `Title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | username123 |
|
||||||
|
| `Username` | *string* | :heavy_check_mark: | The account username | username123 |
|
||||||
|
| `UUID` | *string* | :heavy_check_mark: | The account Universally Unique Identifier (UUID) | 7d1916e0d8f6e76b |
|
||||||
@@ -5,4 +5,4 @@
|
|||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
| `Tag` | **string* | :heavy_minus_sign: | N/A | Comedy |
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Adventure |
|
||||||
20
docs/models/operations/geodata.md
Normal file
20
docs/models/operations/geodata.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# GeoData
|
||||||
|
|
||||||
|
Geo location data
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
||||||
|
| `Code` | *string* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI |
|
||||||
|
| `ContinentCode` | *string* | :heavy_check_mark: | The continent code where the country is located. | NA |
|
||||||
|
| `Country` | *string* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands |
|
||||||
|
| `City` | *string* | :heavy_check_mark: | The name of the city. | Amsterdam |
|
||||||
|
| `EuropeanUnionMember` | **bool* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true |
|
||||||
|
| `TimeZone` | *string* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas |
|
||||||
|
| `PostalCode` | *string* | :heavy_check_mark: | The postal code of the location. | 802 |
|
||||||
|
| `InPrivacyRestrictedCountry` | **bool* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true |
|
||||||
|
| `InPrivacyRestrictedRegion` | **bool* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true |
|
||||||
|
| `Subdivisions` | *string* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas |
|
||||||
|
| `Coordinates` | *string* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 |
|
||||||
28
docs/models/operations/getalllibrariesdirectory.md
Normal file
28
docs/models/operations/getalllibrariesdirectory.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# GetAllLibrariesDirectory
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
||||||
|
| `AllowSync` | *bool* | :heavy_check_mark: | N/A | true |
|
||||||
|
| `Art` | *string* | :heavy_check_mark: | N/A | /:/resources/movie-fanart.jpg |
|
||||||
|
| `Composite` | *string* | :heavy_check_mark: | N/A | /library/sections/1/composite/1705615584 |
|
||||||
|
| `Filters` | *bool* | :heavy_check_mark: | N/A | true |
|
||||||
|
| `Refreshing` | *bool* | :heavy_check_mark: | N/A | false |
|
||||||
|
| `Thumb` | *string* | :heavy_check_mark: | N/A | /:/resources/movie.png |
|
||||||
|
| `Key` | *string* | :heavy_check_mark: | N/A | 1 |
|
||||||
|
| `Type` | *string* | :heavy_check_mark: | N/A | movie |
|
||||||
|
| `Title` | *string* | :heavy_check_mark: | N/A | Movies |
|
||||||
|
| `Agent` | *string* | :heavy_check_mark: | N/A | tv.plex.agents.movie |
|
||||||
|
| `Scanner` | *string* | :heavy_check_mark: | N/A | Plex Movie |
|
||||||
|
| `Language` | *string* | :heavy_check_mark: | N/A | en-US |
|
||||||
|
| `UUID` | *string* | :heavy_check_mark: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 |
|
||||||
|
| `UpdatedAt` | *int64* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 |
|
||||||
|
| `CreatedAt` | *int64* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 |
|
||||||
|
| `ScannedAt` | *int64* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 |
|
||||||
|
| `Content` | *bool* | :heavy_check_mark: | N/A | true |
|
||||||
|
| `Directory` | *bool* | :heavy_check_mark: | N/A | true |
|
||||||
|
| `ContentChangedAt` | *int64* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 |
|
||||||
|
| `Hidden` | *int* | :heavy_check_mark: | N/A | 0 |
|
||||||
|
| `Location` | [][operations.GetAllLibrariesLocation](../../models/operations/getalllibrarieslocation.md) | :heavy_check_mark: | N/A | |
|
||||||
9
docs/models/operations/getalllibrarieslocation.md
Normal file
9
docs/models/operations/getalllibrarieslocation.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# GetAllLibrariesLocation
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `ID` | *int* | :heavy_check_mark: | N/A | 1 |
|
||||||
|
| `Path` | *string* | :heavy_check_mark: | N/A | /movies |
|
||||||
11
docs/models/operations/getalllibrariesmediacontainer.md
Normal file
11
docs/models/operations/getalllibrariesmediacontainer.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetAllLibrariesMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
|
||||||
|
| `Size` | *int* | :heavy_check_mark: | N/A | 5 |
|
||||||
|
| `AllowSync` | *bool* | :heavy_check_mark: | N/A | false |
|
||||||
|
| `Title1` | *string* | :heavy_check_mark: | N/A | Plex Library |
|
||||||
|
| `Directory` | [][operations.GetAllLibrariesDirectory](../../models/operations/getalllibrariesdirectory.md) | :heavy_check_mark: | N/A | |
|
||||||
11
docs/models/operations/getalllibrariesresponse.md
Normal file
11
docs/models/operations/getalllibrariesresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetAllLibrariesResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetAllLibrariesResponseBody](../../models/operations/getalllibrariesresponsebody.md) | :heavy_minus_sign: | The libraries available on the Server |
|
||||||
10
docs/models/operations/getalllibrariesresponsebody.md
Normal file
10
docs/models/operations/getalllibrariesresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetAllLibrariesResponseBody
|
||||||
|
|
||||||
|
The libraries available on the Server
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [operations.GetAllLibrariesMediaContainer](../../models/operations/getalllibrariesmediacontainer.md) | :heavy_check_mark: | N/A |
|
||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
| `ResponseBodies` | [][operations.ResponseBody](../../models/operations/responsebody.md) | :heavy_minus_sign: | Available Clients |
|
| `Object` | [*operations.GetAvailableClientsResponseBody](../../models/operations/getavailableclientsresponsebody.md) | :heavy_minus_sign: | Available Clients |
|
||||||
10
docs/models/operations/getavailableclientsresponsebody.md
Normal file
10
docs/models/operations/getavailableclientsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetAvailableClientsResponseBody
|
||||||
|
|
||||||
|
Available Clients
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.GetAvailableClientsMediaContainer](../../models/operations/getavailableclientsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
15
docs/models/operations/getbandwidthstatisticsaccount.md
Normal file
15
docs/models/operations/getbandwidthstatisticsaccount.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# GetBandwidthStatisticsAccount
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- |
|
||||||
|
| `ID` | **int* | :heavy_minus_sign: | N/A | 238960586 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /accounts/238960586 |
|
||||||
|
| `Name` | **string* | :heavy_minus_sign: | N/A | Diane |
|
||||||
|
| `DefaultAudioLanguage` | **string* | :heavy_minus_sign: | N/A | en |
|
||||||
|
| `AutoSelectAudio` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `DefaultSubtitleLanguage` | **string* | :heavy_minus_sign: | N/A | en |
|
||||||
|
| `SubtitleMode` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 |
|
||||||
12
docs/models/operations/getbandwidthstatisticsdevice.md
Normal file
12
docs/models/operations/getbandwidthstatisticsdevice.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# GetBandwidthStatisticsDevice
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- |
|
||||||
|
| `ID` | **int* | :heavy_minus_sign: | N/A | 208 |
|
||||||
|
| `Name` | **string* | :heavy_minus_sign: | N/A | Roku Express |
|
||||||
|
| `Platform` | **string* | :heavy_minus_sign: | N/A | Roku |
|
||||||
|
| `ClientIdentifier` | **string* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 |
|
||||||
|
| `CreatedAt` | **int* | :heavy_minus_sign: | N/A | 1706470556 |
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# GetBandwidthStatisticsMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 5497 |
|
||||||
|
| `Device` | [][operations.GetBandwidthStatisticsDevice](../../models/operations/getbandwidthstatisticsdevice.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Account` | [][operations.GetBandwidthStatisticsAccount](../../models/operations/getbandwidthstatisticsaccount.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `StatisticsBandwidth` | [][operations.StatisticsBandwidth](../../models/operations/statisticsbandwidth.md) | :heavy_minus_sign: | N/A | |
|
||||||
8
docs/models/operations/getbandwidthstatisticsrequest.md
Normal file
8
docs/models/operations/getbandwidthstatisticsrequest.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetBandwidthStatisticsRequest
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||||
|
| `Timespan` | **int64* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> | 4 |
|
||||||
11
docs/models/operations/getbandwidthstatisticsresponse.md
Normal file
11
docs/models/operations/getbandwidthstatisticsresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetBandwidthStatisticsResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetBandwidthStatisticsResponseBody](../../models/operations/getbandwidthstatisticsresponsebody.md) | :heavy_minus_sign: | Bandwidth Statistics |
|
||||||
10
docs/models/operations/getbandwidthstatisticsresponsebody.md
Normal file
10
docs/models/operations/getbandwidthstatisticsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetBandwidthStatisticsResponseBody
|
||||||
|
|
||||||
|
Bandwidth Statistics
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.GetBandwidthStatisticsMediaContainer](../../models/operations/getbandwidthstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
13
docs/models/operations/getbannerimagerequest.md
Normal file
13
docs/models/operations/getbannerimagerequest.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# GetBannerImageRequest
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
|
||||||
|
| `RatingKey` | *int64* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 |
|
||||||
|
| `Width` | *int64* | :heavy_check_mark: | N/A | 396 |
|
||||||
|
| `Height` | *int64* | :heavy_check_mark: | N/A | 396 |
|
||||||
|
| `MinSize` | *int64* | :heavy_check_mark: | N/A | 1 |
|
||||||
|
| `Upscale` | *int64* | :heavy_check_mark: | N/A | 1 |
|
||||||
|
| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf |
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# GetCommonLibraryItemsResponse
|
# GetBannerImageResponse
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
@@ -7,4 +7,6 @@
|
|||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `ResponseStream` | *io.ReadCloser* | :heavy_minus_sign: | Successful response returning an image |
|
||||||
|
| `Headers` | map[string][]*string* | :heavy_check_mark: | N/A |
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# GetCommonLibraryItemsRequest
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
|
||||||
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
|
|
||||||
| `SectionID` | *float64* | :heavy_check_mark: | the Id of the library to query |
|
|
||||||
| `Type` | *float64* | :heavy_check_mark: | item type |
|
|
||||||
| `Filter` | **string* | :heavy_minus_sign: | the filter parameter |
|
|
||||||
11
docs/models/operations/getcompanionsdataresponse.md
Normal file
11
docs/models/operations/getcompanionsdataresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetCompanionsDataResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `ResponseBodies` | [][operations.ResponseBody](../../models/operations/responsebody.md) | :heavy_minus_sign: | Companions Data |
|
||||||
20
docs/models/operations/getgeodatageodata.md
Normal file
20
docs/models/operations/getgeodatageodata.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# GetGeoDataGeoData
|
||||||
|
|
||||||
|
Geo location data
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
||||||
|
| `Code` | *string* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI |
|
||||||
|
| `ContinentCode` | *string* | :heavy_check_mark: | The continent code where the country is located. | NA |
|
||||||
|
| `Country` | *string* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands |
|
||||||
|
| `City` | *string* | :heavy_check_mark: | The name of the city. | Amsterdam |
|
||||||
|
| `EuropeanUnionMember` | **bool* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true |
|
||||||
|
| `TimeZone` | *string* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas |
|
||||||
|
| `PostalCode` | *string* | :heavy_check_mark: | The postal code of the location. | 802 |
|
||||||
|
| `InPrivacyRestrictedCountry` | **bool* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true |
|
||||||
|
| `InPrivacyRestrictedRegion` | **bool* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true |
|
||||||
|
| `Subdivisions` | *string* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas |
|
||||||
|
| `Coordinates` | *string* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 |
|
||||||
11
docs/models/operations/getgeodataresponse.md
Normal file
11
docs/models/operations/getgeodataresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetGeoDataResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | |
|
||||||
|
| `GeoData` | [*operations.GetGeoDataGeoData](../../models/operations/getgeodatageodata.md) | :heavy_minus_sign: | Gets the geo location data of the user | {<br/>"code": "VI",<br/>"continent_code": "NA",<br/>"country": "United States Virgin Islands",<br/>"city": "Amsterdam",<br/>"european_union_member": true,<br/>"time_zone": "America/St_Thomas",<br/>"postal_code": 802,<br/>"in_privacy_restricted_country": true,<br/>"in_privacy_restricted_region": true,<br/>"subdivisions": "Saint Thomas",<br/>"coordinates": "18.3381, -64.8941"<br/>} |
|
||||||
11
docs/models/operations/getglobalhubsmediacontainer.md
Normal file
11
docs/models/operations/getglobalhubsmediacontainer.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetGlobalHubsMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 8 |
|
||||||
|
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
|
||||||
|
| `Hub` | [][operations.Hub](../../models/operations/hub.md) | :heavy_minus_sign: | N/A | |
|
||||||
24
docs/models/operations/getglobalhubsmetadata.md
Normal file
24
docs/models/operations/getglobalhubsmetadata.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# GetGlobalHubsMetadata
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||||
|
| `RatingKey` | **string* | :heavy_minus_sign: | N/A | 57070 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /playlists/57070/items |
|
||||||
|
| `GUID` | **string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | playlist |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | November Movie Day |
|
||||||
|
| `TitleSort` | **string* | :heavy_minus_sign: | N/A | Tracks |
|
||||||
|
| `Summary` | **string* | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Smart` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `PlaylistType` | **string* | :heavy_minus_sign: | N/A | video |
|
||||||
|
| `Composite` | **string* | :heavy_minus_sign: | N/A | /playlists/57070/composite/1668787730 |
|
||||||
|
| `Icon` | **string* | :heavy_minus_sign: | N/A | playlist://image.smart |
|
||||||
|
| `ViewCount` | **int* | :heavy_minus_sign: | N/A | 2 |
|
||||||
|
| `LastViewedAt` | **int* | :heavy_minus_sign: | N/A | 1668787732 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 16873000 |
|
||||||
|
| `LeafCount` | **int* | :heavy_minus_sign: | N/A | 3 |
|
||||||
|
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1668779618 |
|
||||||
|
| `UpdatedAt` | **int* | :heavy_minus_sign: | N/A | 1668787730 |
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetGlobalHubsResponseBody](../../models/operations/getglobalhubsresponsebody.md) | :heavy_minus_sign: | returns global hubs |
|
||||||
10
docs/models/operations/getglobalhubsresponsebody.md
Normal file
10
docs/models/operations/getglobalhubsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetGlobalHubsResponseBody
|
||||||
|
|
||||||
|
returns global hubs
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.GetGlobalHubsMediaContainer](../../models/operations/getglobalhubsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
11
docs/models/operations/gethomedataresponse.md
Normal file
11
docs/models/operations/gethomedataresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetHomeDataResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetHomeDataResponseBody](../../models/operations/gethomedataresponsebody.md) | :heavy_minus_sign: | Home Data |
|
||||||
15
docs/models/operations/gethomedataresponsebody.md
Normal file
15
docs/models/operations/gethomedataresponsebody.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# GetHomeDataResponseBody
|
||||||
|
|
||||||
|
Home Data
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
|
||||||
|
| `ID` | **float64* | :heavy_minus_sign: | N/A | 1841489 |
|
||||||
|
| `Name` | **string* | :heavy_minus_sign: | N/A | Blindkitty38's home |
|
||||||
|
| `GuestUserID` | **float64* | :heavy_minus_sign: | N/A | 58815432 |
|
||||||
|
| `GuestUserUUID` | **string* | :heavy_minus_sign: | N/A | f3df4e01bfca0787 |
|
||||||
|
| `GuestEnabled` | **bool* | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Subscription` | **bool* | :heavy_minus_sign: | N/A | |
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# GetLatestLibraryItemsRequest
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
|
||||||
| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ |
|
|
||||||
| `SectionID` | *float64* | :heavy_check_mark: | the Id of the library to query |
|
|
||||||
| `Type` | *float64* | :heavy_check_mark: | item type |
|
|
||||||
| `Filter` | **string* | :heavy_minus_sign: | the filter parameter |
|
|
||||||
12
docs/models/operations/getlibrarydetailsdirectory.md
Normal file
12
docs/models/operations/getlibrarydetailsdirectory.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# GetLibraryDetailsDirectory
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | search?type=1 |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Search... |
|
||||||
|
| `Secondary` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `Prompt` | **string* | :heavy_minus_sign: | N/A | Search Movies |
|
||||||
|
| `Search` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
11
docs/models/operations/getlibrarydetailsfield.md
Normal file
11
docs/models/operations/getlibrarydetailsfield.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetLibraryDetailsField
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | label |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Label |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | tag |
|
||||||
|
| `SubType` | **string* | :heavy_minus_sign: | N/A | bitrate |
|
||||||
9
docs/models/operations/getlibrarydetailsfieldtype.md
Normal file
9
docs/models/operations/getlibrarydetailsfieldtype.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# GetLibraryDetailsFieldType
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | resolution |
|
||||||
|
| `Operator` | [][operations.GetLibraryDetailsOperator](../../models/operations/getlibrarydetailsoperator.md) | :heavy_minus_sign: | N/A | |
|
||||||
12
docs/models/operations/getlibrarydetailsfilter.md
Normal file
12
docs/models/operations/getlibrarydetailsfilter.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# GetLibraryDetailsFilter
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- |
|
||||||
|
| `Filter` | **string* | :heavy_minus_sign: | N/A | label |
|
||||||
|
| `FilterType` | **string* | :heavy_minus_sign: | N/A | string |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/sections/1/label |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Labels |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | filter |
|
||||||
22
docs/models/operations/getlibrarydetailsmediacontainer.md
Normal file
22
docs/models/operations/getlibrarydetailsmediacontainer.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# GetLibraryDetailsMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 29 |
|
||||||
|
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /:/resources/movie-fanart.jpg |
|
||||||
|
| `Content` | **string* | :heavy_minus_sign: | N/A | secondary |
|
||||||
|
| `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
|
||||||
|
| `LibrarySectionID` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `MediaTagPrefix` | **string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ |
|
||||||
|
| `MediaTagVersion` | **int* | :heavy_minus_sign: | N/A | 1701731894 |
|
||||||
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /:/resources/movie.png |
|
||||||
|
| `Title1` | **string* | :heavy_minus_sign: | N/A | Movies |
|
||||||
|
| `ViewGroup` | **string* | :heavy_minus_sign: | N/A | secondary |
|
||||||
|
| `ViewMode` | **int* | :heavy_minus_sign: | N/A | 65592 |
|
||||||
|
| `Directory` | [][operations.GetLibraryDetailsDirectory](../../models/operations/getlibrarydetailsdirectory.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Type` | [][operations.GetLibraryDetailsType](../../models/operations/getlibrarydetailstype.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `FieldType` | [][operations.GetLibraryDetailsFieldType](../../models/operations/getlibrarydetailsfieldtype.md) | :heavy_minus_sign: | N/A | |
|
||||||
9
docs/models/operations/getlibrarydetailsoperator.md
Normal file
9
docs/models/operations/getlibrarydetailsoperator.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# GetLibraryDetailsOperator
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | = |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | is |
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
# GetLibraryRequest
|
# GetLibraryDetailsRequest
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `SectionID` | *float64* | :heavy_check_mark: | the Id of the library to query | 1000 |
|
| `IncludeDetails` | [*operations.IncludeDetails](../../models/operations/includedetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts). <br/>Only exists for backwards compatibility, media providers other than the server libraries have it on always.<br/> | |
|
||||||
| `IncludeDetails` | [*operations.IncludeDetails](../../models/operations/includedetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts). <br/>Only exists for backwards compatibility, media providers other than the server libraries have it on always.<br/> | |
|
| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library. <br/>Note: This is unique in the context of the Plex server.<br/> | 9518 |
|
||||||
11
docs/models/operations/getlibrarydetailsresponse.md
Normal file
11
docs/models/operations/getlibrarydetailsresponse.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GetLibraryDetailsResponse
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||||
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetLibraryDetailsResponseBody](../../models/operations/getlibrarydetailsresponsebody.md) | :heavy_minus_sign: | The details of the library |
|
||||||
10
docs/models/operations/getlibrarydetailsresponsebody.md
Normal file
10
docs/models/operations/getlibrarydetailsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetLibraryDetailsResponseBody
|
||||||
|
|
||||||
|
The details of the library
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.GetLibraryDetailsMediaContainer](../../models/operations/getlibrarydetailsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
13
docs/models/operations/getlibrarydetailssort.md
Normal file
13
docs/models/operations/getlibrarydetailssort.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# GetLibraryDetailsSort
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- |
|
||||||
|
| `Default` | **string* | :heavy_minus_sign: | N/A | asc |
|
||||||
|
| `DefaultDirection` | **string* | :heavy_minus_sign: | N/A | desc |
|
||||||
|
| `DescKey` | **string* | :heavy_minus_sign: | N/A | random:desc |
|
||||||
|
| `FirstCharacterKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/1/firstCharacter |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | random |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Randomly |
|
||||||
14
docs/models/operations/getlibrarydetailstype.md
Normal file
14
docs/models/operations/getlibrarydetailstype.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# GetLibraryDetailsType
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/sections/1/all?type=1 |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | movie |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Movies |
|
||||||
|
| `Active` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `Filter` | [][operations.GetLibraryDetailsFilter](../../models/operations/getlibrarydetailsfilter.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Sort` | [][operations.GetLibraryDetailsSort](../../models/operations/getlibrarydetailssort.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Field` | [][operations.GetLibraryDetailsField](../../models/operations/getlibrarydetailsfield.md) | :heavy_minus_sign: | N/A | |
|
||||||
8
docs/models/operations/getlibraryhubscountry.md
Normal file
8
docs/models/operations/getlibraryhubscountry.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetLibraryHubsCountry
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | United States of America |
|
||||||
8
docs/models/operations/getlibraryhubsdirector.md
Normal file
8
docs/models/operations/getlibraryhubsdirector.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetLibraryHubsDirector
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Nathan Greno |
|
||||||
8
docs/models/operations/getlibraryhubsgenre.md
Normal file
8
docs/models/operations/getlibraryhubsgenre.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetLibraryHubsGenre
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Animation |
|
||||||
19
docs/models/operations/getlibraryhubshub.md
Normal file
19
docs/models/operations/getlibraryhubshub.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# GetLibraryHubsHub
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0 |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Recently Played Movies |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | movie |
|
||||||
|
| `HubIdentifier` | **string* | :heavy_minus_sign: | N/A | movie.recentlyviewed.1 |
|
||||||
|
| `Context` | **string* | :heavy_minus_sign: | N/A | hub.movie.recentlyviewed |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 6 |
|
||||||
|
| `More` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `Style` | **string* | :heavy_minus_sign: | N/A | shelf |
|
||||||
|
| `HubKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/66485,66098,57249,11449,5858,14944 |
|
||||||
|
| `Metadata` | [][operations.GetLibraryHubsMetadata](../../models/operations/getlibraryhubsmetadata.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Promoted` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `Random` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
24
docs/models/operations/getlibraryhubsmedia.md
Normal file
24
docs/models/operations/getlibraryhubsmedia.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# GetLibraryHubsMedia
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
||||||
|
| `ID` | **int* | :heavy_minus_sign: | N/A | 38247 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 6017237 |
|
||||||
|
| `Bitrate` | **int* | :heavy_minus_sign: | N/A | 2051 |
|
||||||
|
| `Width` | **int* | :heavy_minus_sign: | N/A | 1920 |
|
||||||
|
| `Height` | **int* | :heavy_minus_sign: | N/A | 1080 |
|
||||||
|
| `AspectRatio` | **float64* | :heavy_minus_sign: | N/A | 1.78 |
|
||||||
|
| `AudioChannels` | **int* | :heavy_minus_sign: | N/A | 2 |
|
||||||
|
| `AudioCodec` | **string* | :heavy_minus_sign: | N/A | aac |
|
||||||
|
| `VideoCodec` | **string* | :heavy_minus_sign: | N/A | h264 |
|
||||||
|
| `VideoResolution` | **string* | :heavy_minus_sign: | N/A | 1080 |
|
||||||
|
| `Container` | **string* | :heavy_minus_sign: | N/A | mp4 |
|
||||||
|
| `VideoFrameRate` | **string* | :heavy_minus_sign: | N/A | 24p |
|
||||||
|
| `OptimizedForStreaming` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `AudioProfile` | **string* | :heavy_minus_sign: | N/A | lc |
|
||||||
|
| `Has64bitOffsets` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `VideoProfile` | **string* | :heavy_minus_sign: | N/A | high |
|
||||||
|
| `Part` | [][operations.GetLibraryHubsPart](../../models/operations/getlibraryhubspart.md) | :heavy_minus_sign: | N/A | |
|
||||||
14
docs/models/operations/getlibraryhubsmediacontainer.md
Normal file
14
docs/models/operations/getlibraryhubsmediacontainer.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# GetLibraryHubsMediaContainer
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 7 |
|
||||||
|
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
|
||||||
|
| `LibrarySectionID` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Movies |
|
||||||
|
| `LibrarySectionUUID` | **string* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 |
|
||||||
|
| `Hub` | [][operations.GetLibraryHubsHub](../../models/operations/getlibraryhubshub.md) | :heavy_minus_sign: | N/A | |
|
||||||
41
docs/models/operations/getlibraryhubsmetadata.md
Normal file
41
docs/models/operations/getlibraryhubsmetadata.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# GetLibraryHubsMetadata
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `RatingKey` | **string* | :heavy_minus_sign: | N/A | 14944 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/metadata/14944 |
|
||||||
|
| `GUID` | **string* | :heavy_minus_sign: | N/A | plex://movie/5d77686eeb5d26001f1eb339 |
|
||||||
|
| `Studio` | **string* | :heavy_minus_sign: | N/A | Walt Disney Animation Studios |
|
||||||
|
| `Type` | **string* | :heavy_minus_sign: | N/A | movie |
|
||||||
|
| `Title` | **string* | :heavy_minus_sign: | N/A | Tangled |
|
||||||
|
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Movies |
|
||||||
|
| `LibrarySectionID` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LibrarySectionKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/1 |
|
||||||
|
| `ContentRating` | **string* | :heavy_minus_sign: | N/A | PG |
|
||||||
|
| `Summary` | **string* | :heavy_minus_sign: | N/A | The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is. |
|
||||||
|
| `Rating` | **float64* | :heavy_minus_sign: | N/A | 8.9 |
|
||||||
|
| `AudienceRating` | **float64* | :heavy_minus_sign: | N/A | 8.7 |
|
||||||
|
| `ViewCount` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `LastViewedAt` | **int* | :heavy_minus_sign: | N/A | 1704936047 |
|
||||||
|
| `Year` | **int* | :heavy_minus_sign: | N/A | 2010 |
|
||||||
|
| `Tagline` | **string* | :heavy_minus_sign: | N/A | They're taking adventure to new lengths. |
|
||||||
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/14944/thumb/1705739847 |
|
||||||
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/14944/art/1705739847 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 6017237 |
|
||||||
|
| `OriginallyAvailableAt` | [*types.Date](../../types/date.md) | :heavy_minus_sign: | N/A | 2010-11-24 00:00:00 +0000 UTC |
|
||||||
|
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1589412494 |
|
||||||
|
| `UpdatedAt` | **int* | :heavy_minus_sign: | N/A | 1705739847 |
|
||||||
|
| `AudienceRatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright |
|
||||||
|
| `PrimaryExtraKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/14952 |
|
||||||
|
| `RatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe |
|
||||||
|
| `Media` | [][operations.GetLibraryHubsMedia](../../models/operations/getlibraryhubsmedia.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Genre` | [][operations.GetLibraryHubsGenre](../../models/operations/getlibraryhubsgenre.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Country` | [][operations.GetLibraryHubsCountry](../../models/operations/getlibraryhubscountry.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Director` | [][operations.GetLibraryHubsDirector](../../models/operations/getlibraryhubsdirector.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Role` | [][operations.GetLibraryHubsRole](../../models/operations/getlibraryhubsrole.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `Writer` | [][operations.GetLibraryHubsWriter](../../models/operations/getlibraryhubswriter.md) | :heavy_minus_sign: | N/A | |
|
||||||
|
| `SkipCount` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `ChapterSource` | **string* | :heavy_minus_sign: | N/A | media |
|
||||||
17
docs/models/operations/getlibraryhubspart.md
Normal file
17
docs/models/operations/getlibraryhubspart.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# GetLibraryHubsPart
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ |
|
||||||
|
| `ID` | **int* | :heavy_minus_sign: | N/A | 38247 |
|
||||||
|
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/parts/38247/1589412494/file.mp4 |
|
||||||
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 6017237 |
|
||||||
|
| `File` | **string* | :heavy_minus_sign: | N/A | /movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4 |
|
||||||
|
| `Size` | **int* | :heavy_minus_sign: | N/A | 1545647447 |
|
||||||
|
| `AudioProfile` | **string* | :heavy_minus_sign: | N/A | lc |
|
||||||
|
| `Container` | **string* | :heavy_minus_sign: | N/A | mp4 |
|
||||||
|
| `Has64bitOffsets` | **bool* | :heavy_minus_sign: | N/A | false |
|
||||||
|
| `OptimizedForStreaming` | **bool* | :heavy_minus_sign: | N/A | true |
|
||||||
|
| `VideoProfile` | **string* | :heavy_minus_sign: | N/A | high |
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description |
|
| Field | Type | Required | Description |
|
||||||
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||||
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||||
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||||
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||||
|
| `Object` | [*operations.GetLibraryHubsResponseBody](../../models/operations/getlibraryhubsresponsebody.md) | :heavy_minus_sign: | The hubs specific to the library |
|
||||||
10
docs/models/operations/getlibraryhubsresponsebody.md
Normal file
10
docs/models/operations/getlibraryhubsresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# GetLibraryHubsResponseBody
|
||||||
|
|
||||||
|
The hubs specific to the library
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description |
|
||||||
|
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||||
|
| `MediaContainer` | [*operations.GetLibraryHubsMediaContainer](../../models/operations/getlibraryhubsmediacontainer.md) | :heavy_minus_sign: | N/A |
|
||||||
8
docs/models/operations/getlibraryhubsrole.md
Normal file
8
docs/models/operations/getlibraryhubsrole.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetLibraryHubsRole
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Donna Murphy |
|
||||||
8
docs/models/operations/getlibraryhubswriter.md
Normal file
8
docs/models/operations/getlibraryhubswriter.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# GetLibraryHubsWriter
|
||||||
|
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
| Field | Type | Required | Description | Example |
|
||||||
|
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||||
|
| `Tag` | **string* | :heavy_minus_sign: | N/A | Wilhelm Grimm |
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user