Compare commits

...

10 Commits

Author SHA1 Message Date
speakeasybot
5fc7421ebf ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.308.1 2024-06-15 00:10:35 +00:00
speakeasybot
caedf0fada ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.307.2 2024-06-14 00:10:13 +00:00
speakeasybot
2e6d62cc3d ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.306.0 2024-06-13 00:10:32 +00:00
speakeasybot
ee418c915d ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.305.0 2024-06-12 00:51:55 +00:00
speakeasybot
89eb756371 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.300.1 2024-06-10 00:53:01 +00:00
speakeasybot
747f1cc472 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.300.1 2024-06-09 00:55:46 +00:00
speakeasybot
3caad468dc ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.300.1 2024-06-08 00:51:08 +00:00
speakeasybot
135f07bb5b ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.300.1 2024-06-07 00:52:51 +00:00
speakeasybot
f713adaa5f ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.300.0 2024-06-06 00:50:20 +00:00
speakeasybot
afd7c86d0b ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.299.7 2024-06-05 00:50:36 +00:00
47 changed files with 3258 additions and 1357 deletions

View File

@@ -1,12 +1,12 @@
lockVersion: 2.0.0
id: dfa99515-01c0-42eb-9be5-ee212fd03eb3
management:
docChecksum: 911d74baa0d06121d2ce2c71d94e977a
docChecksum: 37654ea0982ab5e87a9a9576014c9d19
docVersion: 0.0.3
speakeasyVersion: 1.299.6
generationVersion: 2.338.12
releaseVersion: 0.8.1
configChecksum: b899da965d1d55861cb2c0c7e96b4864
speakeasyVersion: 1.308.1
generationVersion: 2.342.6
releaseVersion: 0.9.0
configChecksum: 21802bb6ef89f8b23e39a8afe2761568
repoURL: https://github.com/LukeHagar/plexgo.git
repoSubDirectory: .
installationURL: https://github.com/LukeHagar/plexgo
@@ -27,22 +27,24 @@ features:
nameOverrides: 2.81.2
responseFormat: 0.1.2
sdkHooks: 0.1.0
typeOverrides: 2.81.1
generatedFiles:
- server.go
- media.go
- video.go
- activities.go
- butler.go
- plex.go
- hubs.go
- search.go
- library.go
- log.go
- plex.go
- playlists.go
- authentication.go
- statistics.go
- sessions.go
- updater.go
- watchlist.go
- plexapi.go
- go.mod
- models/sdkerrors/sdkerror.go
@@ -82,6 +84,9 @@ generatedFiles:
- /models/operations/stopalltasks.go
- /models/operations/starttask.go
- /models/operations/stoptask.go
- /models/operations/gethomedata.go
- /models/operations/getpin.go
- /models/operations/gettoken.go
- /models/operations/getglobalhubs.go
- /models/operations/getlibraryhubs.go
- /models/operations/performsearch.go
@@ -101,8 +106,6 @@ generatedFiles:
- /models/operations/logline.go
- /models/operations/logmultiline.go
- /models/operations/enablepapertrail.go
- /models/operations/getpin.go
- /models/operations/gettoken.go
- /models/operations/createplaylist.go
- /models/operations/getplaylists.go
- /models/operations/getplaylist.go
@@ -122,6 +125,7 @@ generatedFiles:
- /models/operations/getupdatestatus.go
- /models/operations/checkforupdates.go
- /models/operations/applyupdates.go
- /models/operations/getwatchlist.go
- /models/sdkerrors/getservercapabilities.go
- /models/sdkerrors/getserverpreferences.go
- /models/sdkerrors/getavailableclients.go
@@ -142,6 +146,9 @@ generatedFiles:
- /models/sdkerrors/stopalltasks.go
- /models/sdkerrors/starttask.go
- /models/sdkerrors/stoptask.go
- /models/sdkerrors/gethomedata.go
- /models/sdkerrors/getpin.go
- /models/sdkerrors/gettoken.go
- /models/sdkerrors/getglobalhubs.go
- /models/sdkerrors/getlibraryhubs.go
- /models/sdkerrors/performsearch.go
@@ -161,8 +168,6 @@ generatedFiles:
- /models/sdkerrors/logline.go
- /models/sdkerrors/logmultiline.go
- /models/sdkerrors/enablepapertrail.go
- /models/sdkerrors/getpin.go
- /models/sdkerrors/gettoken.go
- /models/sdkerrors/createplaylist.go
- /models/sdkerrors/getplaylists.go
- /models/sdkerrors/getplaylist.go
@@ -182,6 +187,7 @@ generatedFiles:
- /models/sdkerrors/getupdatestatus.go
- /models/sdkerrors/checkforupdates.go
- /models/sdkerrors/applyupdates.go
- /models/sdkerrors/getwatchlist.go
- /models/components/security.go
- docs/models/operations/directory.md
- docs/models/operations/mediacontainer.md
@@ -243,6 +249,18 @@ generatedFiles:
- docs/models/operations/pathparamtaskname.md
- docs/models/operations/stoptaskrequest.md
- docs/models/operations/stoptaskresponse.md
- docs/models/operations/gethomedataresponsebody.md
- docs/models/operations/gethomedataresponse.md
- docs/models/operations/getpinglobals.md
- docs/models/operations/getpinrequest.md
- docs/models/operations/location.md
- docs/models/operations/getpinresponsebody.md
- docs/models/operations/getpinresponse.md
- docs/models/operations/gettokenglobals.md
- docs/models/operations/gettokenrequest.md
- docs/models/operations/gettokenlocation.md
- docs/models/operations/gettokenresponsebody.md
- docs/models/operations/gettokenresponse.md
- docs/models/operations/onlytransient.md
- docs/models/operations/getglobalhubsrequest.md
- docs/models/operations/getglobalhubsmetadata.md
@@ -291,7 +309,7 @@ generatedFiles:
- docs/models/operations/writer.md
- docs/models/operations/country.md
- docs/models/operations/role.md
- docs/models/operations/metadata.md
- docs/models/operations/getrecentlyaddedmetadata.md
- docs/models/operations/getrecentlyaddedmediacontainer.md
- docs/models/operations/getrecentlyaddedresponsebody.md
- docs/models/operations/getrecentlyaddedresponse.md
@@ -303,7 +321,7 @@ generatedFiles:
- docs/models/operations/includedetails.md
- docs/models/operations/getlibraryrequest.md
- docs/models/operations/getlibrarydirectory.md
- docs/models/operations/filter.md
- docs/models/operations/getlibraryfilter.md
- docs/models/operations/sort.md
- docs/models/operations/field.md
- docs/models/operations/getlibrarytype.md
@@ -370,14 +388,6 @@ generatedFiles:
- docs/models/operations/loglineresponse.md
- docs/models/operations/logmultilineresponse.md
- docs/models/operations/enablepapertrailresponse.md
- docs/models/operations/getpinglobals.md
- docs/models/operations/getpinrequest.md
- docs/models/operations/location.md
- docs/models/operations/getpinresponsebody.md
- docs/models/operations/getpinresponse.md
- docs/models/operations/gettokenglobals.md
- docs/models/operations/gettokenrequest.md
- docs/models/operations/gettokenresponse.md
- docs/models/operations/queryparamtype.md
- docs/models/operations/smart.md
- docs/models/operations/createplaylistrequest.md
@@ -467,6 +477,15 @@ generatedFiles:
- docs/models/operations/skip.md
- docs/models/operations/applyupdatesrequest.md
- docs/models/operations/applyupdatesresponse.md
- docs/models/operations/filter.md
- docs/models/operations/libtype.md
- docs/models/operations/includecollections.md
- docs/models/operations/includeexternalmedia.md
- docs/models/operations/getwatchlistrequest.md
- docs/models/operations/image.md
- docs/models/operations/metadata.md
- docs/models/operations/getwatchlistresponsebody.md
- docs/models/operations/getwatchlistresponse.md
- docs/models/sdkerrors/errors.md
- docs/models/sdkerrors/getservercapabilitiesresponsebody.md
- docs/models/sdkerrors/getserverpreferenceserrors.md
@@ -507,6 +526,12 @@ generatedFiles:
- docs/models/sdkerrors/starttaskresponsebody.md
- docs/models/sdkerrors/stoptaskerrors.md
- docs/models/sdkerrors/stoptaskresponsebody.md
- docs/models/sdkerrors/gethomedataerrors.md
- docs/models/sdkerrors/gethomedataresponsebody.md
- docs/models/sdkerrors/getpinerrors.md
- docs/models/sdkerrors/getpinresponsebody.md
- docs/models/sdkerrors/gettokenerrors.md
- docs/models/sdkerrors/gettokenresponsebody.md
- docs/models/sdkerrors/getglobalhubserrors.md
- docs/models/sdkerrors/getglobalhubsresponsebody.md
- docs/models/sdkerrors/getlibraryhubserrors.md
@@ -545,10 +570,6 @@ generatedFiles:
- docs/models/sdkerrors/logmultilineresponsebody.md
- docs/models/sdkerrors/enablepapertrailerrors.md
- docs/models/sdkerrors/enablepapertrailresponsebody.md
- docs/models/sdkerrors/getpinerrors.md
- docs/models/sdkerrors/getpinresponsebody.md
- docs/models/sdkerrors/gettokenerrors.md
- docs/models/sdkerrors/gettokenresponsebody.md
- docs/models/sdkerrors/createplaylisterrors.md
- docs/models/sdkerrors/createplaylistresponsebody.md
- docs/models/sdkerrors/getplaylistserrors.md
@@ -587,6 +608,8 @@ generatedFiles:
- docs/models/sdkerrors/checkforupdatesresponsebody.md
- docs/models/sdkerrors/applyupdateserrors.md
- docs/models/sdkerrors/applyupdatesresponsebody.md
- docs/models/sdkerrors/getwatchlisterrors.md
- docs/models/sdkerrors/getwatchlistresponsebody.md
- docs/models/components/security.md
- docs/sdks/plexapi/README.md
- docs/sdks/server/README.md
@@ -594,17 +617,18 @@ generatedFiles:
- docs/sdks/video/README.md
- docs/sdks/activities/README.md
- docs/sdks/butler/README.md
- docs/models/operations/option.md
- docs/sdks/plex/README.md
- docs/sdks/hubs/README.md
- docs/sdks/search/README.md
- docs/sdks/library/README.md
- docs/sdks/log/README.md
- docs/models/operations/option.md
- docs/sdks/plex/README.md
- docs/sdks/playlists/README.md
- docs/sdks/authentication/README.md
- docs/sdks/statistics/README.md
- docs/sdks/sessions/README.md
- docs/sdks/updater/README.md
- docs/sdks/watchlist/README.md
- USAGE.md
- models/operations/options.go
- .gitattributes

View File

@@ -12,7 +12,7 @@ generation:
auth:
oAuth2ClientCredentialsEnabled: true
go:
version: 0.8.1
version: 0.9.0
additionalDependencies: {}
allowUnknownFieldsInWeakUnions: false
clientServerStatusCodesAsErrors: true

View File

@@ -1,9 +1,9 @@
speakeasyVersion: 1.299.6
speakeasyVersion: 1.308.1
sources:
my-source:
sourceNamespace: my-source
sourceRevisionDigest: sha256:f9b7f945b0be0fcc16cb4ed171d04b72c333eb162daea0db8a4e9c2d489db91c
sourceBlobDigest: sha256:c62fefed624e49b6dd213da5aa3f0b350a118b9de9228e75abd952a85093b9ad
sourceRevisionDigest: sha256:7c8d6aba90098356ba6c93b2ec679c4a6b7bf28eebdfbe12ab238a47b31eebd9
sourceBlobDigest: sha256:673b2e8e0f4802ebdce582bd11cf375fb435a50e5a67b08b56ede08efc49aefe
tags:
- latest
- main
@@ -11,8 +11,8 @@ targets:
plexgo:
source: my-source
sourceNamespace: my-source
sourceRevisionDigest: sha256:f9b7f945b0be0fcc16cb4ed171d04b72c333eb162daea0db8a4e9c2d489db91c
sourceBlobDigest: sha256:c62fefed624e49b6dd213da5aa3f0b350a118b9de9228e75abd952a85093b9ad
sourceRevisionDigest: sha256:7c8d6aba90098356ba6c93b2ec679c4a6b7bf28eebdfbe12ab238a47b31eebd9
sourceBlobDigest: sha256:673b2e8e0f4802ebdce582bd11cf375fb435a50e5a67b08b56ede08efc49aefe
outLocation: /github/workspace/repo
workflow:
workflowVersion: 1.0.0

View File

@@ -86,6 +86,12 @@ func main() {
* [StartTask](docs/sdks/butler/README.md#starttask) - Start a single Butler task
* [StopTask](docs/sdks/butler/README.md#stoptask) - Stop a single Butler task
### [Plex](docs/sdks/plex/README.md)
* [GetHomeData](docs/sdks/plex/README.md#gethomedata) - Get Plex Home Data
* [GetPin](docs/sdks/plex/README.md#getpin) - Get a Pin
* [GetToken](docs/sdks/plex/README.md#gettoken) - Get Access Token
### [Hubs](docs/sdks/hubs/README.md)
* [GetGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs
@@ -117,11 +123,6 @@ func main() {
* [LogMultiLine](docs/sdks/log/README.md#logmultiline) - Logging a multi-line message
* [EnablePaperTrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail
### [Plex](docs/sdks/plex/README.md)
* [GetPin](docs/sdks/plex/README.md#getpin) - Get a Pin
* [GetToken](docs/sdks/plex/README.md#gettoken) - Get Access Token
### [Playlists](docs/sdks/playlists/README.md)
* [CreatePlaylist](docs/sdks/playlists/README.md#createplaylist) - Create a Playlist
@@ -155,6 +156,10 @@ func main() {
* [GetUpdateStatus](docs/sdks/updater/README.md#getupdatestatus) - Querying status of updates
* [CheckForUpdates](docs/sdks/updater/README.md#checkforupdates) - Checking for updates
* [ApplyUpdates](docs/sdks/updater/README.md#applyupdates) - Apply Updates
### [Watchlist](docs/sdks/watchlist/README.md)
* [GetWatchlist](docs/sdks/watchlist/README.md#getwatchlist) - Get User Watchlist
<!-- End Available Resources and Operations [operations] -->
<!-- Start Error Handling [errors] -->
@@ -303,11 +308,13 @@ func main() {
s := plexgo.New(
plexgo.WithXPlexClientIdentifier("Postman"),
)
var xPlexProduct string = "Postman"
var strong *bool = plexgo.Bool(false)
var xPlexClientIdentifier *string = plexgo.String("Postman")
ctx := context.Background()
res, err := s.Plex.GetPin(ctx, strong, xPlexClientIdentifier, operations.WithServerURL("https://plex.tv/api/v2"))
res, err := s.Plex.GetPin(ctx, xPlexProduct, strong, xPlexClientIdentifier, operations.WithServerURL("https://plex.tv/api/v2"))
if err != nil {
log.Fatal(err)
}
@@ -449,11 +456,13 @@ func main() {
s := plexgo.New(
plexgo.WithXPlexClientIdentifier("Postman"),
)
var xPlexProduct string = "Postman"
var strong *bool = plexgo.Bool(false)
var xPlexClientIdentifier *string = plexgo.String("Postman")
ctx := context.Background()
res, err := s.Plex.GetPin(ctx, strong, xPlexClientIdentifier)
res, err := s.Plex.GetPin(ctx, xPlexProduct, strong, xPlexClientIdentifier)
if err != nil {
log.Fatal(err)
}

View File

@@ -543,3 +543,103 @@ Based on:
- [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 - .

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,12 @@
# Filter
Filter
## 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 |
## Values
| Name | Value |
| ----------------- | ----------------- |
| `FilterAll` | all |
| `FilterAvailable` | available |
| `FilterReleased` | released |

View 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 |

View 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 | |

View File

@@ -0,0 +1,12 @@
# GetLibraryFilter
## 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 |

View File

@@ -3,7 +3,7 @@
## Fields
| Field | Type | Required | Description | Example |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `SectionID` | *int64* | :heavy_check_mark: | the Id of the library to query | 1 |
| `Tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | |
| Field | Type | Required | Description |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `SectionID` | *any* | :heavy_check_mark: | the Id of the library to query |
| `Tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. |

View File

@@ -3,12 +3,12 @@
## 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.Filter](../../models/operations/filter.md) | :heavy_minus_sign: | N/A | |
| `Sort` | [][operations.Sort](../../models/operations/sort.md) | :heavy_minus_sign: | N/A | |
| `Field` | [][operations.Field](../../models/operations/field.md) | :heavy_minus_sign: | N/A | |
| 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.GetLibraryFilter](../../models/operations/getlibraryfilter.md) | :heavy_minus_sign: | N/A | |
| `Sort` | [][operations.Sort](../../models/operations/sort.md) | :heavy_minus_sign: | N/A | |
| `Field` | [][operations.Field](../../models/operations/field.md) | :heavy_minus_sign: | N/A | |

View File

@@ -7,3 +7,4 @@
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Strong` | **bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
| `XPlexClientIdentifier` | **string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |
| `XPlexProduct` | *string* | :heavy_check_mark: | Product name of the application shown in the list of devices<br/> | Postman |

View File

@@ -3,12 +3,12 @@
## Fields
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `Size` | **float64* | :heavy_minus_sign: | N/A | 50 |
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | |
| `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
| `MediaTagPrefix` | **string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ |
| `MediaTagVersion` | **float64* | :heavy_minus_sign: | N/A | 1680021154 |
| `MixedParents` | **bool* | :heavy_minus_sign: | N/A | |
| `Metadata` | [][operations.Metadata](../../models/operations/metadata.md) | :heavy_minus_sign: | N/A | |
| Field | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `Size` | **float64* | :heavy_minus_sign: | N/A | 50 |
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | |
| `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
| `MediaTagPrefix` | **string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ |
| `MediaTagVersion` | **float64* | :heavy_minus_sign: | N/A | 1680021154 |
| `MixedParents` | **bool* | :heavy_minus_sign: | N/A | |
| `Metadata` | [][operations.GetRecentlyAddedMetadata](../../models/operations/getrecentlyaddedmetadata.md) | :heavy_minus_sign: | N/A | |

View File

@@ -0,0 +1,39 @@
# GetRecentlyAddedMetadata
## Fields
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | |
| `LibrarySectionID` | **float64* | :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 |
| `RatingKey` | **float64* | :heavy_minus_sign: | N/A | 59398 |
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398 |
| `GUID` | **string* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 |
| `Studio` | **string* | :heavy_minus_sign: | N/A | Marvel Studios |
| `Type` | **string* | :heavy_minus_sign: | N/A | movie |
| `Title` | **string* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania |
| `ContentRating` | **string* | :heavy_minus_sign: | N/A | PG-13 |
| `Summary` | **string* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. |
| `Rating` | **float64* | :heavy_minus_sign: | N/A | 4.7 |
| `AudienceRating` | **float64* | :heavy_minus_sign: | N/A | 8.3 |
| `Year` | **float64* | :heavy_minus_sign: | N/A | 2023 |
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. |
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 |
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 |
| `Duration` | **float64* | :heavy_minus_sign: | N/A | 7474422 |
| `OriginallyAvailableAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC |
| `AddedAt` | **float64* | :heavy_minus_sign: | N/A | 1681803215 |
| `UpdatedAt` | **float64* | :heavy_minus_sign: | N/A | 1681888010 |
| `AudienceRatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright |
| `ChapterSource` | **string* | :heavy_minus_sign: | N/A | media |
| `PrimaryExtraKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59399 |
| `RatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten |
| `Media` | [][operations.Media](../../models/operations/media.md) | :heavy_minus_sign: | N/A | |
| `Genre` | [][operations.Genre](../../models/operations/genre.md) | :heavy_minus_sign: | N/A | |
| `Director` | [][operations.Director](../../models/operations/director.md) | :heavy_minus_sign: | N/A | |
| `Writer` | [][operations.Writer](../../models/operations/writer.md) | :heavy_minus_sign: | N/A | |
| `Country` | [][operations.Country](../../models/operations/country.md) | :heavy_minus_sign: | N/A | |
| `Role` | [][operations.Role](../../models/operations/role.md) | :heavy_minus_sign: | N/A | |

View File

@@ -0,0 +1,17 @@
# GetTokenLocation
## Fields
| Field | Type | Required | Description | Example |
| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- |
| `Code` | **string* | :heavy_minus_sign: | N/A | US |
| `EuropeanUnionMember` | **bool* | :heavy_minus_sign: | N/A | |
| `ContinentCode` | **string* | :heavy_minus_sign: | N/A | NA |
| `Country` | **string* | :heavy_minus_sign: | N/A | United States |
| `City` | **string* | :heavy_minus_sign: | N/A | Austin |
| `TimeZone` | **string* | :heavy_minus_sign: | N/A | America/Chicago |
| `PostalCode` | **string* | :heavy_minus_sign: | N/A | 78732 |
| `InPrivacyRestrictedCountry` | **bool* | :heavy_minus_sign: | N/A | |
| `Subdivisions` | **string* | :heavy_minus_sign: | N/A | Texas |
| `Coordinates` | **string* | :heavy_minus_sign: | N/A | 30.3768 -97.8935 |

View File

@@ -3,8 +3,9 @@
## 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 |
| 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.GetTokenResponseBody](../../models/operations/gettokenresponsebody.md) | :heavy_minus_sign: | Access Token |

View File

@@ -0,0 +1,21 @@
# GetTokenResponseBody
Access Token
## Fields
| Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ID` | **float64* | :heavy_minus_sign: | PinID for use with authentication | 1272322473 |
| `Code` | **string* | :heavy_minus_sign: | N/A | 3patfx1a78ukcbr7x0n9bl26t |
| `Product` | **string* | :heavy_minus_sign: | N/A | Plex Web |
| `Trusted` | **bool* | :heavy_minus_sign: | N/A | |
| `Qr` | **string* | :heavy_minus_sign: | a link to a QR code hosted on plex.tv <br/>The QR code redirects to the relevant `plex.tv/link` authentication page<br/>Which then prompts the user for the 4 Digit Link Pin<br/> | https://plex.tv/api/v2/pins/qr/3patfx1a78ukcbr7x0n9bl26t |
| `ClientIdentifier` | **string* | :heavy_minus_sign: | N/A | Postman |
| `Location` | [*operations.GetTokenLocation](../../models/operations/gettokenlocation.md) | :heavy_minus_sign: | N/A | |
| `ExpiresIn` | **float64* | :heavy_minus_sign: | N/A | 1800 |
| `CreatedAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | N/A | 2023-04-12 17:00:03 +0000 UTC |
| `ExpiresAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | N/A | 2023-04-12 17:30:03 +0000 UTC |
| `AuthToken` | **string* | :heavy_minus_sign: | N/A | |
| `NewRegistration` | **string* | :heavy_minus_sign: | N/A | |

View File

@@ -0,0 +1,16 @@
# GetWatchlistRequest
## Fields
| Field | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Filter` | [operations.Filter](../../models/operations/filter.md) | :heavy_check_mark: | Filter |
| `Sort` | **string* | :heavy_minus_sign: | In the format "field:dir". Available fields are "watchlistedAt" (Added At),<br/>"titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).<br/>"dir" can be "asc" or "desc"<br/> |
| `Libtype` | [*operations.Libtype](../../models/operations/libtype.md) | :heavy_minus_sign: | The type of library to filter. Can be "movie" or "show", or all if not present.<br/> |
| `Maxresults` | **int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.<br/>If the number of items exceeds the limit, the response will be paginated.<br/> |
| `IncludeCollections` | [*operations.IncludeCollections](../../models/operations/includecollections.md) | :heavy_minus_sign: | include collections in the results<br/> |
| `IncludeExternalMedia` | [*operations.IncludeExternalMedia](../../models/operations/includeexternalmedia.md) | :heavy_minus_sign: | include external media in the results<br/> |
| `XPlexToken` | *string* | :heavy_check_mark: | User Token |
| `XPlexContainerStart` | **int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.<br/>If the number of items exceeds the limit, the response will be paginated.<br/> |
| `XPlexContainerSize` | **int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.<br/>If the number of items exceeds the limit, the response will be paginated.<br/> |

View File

@@ -0,0 +1,11 @@
# GetWatchlistResponse
## 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.GetWatchlistResponseBody](../../models/operations/getwatchlistresponsebody.md) | :heavy_minus_sign: | Watchlist Data |

View File

@@ -0,0 +1,16 @@
# GetWatchlistResponseBody
Watchlist Data
## Fields
| Field | Type | Required | Description |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `LibrarySectionID` | **string* | :heavy_minus_sign: | N/A |
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A |
| `Offset` | **int* | :heavy_minus_sign: | N/A |
| `TotalSize` | **int* | :heavy_minus_sign: | N/A |
| `Identifier` | **string* | :heavy_minus_sign: | N/A |
| `Size` | **int* | :heavy_minus_sign: | N/A |
| `Metadata` | [][operations.Metadata](../../models/operations/metadata.md) | :heavy_minus_sign: | N/A |

View File

@@ -0,0 +1,10 @@
# Image
## Fields
| Field | Type | Required | Description |
| ------------------ | ------------------ | ------------------ | ------------------ |
| `Alt` | **string* | :heavy_minus_sign: | N/A |
| `Type` | **string* | :heavy_minus_sign: | N/A |
| `URL` | **string* | :heavy_minus_sign: | N/A |

View File

@@ -0,0 +1,12 @@
# IncludeCollections
include collections in the results
## Values
| Name | Value |
| ------------------------ | ------------------------ |
| `IncludeCollectionsOne` | 1 |
| `IncludeCollectionsZero` | 0 |

View File

@@ -0,0 +1,12 @@
# IncludeExternalMedia
include external media in the results
## Values
| Name | Value |
| -------------------------- | -------------------------- |
| `IncludeExternalMediaOne` | 1 |
| `IncludeExternalMediaZero` | 0 |

View File

@@ -0,0 +1,12 @@
# Libtype
The type of library to filter. Can be "movie" or "show", or all if not present.
## Values
| Name | Value |
| -------------- | -------------- |
| `LibtypeMovie` | movie |
| `LibtypeShow` | show |

View File

@@ -11,7 +11,7 @@
| `Country` | **string* | :heavy_minus_sign: | N/A | United States |
| `City` | **string* | :heavy_minus_sign: | N/A | Austin |
| `TimeZone` | **string* | :heavy_minus_sign: | N/A | America/Chicago |
| `PostalCode` | **float64* | :heavy_minus_sign: | N/A | 78732 |
| `PostalCode` | **string* | :heavy_minus_sign: | N/A | 78732 |
| `InPrivacyRestrictedCountry` | **bool* | :heavy_minus_sign: | N/A | |
| `Subdivisions` | **string* | :heavy_minus_sign: | N/A | Texas |
| `Coordinates` | **string* | :heavy_minus_sign: | N/A | 30.3768 -97.8935 |

View File

@@ -3,37 +3,40 @@
## Fields
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AllowSync` | **bool* | :heavy_minus_sign: | N/A | |
| `LibrarySectionID` | **float64* | :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 |
| `RatingKey` | **float64* | :heavy_minus_sign: | N/A | 59398 |
| `Key` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398 |
| `GUID` | **string* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 |
| `Studio` | **string* | :heavy_minus_sign: | N/A | Marvel Studios |
| `Type` | **string* | :heavy_minus_sign: | N/A | movie |
| `Title` | **string* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania |
| `ContentRating` | **string* | :heavy_minus_sign: | N/A | PG-13 |
| `Summary` | **string* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. |
| `Rating` | **float64* | :heavy_minus_sign: | N/A | 4.7 |
| `AudienceRating` | **float64* | :heavy_minus_sign: | N/A | 8.3 |
| `Year` | **float64* | :heavy_minus_sign: | N/A | 2023 |
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. |
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 |
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 |
| `Duration` | **float64* | :heavy_minus_sign: | N/A | 7474422 |
| `OriginallyAvailableAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC |
| `AddedAt` | **float64* | :heavy_minus_sign: | N/A | 1681803215 |
| `UpdatedAt` | **float64* | :heavy_minus_sign: | N/A | 1681888010 |
| `AudienceRatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright |
| `ChapterSource` | **string* | :heavy_minus_sign: | N/A | media |
| `PrimaryExtraKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/59399 |
| `RatingImage` | **string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten |
| `Media` | [][operations.Media](../../models/operations/media.md) | :heavy_minus_sign: | N/A | |
| `Genre` | [][operations.Genre](../../models/operations/genre.md) | :heavy_minus_sign: | N/A | |
| `Director` | [][operations.Director](../../models/operations/director.md) | :heavy_minus_sign: | N/A | |
| `Writer` | [][operations.Writer](../../models/operations/writer.md) | :heavy_minus_sign: | N/A | |
| `Country` | [][operations.Country](../../models/operations/country.md) | :heavy_minus_sign: | N/A | |
| `Role` | [][operations.Role](../../models/operations/role.md) | :heavy_minus_sign: | N/A | |
| Field | Type | Required | Description |
| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ |
| `Art` | **string* | :heavy_minus_sign: | N/A |
| `GUID` | **string* | :heavy_minus_sign: | N/A |
| `Key` | **string* | :heavy_minus_sign: | N/A |
| `RatingKey` | **string* | :heavy_minus_sign: | N/A |
| `Studio` | **string* | :heavy_minus_sign: | N/A |
| `Tagline` | **string* | :heavy_minus_sign: | N/A |
| `Type` | **string* | :heavy_minus_sign: | N/A |
| `Thumb` | **string* | :heavy_minus_sign: | N/A |
| `AddedAt` | **int* | :heavy_minus_sign: | N/A |
| `Duration` | **int* | :heavy_minus_sign: | N/A |
| `PublicPagesURL` | **string* | :heavy_minus_sign: | N/A |
| `Slug` | **string* | :heavy_minus_sign: | N/A |
| `UserState` | **bool* | :heavy_minus_sign: | N/A |
| `Title` | **string* | :heavy_minus_sign: | N/A |
| `ContentRating` | **string* | :heavy_minus_sign: | N/A |
| `OriginallyAvailableAt` | [*types.Date](../../types/date.md) | :heavy_minus_sign: | N/A |
| `Year` | **int* | :heavy_minus_sign: | N/A |
| `Image` | [][operations.Image](../../models/operations/image.md) | :heavy_minus_sign: | N/A |
| `Banner` | **string* | :heavy_minus_sign: | N/A |
| `Rating` | **float64* | :heavy_minus_sign: | N/A |
| `ExpiresAt` | **int* | :heavy_minus_sign: | N/A |
| `OriginalTitle` | **string* | :heavy_minus_sign: | N/A |
| `AudienceRating` | **float64* | :heavy_minus_sign: | N/A |
| `AudienceRatingImage` | **string* | :heavy_minus_sign: | N/A |
| `RatingImage` | **string* | :heavy_minus_sign: | N/A |
| `ImdbRatingCount` | **int* | :heavy_minus_sign: | N/A |
| `Subtype` | **string* | :heavy_minus_sign: | N/A |
| `Theme` | **string* | :heavy_minus_sign: | N/A |
| `LeafCount` | **int* | :heavy_minus_sign: | N/A |
| `ChildCount` | **int* | :heavy_minus_sign: | N/A |
| `IsContinuingSeries` | **bool* | :heavy_minus_sign: | N/A |
| `SkipChildren` | **bool* | :heavy_minus_sign: | N/A |
| `AvailabilityID` | **string* | :heavy_minus_sign: | N/A |
| `StreamingMediaID` | **string* | :heavy_minus_sign: | N/A |
| `PlayableKey` | **string* | :heavy_minus_sign: | N/A |

View File

@@ -0,0 +1,10 @@
# GetHomeDataErrors
## Fields
| Field | Type | Required | Description | Example |
| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
| `Code` | **float64* | :heavy_minus_sign: | N/A | 1001 |
| `Message` | **string* | :heavy_minus_sign: | N/A | User could not be authenticated |
| `Status` | **float64* | :heavy_minus_sign: | N/A | 401 |

View File

@@ -0,0 +1,11 @@
# GetHomeDataResponseBody
Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
## Fields
| Field | Type | Required | Description |
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `Errors` | [][sdkerrors.GetHomeDataErrors](../../models/sdkerrors/gethomedataerrors.md) | :heavy_minus_sign: | N/A |
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |

View File

@@ -0,0 +1,10 @@
# GetWatchlistErrors
## Fields
| Field | Type | Required | Description | Example |
| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
| `Code` | **float64* | :heavy_minus_sign: | N/A | 1001 |
| `Message` | **string* | :heavy_minus_sign: | N/A | User could not be authenticated |
| `Status` | **float64* | :heavy_minus_sign: | N/A | 401 |

View File

@@ -0,0 +1,11 @@
# GetWatchlistResponseBody
Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
## Fields
| Field | Type | Required | Description |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
| `Errors` | [][sdkerrors.GetWatchlistErrors](../../models/sdkerrors/getwatchlisterrors.md) | :heavy_minus_sign: | N/A |
| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |

View File

@@ -352,7 +352,7 @@ func main() {
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
plexgo.WithXPlexClientIdentifier("Postman"),
)
var sectionID int64 = 1
var sectionID any = "<value>"
var tag operations.Tag = operations.TagGenre
ctx := context.Background()
@@ -368,11 +368,11 @@ func main() {
### Parameters
| Parameter | Type | Required | Description | Example |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | |
| `sectionID` | *int64* | :heavy_check_mark: | the Id of the library to query | 1 |
| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | |
| Parameter | Type | Required | Description |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. |
| `sectionID` | *any* | :heavy_check_mark: | the Id of the library to query |
| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. |
### Response

View File

@@ -8,9 +8,57 @@ API Calls that perform operations directly against https://Plex.tv
### Available Operations
* [GetHomeData](#gethomedata) - Get Plex Home Data
* [GetPin](#getpin) - Get a Pin
* [GetToken](#gettoken) - Get Access Token
## GetHomeData
Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status.
### Example Usage
```go
package main
import(
"github.com/LukeHagar/plexgo"
"context"
"log"
)
func main() {
s := plexgo.New(
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
plexgo.WithXPlexClientIdentifier("Postman"),
)
ctx := context.Background()
res, err := s.Plex.GetHomeData(ctx)
if err != nil {
log.Fatal(err)
}
if res.Object != nil {
// handle response
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. |
### Response
**[*operations.GetHomeDataResponse](../../models/operations/gethomedataresponse.md), error**
| Error Object | Status Code | Content Type |
| --------------------------------- | --------------------------------- | --------------------------------- |
| sdkerrors.GetHomeDataResponseBody | 401 | application/json |
| sdkerrors.SDKError | 4xx-5xx | */* |
## GetPin
Retrieve a Pin from Plex.tv for authentication flows
@@ -30,11 +78,13 @@ func main() {
s := plexgo.New(
plexgo.WithXPlexClientIdentifier("Postman"),
)
var xPlexProduct string = "Postman"
var strong *bool = plexgo.Bool(false)
var xPlexClientIdentifier *string = plexgo.String("Postman")
ctx := context.Background()
res, err := s.Plex.GetPin(ctx, strong, xPlexClientIdentifier)
res, err := s.Plex.GetPin(ctx, xPlexProduct, strong, xPlexClientIdentifier)
if err != nil {
log.Fatal(err)
}
@@ -49,6 +99,7 @@ func main() {
| Parameter | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | |
| `xPlexProduct` | *string* | :heavy_check_mark: | Product name of the application shown in the list of devices<br/> | Postman |
| `strong` | **bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
| `xPlexClientIdentifier` | **string* | :heavy_minus_sign: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> | Postman |
| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | |
@@ -89,7 +140,7 @@ func main() {
if err != nil {
log.Fatal(err)
}
if res != nil {
if res.Object != nil {
// handle response
}
}

View File

@@ -0,0 +1,64 @@
# Watchlist
(*Watchlist*)
## Overview
API Calls that perform operations with Plex Media Server Watchlists
### Available Operations
* [GetWatchlist](#getwatchlist) - Get User Watchlist
## GetWatchlist
Get User Watchlist
### Example Usage
```go
package main
import(
"github.com/LukeHagar/plexgo"
"github.com/LukeHagar/plexgo/models/operations"
"context"
"log"
)
func main() {
s := plexgo.New(
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
plexgo.WithXPlexClientIdentifier("Postman"),
)
request := operations.GetWatchlistRequest{
Filter: operations.FilterReleased,
XPlexToken: "<value>",
}
ctx := context.Background()
res, err := s.Watchlist.GetWatchlist(ctx, request)
if err != nil {
log.Fatal(err)
}
if res.Object != nil {
// handle response
}
}
```
### Parameters
| Parameter | Type | Required | Description |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. |
| `request` | [operations.GetWatchlistRequest](../../models/operations/getwatchlistrequest.md) | :heavy_check_mark: | The request object to use for the request. |
| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. |
### Response
**[*operations.GetWatchlistResponse](../../models/operations/getwatchlistresponse.md), error**
| Error Object | Status Code | Content Type |
| ---------------------------------- | ---------------------------------- | ---------------------------------- |
| sdkerrors.GetWatchlistResponseBody | 401 | application/json |
| sdkerrors.SDKError | 4xx-5xx | */* |

View File

@@ -635,7 +635,7 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionID float64) (*operat
// - `resolution`: Items categorized by resolution.
// - `firstCharacter`: Items categorized by the first letter.
// - `folder`: Items categorized by folder.
func (s *Library) GetLibraryItems(ctx context.Context, sectionID int64, tag operations.Tag) (*operations.GetLibraryItemsResponse, error) {
func (s *Library) GetLibraryItems(ctx context.Context, sectionID any, tag operations.Tag) (*operations.GetLibraryItemsResponse, error) {
hookCtx := hooks.HookContext{
Context: ctx,
OperationID: "getLibraryItems",

View File

@@ -0,0 +1,98 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
package operations
import (
"net/http"
)
// GetHomeDataResponseBody - Home Data
type GetHomeDataResponseBody struct {
ID *float64 `json:"id,omitempty"`
Name *string `json:"name,omitempty"`
GuestUserID *float64 `json:"guestUserID,omitempty"`
GuestUserUUID *string `json:"guestUserUUID,omitempty"`
GuestEnabled *bool `json:"guestEnabled,omitempty"`
Subscription *bool `json:"subscription,omitempty"`
}
func (o *GetHomeDataResponseBody) GetID() *float64 {
if o == nil {
return nil
}
return o.ID
}
func (o *GetHomeDataResponseBody) GetName() *string {
if o == nil {
return nil
}
return o.Name
}
func (o *GetHomeDataResponseBody) GetGuestUserID() *float64 {
if o == nil {
return nil
}
return o.GuestUserID
}
func (o *GetHomeDataResponseBody) GetGuestUserUUID() *string {
if o == nil {
return nil
}
return o.GuestUserUUID
}
func (o *GetHomeDataResponseBody) GetGuestEnabled() *bool {
if o == nil {
return nil
}
return o.GuestEnabled
}
func (o *GetHomeDataResponseBody) GetSubscription() *bool {
if o == nil {
return nil
}
return o.Subscription
}
type GetHomeDataResponse struct {
// HTTP response content type for this operation
ContentType string
// HTTP response status code for this operation
StatusCode int
// Raw HTTP response; suitable for custom response parsing
RawResponse *http.Response
// Home Data
Object *GetHomeDataResponseBody
}
func (o *GetHomeDataResponse) GetContentType() string {
if o == nil {
return ""
}
return o.ContentType
}
func (o *GetHomeDataResponse) GetStatusCode() int {
if o == nil {
return 0
}
return o.StatusCode
}
func (o *GetHomeDataResponse) GetRawResponse() *http.Response {
if o == nil {
return nil
}
return o.RawResponse
}
func (o *GetHomeDataResponse) GetObject() *GetHomeDataResponseBody {
if o == nil {
return nil
}
return o.Object
}

View File

@@ -114,7 +114,7 @@ func (o *GetLibraryDirectory) GetSearch() *bool {
return o.Search
}
type Filter struct {
type GetLibraryFilter struct {
Filter *string `json:"filter,omitempty"`
FilterType *string `json:"filterType,omitempty"`
Key *string `json:"key,omitempty"`
@@ -122,35 +122,35 @@ type Filter struct {
Type *string `json:"type,omitempty"`
}
func (o *Filter) GetFilter() *string {
func (o *GetLibraryFilter) GetFilter() *string {
if o == nil {
return nil
}
return o.Filter
}
func (o *Filter) GetFilterType() *string {
func (o *GetLibraryFilter) GetFilterType() *string {
if o == nil {
return nil
}
return o.FilterType
}
func (o *Filter) GetKey() *string {
func (o *GetLibraryFilter) GetKey() *string {
if o == nil {
return nil
}
return o.Key
}
func (o *Filter) GetTitle() *string {
func (o *GetLibraryFilter) GetTitle() *string {
if o == nil {
return nil
}
return o.Title
}
func (o *Filter) GetType() *string {
func (o *GetLibraryFilter) GetType() *string {
if o == nil {
return nil
}
@@ -244,13 +244,13 @@ func (o *Field) GetSubType() *string {
}
type GetLibraryType struct {
Key *string `json:"key,omitempty"`
Type *string `json:"type,omitempty"`
Title *string `json:"title,omitempty"`
Active *bool `json:"active,omitempty"`
Filter []Filter `json:"Filter,omitempty"`
Sort []Sort `json:"Sort,omitempty"`
Field []Field `json:"Field,omitempty"`
Key *string `json:"key,omitempty"`
Type *string `json:"type,omitempty"`
Title *string `json:"title,omitempty"`
Active *bool `json:"active,omitempty"`
Filter []GetLibraryFilter `json:"Filter,omitempty"`
Sort []Sort `json:"Sort,omitempty"`
Field []Field `json:"Field,omitempty"`
}
func (o *GetLibraryType) GetKey() *string {
@@ -281,7 +281,7 @@ func (o *GetLibraryType) GetActive() *bool {
return o.Active
}
func (o *GetLibraryType) GetFilter() []Filter {
func (o *GetLibraryType) GetFilter() []GetLibraryFilter {
if o == nil {
return nil
}

View File

@@ -90,14 +90,14 @@ func (e *Tag) UnmarshalJSON(data []byte) error {
type GetLibraryItemsRequest struct {
// the Id of the library to query
SectionID int64 `pathParam:"style=simple,explode=false,name=sectionId"`
SectionID any `pathParam:"style=simple,explode=false,name=sectionId"`
// A key representing a specific tag within the section.
Tag Tag `pathParam:"style=simple,explode=false,name=tag"`
}
func (o *GetLibraryItemsRequest) GetSectionID() int64 {
func (o *GetLibraryItemsRequest) GetSectionID() any {
if o == nil {
return 0
return nil
}
return o.SectionID
}

View File

@@ -38,6 +38,9 @@ type GetPinRequest struct {
// (UUID, serial number, or other number unique per device)
//
XPlexClientIdentifier *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
// Product name of the application shown in the list of devices
//
XPlexProduct string `header:"style=simple,explode=false,name=X-Plex-Product"`
}
func (g GetPinRequest) MarshalJSON() ([]byte, error) {
@@ -65,17 +68,24 @@ func (o *GetPinRequest) GetXPlexClientIdentifier() *string {
return o.XPlexClientIdentifier
}
func (o *GetPinRequest) GetXPlexProduct() string {
if o == nil {
return ""
}
return o.XPlexProduct
}
type Location struct {
Code *string `json:"code,omitempty"`
EuropeanUnionMember *bool `json:"european_union_member,omitempty"`
ContinentCode *string `json:"continent_code,omitempty"`
Country *string `json:"country,omitempty"`
City *string `json:"city,omitempty"`
TimeZone *string `json:"time_zone,omitempty"`
PostalCode *float64 `json:"postal_code,omitempty"`
InPrivacyRestrictedCountry *bool `json:"in_privacy_restricted_country,omitempty"`
Subdivisions *string `json:"subdivisions,omitempty"`
Coordinates *string `json:"coordinates,omitempty"`
Code *string `json:"code,omitempty"`
EuropeanUnionMember *bool `json:"european_union_member,omitempty"`
ContinentCode *string `json:"continent_code,omitempty"`
Country *string `json:"country,omitempty"`
City *string `json:"city,omitempty"`
TimeZone *string `json:"time_zone,omitempty"`
PostalCode *string `json:"postal_code,omitempty"`
InPrivacyRestrictedCountry *bool `json:"in_privacy_restricted_country,omitempty"`
Subdivisions *string `json:"subdivisions,omitempty"`
Coordinates *string `json:"coordinates,omitempty"`
}
func (o *Location) GetCode() *string {
@@ -120,7 +130,7 @@ func (o *Location) GetTimeZone() *string {
return o.TimeZone
}
func (o *Location) GetPostalCode() *float64 {
func (o *Location) GetPostalCode() *string {
if o == nil {
return nil
}

View File

@@ -277,7 +277,7 @@ func (o *Role) GetTag() *string {
return o.Tag
}
type Metadata struct {
type GetRecentlyAddedMetadata struct {
AllowSync *bool `json:"allowSync,omitempty"`
LibrarySectionID *float64 `json:"librarySectionID,omitempty"`
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
@@ -312,235 +312,235 @@ type Metadata struct {
Role []Role `json:"Role,omitempty"`
}
func (m Metadata) MarshalJSON() ([]byte, error) {
return utils.MarshalJSON(m, "", false)
func (g GetRecentlyAddedMetadata) MarshalJSON() ([]byte, error) {
return utils.MarshalJSON(g, "", false)
}
func (m *Metadata) UnmarshalJSON(data []byte) error {
if err := utils.UnmarshalJSON(data, &m, "", false, false); err != nil {
func (g *GetRecentlyAddedMetadata) UnmarshalJSON(data []byte) error {
if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil {
return err
}
return nil
}
func (o *Metadata) GetAllowSync() *bool {
func (o *GetRecentlyAddedMetadata) GetAllowSync() *bool {
if o == nil {
return nil
}
return o.AllowSync
}
func (o *Metadata) GetLibrarySectionID() *float64 {
func (o *GetRecentlyAddedMetadata) GetLibrarySectionID() *float64 {
if o == nil {
return nil
}
return o.LibrarySectionID
}
func (o *Metadata) GetLibrarySectionTitle() *string {
func (o *GetRecentlyAddedMetadata) GetLibrarySectionTitle() *string {
if o == nil {
return nil
}
return o.LibrarySectionTitle
}
func (o *Metadata) GetLibrarySectionUUID() *string {
func (o *GetRecentlyAddedMetadata) GetLibrarySectionUUID() *string {
if o == nil {
return nil
}
return o.LibrarySectionUUID
}
func (o *Metadata) GetRatingKey() *float64 {
func (o *GetRecentlyAddedMetadata) GetRatingKey() *float64 {
if o == nil {
return nil
}
return o.RatingKey
}
func (o *Metadata) GetKey() *string {
func (o *GetRecentlyAddedMetadata) GetKey() *string {
if o == nil {
return nil
}
return o.Key
}
func (o *Metadata) GetGUID() *string {
func (o *GetRecentlyAddedMetadata) GetGUID() *string {
if o == nil {
return nil
}
return o.GUID
}
func (o *Metadata) GetStudio() *string {
func (o *GetRecentlyAddedMetadata) GetStudio() *string {
if o == nil {
return nil
}
return o.Studio
}
func (o *Metadata) GetType() *string {
func (o *GetRecentlyAddedMetadata) GetType() *string {
if o == nil {
return nil
}
return o.Type
}
func (o *Metadata) GetTitle() *string {
func (o *GetRecentlyAddedMetadata) GetTitle() *string {
if o == nil {
return nil
}
return o.Title
}
func (o *Metadata) GetContentRating() *string {
func (o *GetRecentlyAddedMetadata) GetContentRating() *string {
if o == nil {
return nil
}
return o.ContentRating
}
func (o *Metadata) GetSummary() *string {
func (o *GetRecentlyAddedMetadata) GetSummary() *string {
if o == nil {
return nil
}
return o.Summary
}
func (o *Metadata) GetRating() *float64 {
func (o *GetRecentlyAddedMetadata) GetRating() *float64 {
if o == nil {
return nil
}
return o.Rating
}
func (o *Metadata) GetAudienceRating() *float64 {
func (o *GetRecentlyAddedMetadata) GetAudienceRating() *float64 {
if o == nil {
return nil
}
return o.AudienceRating
}
func (o *Metadata) GetYear() *float64 {
func (o *GetRecentlyAddedMetadata) GetYear() *float64 {
if o == nil {
return nil
}
return o.Year
}
func (o *Metadata) GetTagline() *string {
func (o *GetRecentlyAddedMetadata) GetTagline() *string {
if o == nil {
return nil
}
return o.Tagline
}
func (o *Metadata) GetThumb() *string {
func (o *GetRecentlyAddedMetadata) GetThumb() *string {
if o == nil {
return nil
}
return o.Thumb
}
func (o *Metadata) GetArt() *string {
func (o *GetRecentlyAddedMetadata) GetArt() *string {
if o == nil {
return nil
}
return o.Art
}
func (o *Metadata) GetDuration() *float64 {
func (o *GetRecentlyAddedMetadata) GetDuration() *float64 {
if o == nil {
return nil
}
return o.Duration
}
func (o *Metadata) GetOriginallyAvailableAt() *time.Time {
func (o *GetRecentlyAddedMetadata) GetOriginallyAvailableAt() *time.Time {
if o == nil {
return nil
}
return o.OriginallyAvailableAt
}
func (o *Metadata) GetAddedAt() *float64 {
func (o *GetRecentlyAddedMetadata) GetAddedAt() *float64 {
if o == nil {
return nil
}
return o.AddedAt
}
func (o *Metadata) GetUpdatedAt() *float64 {
func (o *GetRecentlyAddedMetadata) GetUpdatedAt() *float64 {
if o == nil {
return nil
}
return o.UpdatedAt
}
func (o *Metadata) GetAudienceRatingImage() *string {
func (o *GetRecentlyAddedMetadata) GetAudienceRatingImage() *string {
if o == nil {
return nil
}
return o.AudienceRatingImage
}
func (o *Metadata) GetChapterSource() *string {
func (o *GetRecentlyAddedMetadata) GetChapterSource() *string {
if o == nil {
return nil
}
return o.ChapterSource
}
func (o *Metadata) GetPrimaryExtraKey() *string {
func (o *GetRecentlyAddedMetadata) GetPrimaryExtraKey() *string {
if o == nil {
return nil
}
return o.PrimaryExtraKey
}
func (o *Metadata) GetRatingImage() *string {
func (o *GetRecentlyAddedMetadata) GetRatingImage() *string {
if o == nil {
return nil
}
return o.RatingImage
}
func (o *Metadata) GetMedia() []Media {
func (o *GetRecentlyAddedMetadata) GetMedia() []Media {
if o == nil {
return nil
}
return o.Media
}
func (o *Metadata) GetGenre() []Genre {
func (o *GetRecentlyAddedMetadata) GetGenre() []Genre {
if o == nil {
return nil
}
return o.Genre
}
func (o *Metadata) GetDirector() []Director {
func (o *GetRecentlyAddedMetadata) GetDirector() []Director {
if o == nil {
return nil
}
return o.Director
}
func (o *Metadata) GetWriter() []Writer {
func (o *GetRecentlyAddedMetadata) GetWriter() []Writer {
if o == nil {
return nil
}
return o.Writer
}
func (o *Metadata) GetCountry() []Country {
func (o *GetRecentlyAddedMetadata) GetCountry() []Country {
if o == nil {
return nil
}
return o.Country
}
func (o *Metadata) GetRole() []Role {
func (o *GetRecentlyAddedMetadata) GetRole() []Role {
if o == nil {
return nil
}
@@ -548,13 +548,13 @@ func (o *Metadata) GetRole() []Role {
}
type GetRecentlyAddedMediaContainer struct {
Size *float64 `json:"size,omitempty"`
AllowSync *bool `json:"allowSync,omitempty"`
Identifier *string `json:"identifier,omitempty"`
MediaTagPrefix *string `json:"mediaTagPrefix,omitempty"`
MediaTagVersion *float64 `json:"mediaTagVersion,omitempty"`
MixedParents *bool `json:"mixedParents,omitempty"`
Metadata []Metadata `json:"Metadata,omitempty"`
Size *float64 `json:"size,omitempty"`
AllowSync *bool `json:"allowSync,omitempty"`
Identifier *string `json:"identifier,omitempty"`
MediaTagPrefix *string `json:"mediaTagPrefix,omitempty"`
MediaTagVersion *float64 `json:"mediaTagVersion,omitempty"`
MixedParents *bool `json:"mixedParents,omitempty"`
Metadata []GetRecentlyAddedMetadata `json:"Metadata,omitempty"`
}
func (o *GetRecentlyAddedMediaContainer) GetSize() *float64 {
@@ -599,7 +599,7 @@ func (o *GetRecentlyAddedMediaContainer) GetMixedParents() *bool {
return o.MixedParents
}
func (o *GetRecentlyAddedMediaContainer) GetMetadata() []Metadata {
func (o *GetRecentlyAddedMediaContainer) GetMetadata() []GetRecentlyAddedMetadata {
if o == nil {
return nil
}

View File

@@ -3,7 +3,9 @@
package operations
import (
"github.com/LukeHagar/plexgo/internal/utils"
"net/http"
"time"
)
var GetTokenServerList = []string{
@@ -49,6 +51,205 @@ func (o *GetTokenRequest) GetXPlexClientIdentifier() *string {
return o.XPlexClientIdentifier
}
type GetTokenLocation struct {
Code *string `json:"code,omitempty"`
EuropeanUnionMember *bool `json:"european_union_member,omitempty"`
ContinentCode *string `json:"continent_code,omitempty"`
Country *string `json:"country,omitempty"`
City *string `json:"city,omitempty"`
TimeZone *string `json:"time_zone,omitempty"`
PostalCode *string `json:"postal_code,omitempty"`
InPrivacyRestrictedCountry *bool `json:"in_privacy_restricted_country,omitempty"`
Subdivisions *string `json:"subdivisions,omitempty"`
Coordinates *string `json:"coordinates,omitempty"`
}
func (o *GetTokenLocation) GetCode() *string {
if o == nil {
return nil
}
return o.Code
}
func (o *GetTokenLocation) GetEuropeanUnionMember() *bool {
if o == nil {
return nil
}
return o.EuropeanUnionMember
}
func (o *GetTokenLocation) GetContinentCode() *string {
if o == nil {
return nil
}
return o.ContinentCode
}
func (o *GetTokenLocation) GetCountry() *string {
if o == nil {
return nil
}
return o.Country
}
func (o *GetTokenLocation) GetCity() *string {
if o == nil {
return nil
}
return o.City
}
func (o *GetTokenLocation) GetTimeZone() *string {
if o == nil {
return nil
}
return o.TimeZone
}
func (o *GetTokenLocation) GetPostalCode() *string {
if o == nil {
return nil
}
return o.PostalCode
}
func (o *GetTokenLocation) GetInPrivacyRestrictedCountry() *bool {
if o == nil {
return nil
}
return o.InPrivacyRestrictedCountry
}
func (o *GetTokenLocation) GetSubdivisions() *string {
if o == nil {
return nil
}
return o.Subdivisions
}
func (o *GetTokenLocation) GetCoordinates() *string {
if o == nil {
return nil
}
return o.Coordinates
}
// GetTokenResponseBody - Access Token
type GetTokenResponseBody struct {
// PinID for use with authentication
ID *float64 `json:"id,omitempty"`
Code *string `json:"code,omitempty"`
Product *string `json:"product,omitempty"`
Trusted *bool `json:"trusted,omitempty"`
// a link to a QR code hosted on plex.tv
// The QR code redirects to the relevant `plex.tv/link` authentication page
// Which then prompts the user for the 4 Digit Link Pin
//
Qr *string `json:"qr,omitempty"`
ClientIdentifier *string `json:"clientIdentifier,omitempty"`
Location *GetTokenLocation `json:"location,omitempty"`
ExpiresIn *float64 `json:"expiresIn,omitempty"`
CreatedAt *time.Time `json:"createdAt,omitempty"`
ExpiresAt *time.Time `json:"expiresAt,omitempty"`
AuthToken *string `json:"authToken,omitempty"`
NewRegistration *string `json:"newRegistration,omitempty"`
}
func (g GetTokenResponseBody) MarshalJSON() ([]byte, error) {
return utils.MarshalJSON(g, "", false)
}
func (g *GetTokenResponseBody) UnmarshalJSON(data []byte) error {
if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil {
return err
}
return nil
}
func (o *GetTokenResponseBody) GetID() *float64 {
if o == nil {
return nil
}
return o.ID
}
func (o *GetTokenResponseBody) GetCode() *string {
if o == nil {
return nil
}
return o.Code
}
func (o *GetTokenResponseBody) GetProduct() *string {
if o == nil {
return nil
}
return o.Product
}
func (o *GetTokenResponseBody) GetTrusted() *bool {
if o == nil {
return nil
}
return o.Trusted
}
func (o *GetTokenResponseBody) GetQr() *string {
if o == nil {
return nil
}
return o.Qr
}
func (o *GetTokenResponseBody) GetClientIdentifier() *string {
if o == nil {
return nil
}
return o.ClientIdentifier
}
func (o *GetTokenResponseBody) GetLocation() *GetTokenLocation {
if o == nil {
return nil
}
return o.Location
}
func (o *GetTokenResponseBody) GetExpiresIn() *float64 {
if o == nil {
return nil
}
return o.ExpiresIn
}
func (o *GetTokenResponseBody) GetCreatedAt() *time.Time {
if o == nil {
return nil
}
return o.CreatedAt
}
func (o *GetTokenResponseBody) GetExpiresAt() *time.Time {
if o == nil {
return nil
}
return o.ExpiresAt
}
func (o *GetTokenResponseBody) GetAuthToken() *string {
if o == nil {
return nil
}
return o.AuthToken
}
func (o *GetTokenResponseBody) GetNewRegistration() *string {
if o == nil {
return nil
}
return o.NewRegistration
}
type GetTokenResponse struct {
// HTTP response content type for this operation
ContentType string
@@ -56,6 +257,8 @@ type GetTokenResponse struct {
StatusCode int
// Raw HTTP response; suitable for custom response parsing
RawResponse *http.Response
// Access Token
Object *GetTokenResponseBody
}
func (o *GetTokenResponse) GetContentType() string {
@@ -78,3 +281,10 @@ func (o *GetTokenResponse) GetRawResponse() *http.Response {
}
return o.RawResponse
}
func (o *GetTokenResponse) GetObject() *GetTokenResponseBody {
if o == nil {
return nil
}
return o.Object
}

View File

@@ -0,0 +1,642 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
package operations
import (
"encoding/json"
"fmt"
"github.com/LukeHagar/plexgo/internal/utils"
"github.com/LukeHagar/plexgo/types"
"net/http"
)
var GetWatchlistServerList = []string{
"https://metadata.provider.plex.tv",
}
// Filter
type Filter string
const (
FilterAll Filter = "all"
FilterAvailable Filter = "available"
FilterReleased Filter = "released"
)
func (e Filter) ToPointer() *Filter {
return &e
}
func (e *Filter) UnmarshalJSON(data []byte) error {
var v string
if err := json.Unmarshal(data, &v); err != nil {
return err
}
switch v {
case "all":
fallthrough
case "available":
fallthrough
case "released":
*e = Filter(v)
return nil
default:
return fmt.Errorf("invalid value for Filter: %v", v)
}
}
// Libtype - The type of library to filter. Can be "movie" or "show", or all if not present.
type Libtype string
const (
LibtypeMovie Libtype = "movie"
LibtypeShow Libtype = "show"
)
func (e Libtype) ToPointer() *Libtype {
return &e
}
func (e *Libtype) UnmarshalJSON(data []byte) error {
var v string
if err := json.Unmarshal(data, &v); err != nil {
return err
}
switch v {
case "movie":
fallthrough
case "show":
*e = Libtype(v)
return nil
default:
return fmt.Errorf("invalid value for Libtype: %v", v)
}
}
// IncludeCollections - include collections in the results
type IncludeCollections int64
const (
IncludeCollectionsOne IncludeCollections = 1
IncludeCollectionsZero IncludeCollections = 0
)
func (e IncludeCollections) ToPointer() *IncludeCollections {
return &e
}
func (e *IncludeCollections) UnmarshalJSON(data []byte) error {
var v int64
if err := json.Unmarshal(data, &v); err != nil {
return err
}
switch v {
case 1:
fallthrough
case 0:
*e = IncludeCollections(v)
return nil
default:
return fmt.Errorf("invalid value for IncludeCollections: %v", v)
}
}
// IncludeExternalMedia - include external media in the results
type IncludeExternalMedia int64
const (
IncludeExternalMediaOne IncludeExternalMedia = 1
IncludeExternalMediaZero IncludeExternalMedia = 0
)
func (e IncludeExternalMedia) ToPointer() *IncludeExternalMedia {
return &e
}
func (e *IncludeExternalMedia) UnmarshalJSON(data []byte) error {
var v int64
if err := json.Unmarshal(data, &v); err != nil {
return err
}
switch v {
case 1:
fallthrough
case 0:
*e = IncludeExternalMedia(v)
return nil
default:
return fmt.Errorf("invalid value for IncludeExternalMedia: %v", v)
}
}
type GetWatchlistRequest struct {
// Filter
Filter Filter `pathParam:"style=simple,explode=false,name=filter"`
// In the format "field:dir". Available fields are "watchlistedAt" (Added At),
// "titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).
// "dir" can be "asc" or "desc"
//
Sort *string `queryParam:"style=form,explode=true,name=sort"`
// The type of library to filter. Can be "movie" or "show", or all if not present.
//
Libtype *Libtype `queryParam:"style=form,explode=true,name=libtype"`
// The number of items to return. If not specified, all items will be returned.
// If the number of items exceeds the limit, the response will be paginated.
//
Maxresults *int `queryParam:"style=form,explode=true,name=maxresults"`
// include collections in the results
//
IncludeCollections *IncludeCollections `queryParam:"style=form,explode=true,name=includeCollections"`
// include external media in the results
//
IncludeExternalMedia *IncludeExternalMedia `queryParam:"style=form,explode=true,name=includeExternalMedia"`
// User Token
XPlexToken string `queryParam:"style=form,explode=true,name=X-Plex-Token"`
// The index of the first item to return. If not specified, the first item will be returned.
// If the number of items exceeds the limit, the response will be paginated.
//
XPlexContainerStart *int `queryParam:"style=form,explode=true,name=X-Plex-Container-Start"`
// The number of items to return. If not specified, all items will be returned.
// If the number of items exceeds the limit, the response will be paginated.
//
XPlexContainerSize *int `queryParam:"style=form,explode=true,name=X-Plex-Container-Size"`
}
func (o *GetWatchlistRequest) GetFilter() Filter {
if o == nil {
return Filter("")
}
return o.Filter
}
func (o *GetWatchlistRequest) GetSort() *string {
if o == nil {
return nil
}
return o.Sort
}
func (o *GetWatchlistRequest) GetLibtype() *Libtype {
if o == nil {
return nil
}
return o.Libtype
}
func (o *GetWatchlistRequest) GetMaxresults() *int {
if o == nil {
return nil
}
return o.Maxresults
}
func (o *GetWatchlistRequest) GetIncludeCollections() *IncludeCollections {
if o == nil {
return nil
}
return o.IncludeCollections
}
func (o *GetWatchlistRequest) GetIncludeExternalMedia() *IncludeExternalMedia {
if o == nil {
return nil
}
return o.IncludeExternalMedia
}
func (o *GetWatchlistRequest) GetXPlexToken() string {
if o == nil {
return ""
}
return o.XPlexToken
}
func (o *GetWatchlistRequest) GetXPlexContainerStart() *int {
if o == nil {
return nil
}
return o.XPlexContainerStart
}
func (o *GetWatchlistRequest) GetXPlexContainerSize() *int {
if o == nil {
return nil
}
return o.XPlexContainerSize
}
type Image struct {
Alt *string `json:"alt,omitempty"`
Type *string `json:"type,omitempty"`
URL *string `json:"url,omitempty"`
}
func (o *Image) GetAlt() *string {
if o == nil {
return nil
}
return o.Alt
}
func (o *Image) GetType() *string {
if o == nil {
return nil
}
return o.Type
}
func (o *Image) GetURL() *string {
if o == nil {
return nil
}
return o.URL
}
type Metadata struct {
Art *string `json:"art,omitempty"`
GUID *string `json:"guid,omitempty"`
Key *string `json:"key,omitempty"`
RatingKey *string `json:"ratingKey,omitempty"`
Studio *string `json:"studio,omitempty"`
Tagline *string `json:"tagline,omitempty"`
Type *string `json:"type,omitempty"`
Thumb *string `json:"thumb,omitempty"`
AddedAt *int `json:"addedAt,omitempty"`
Duration *int `json:"duration,omitempty"`
PublicPagesURL *string `json:"publicPagesURL,omitempty"`
Slug *string `json:"slug,omitempty"`
UserState *bool `json:"userState,omitempty"`
Title *string `json:"title,omitempty"`
ContentRating *string `json:"contentRating,omitempty"`
OriginallyAvailableAt *types.Date `json:"originallyAvailableAt,omitempty"`
Year *int `json:"year,omitempty"`
Image []Image `json:"Image,omitempty"`
Banner *string `json:"banner,omitempty"`
Rating *float64 `json:"rating,omitempty"`
ExpiresAt *int `json:"expiresAt,omitempty"`
OriginalTitle *string `json:"originalTitle,omitempty"`
AudienceRating *float64 `json:"audienceRating,omitempty"`
AudienceRatingImage *string `json:"audienceRatingImage,omitempty"`
RatingImage *string `json:"ratingImage,omitempty"`
ImdbRatingCount *int `json:"imdbRatingCount,omitempty"`
Subtype *string `json:"subtype,omitempty"`
Theme *string `json:"theme,omitempty"`
LeafCount *int `json:"leafCount,omitempty"`
ChildCount *int `json:"childCount,omitempty"`
IsContinuingSeries *bool `json:"isContinuingSeries,omitempty"`
SkipChildren *bool `json:"skipChildren,omitempty"`
AvailabilityID *string `json:"availabilityId,omitempty"`
StreamingMediaID *string `json:"streamingMediaId,omitempty"`
PlayableKey *string `json:"playableKey,omitempty"`
}
func (m Metadata) MarshalJSON() ([]byte, error) {
return utils.MarshalJSON(m, "", false)
}
func (m *Metadata) UnmarshalJSON(data []byte) error {
if err := utils.UnmarshalJSON(data, &m, "", false, false); err != nil {
return err
}
return nil
}
func (o *Metadata) GetArt() *string {
if o == nil {
return nil
}
return o.Art
}
func (o *Metadata) GetGUID() *string {
if o == nil {
return nil
}
return o.GUID
}
func (o *Metadata) GetKey() *string {
if o == nil {
return nil
}
return o.Key
}
func (o *Metadata) GetRatingKey() *string {
if o == nil {
return nil
}
return o.RatingKey
}
func (o *Metadata) GetStudio() *string {
if o == nil {
return nil
}
return o.Studio
}
func (o *Metadata) GetTagline() *string {
if o == nil {
return nil
}
return o.Tagline
}
func (o *Metadata) GetType() *string {
if o == nil {
return nil
}
return o.Type
}
func (o *Metadata) GetThumb() *string {
if o == nil {
return nil
}
return o.Thumb
}
func (o *Metadata) GetAddedAt() *int {
if o == nil {
return nil
}
return o.AddedAt
}
func (o *Metadata) GetDuration() *int {
if o == nil {
return nil
}
return o.Duration
}
func (o *Metadata) GetPublicPagesURL() *string {
if o == nil {
return nil
}
return o.PublicPagesURL
}
func (o *Metadata) GetSlug() *string {
if o == nil {
return nil
}
return o.Slug
}
func (o *Metadata) GetUserState() *bool {
if o == nil {
return nil
}
return o.UserState
}
func (o *Metadata) GetTitle() *string {
if o == nil {
return nil
}
return o.Title
}
func (o *Metadata) GetContentRating() *string {
if o == nil {
return nil
}
return o.ContentRating
}
func (o *Metadata) GetOriginallyAvailableAt() *types.Date {
if o == nil {
return nil
}
return o.OriginallyAvailableAt
}
func (o *Metadata) GetYear() *int {
if o == nil {
return nil
}
return o.Year
}
func (o *Metadata) GetImage() []Image {
if o == nil {
return nil
}
return o.Image
}
func (o *Metadata) GetBanner() *string {
if o == nil {
return nil
}
return o.Banner
}
func (o *Metadata) GetRating() *float64 {
if o == nil {
return nil
}
return o.Rating
}
func (o *Metadata) GetExpiresAt() *int {
if o == nil {
return nil
}
return o.ExpiresAt
}
func (o *Metadata) GetOriginalTitle() *string {
if o == nil {
return nil
}
return o.OriginalTitle
}
func (o *Metadata) GetAudienceRating() *float64 {
if o == nil {
return nil
}
return o.AudienceRating
}
func (o *Metadata) GetAudienceRatingImage() *string {
if o == nil {
return nil
}
return o.AudienceRatingImage
}
func (o *Metadata) GetRatingImage() *string {
if o == nil {
return nil
}
return o.RatingImage
}
func (o *Metadata) GetImdbRatingCount() *int {
if o == nil {
return nil
}
return o.ImdbRatingCount
}
func (o *Metadata) GetSubtype() *string {
if o == nil {
return nil
}
return o.Subtype
}
func (o *Metadata) GetTheme() *string {
if o == nil {
return nil
}
return o.Theme
}
func (o *Metadata) GetLeafCount() *int {
if o == nil {
return nil
}
return o.LeafCount
}
func (o *Metadata) GetChildCount() *int {
if o == nil {
return nil
}
return o.ChildCount
}
func (o *Metadata) GetIsContinuingSeries() *bool {
if o == nil {
return nil
}
return o.IsContinuingSeries
}
func (o *Metadata) GetSkipChildren() *bool {
if o == nil {
return nil
}
return o.SkipChildren
}
func (o *Metadata) GetAvailabilityID() *string {
if o == nil {
return nil
}
return o.AvailabilityID
}
func (o *Metadata) GetStreamingMediaID() *string {
if o == nil {
return nil
}
return o.StreamingMediaID
}
func (o *Metadata) GetPlayableKey() *string {
if o == nil {
return nil
}
return o.PlayableKey
}
// GetWatchlistResponseBody - Watchlist Data
type GetWatchlistResponseBody struct {
LibrarySectionID *string `json:"librarySectionID,omitempty"`
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
Offset *int `json:"offset,omitempty"`
TotalSize *int `json:"totalSize,omitempty"`
Identifier *string `json:"identifier,omitempty"`
Size *int `json:"size,omitempty"`
Metadata []Metadata `json:"Metadata,omitempty"`
}
func (o *GetWatchlistResponseBody) GetLibrarySectionID() *string {
if o == nil {
return nil
}
return o.LibrarySectionID
}
func (o *GetWatchlistResponseBody) GetLibrarySectionTitle() *string {
if o == nil {
return nil
}
return o.LibrarySectionTitle
}
func (o *GetWatchlistResponseBody) GetOffset() *int {
if o == nil {
return nil
}
return o.Offset
}
func (o *GetWatchlistResponseBody) GetTotalSize() *int {
if o == nil {
return nil
}
return o.TotalSize
}
func (o *GetWatchlistResponseBody) GetIdentifier() *string {
if o == nil {
return nil
}
return o.Identifier
}
func (o *GetWatchlistResponseBody) GetSize() *int {
if o == nil {
return nil
}
return o.Size
}
func (o *GetWatchlistResponseBody) GetMetadata() []Metadata {
if o == nil {
return nil
}
return o.Metadata
}
type GetWatchlistResponse struct {
// HTTP response content type for this operation
ContentType string
// HTTP response status code for this operation
StatusCode int
// Raw HTTP response; suitable for custom response parsing
RawResponse *http.Response
// Watchlist Data
Object *GetWatchlistResponseBody
}
func (o *GetWatchlistResponse) GetContentType() string {
if o == nil {
return ""
}
return o.ContentType
}
func (o *GetWatchlistResponse) GetStatusCode() int {
if o == nil {
return 0
}
return o.StatusCode
}
func (o *GetWatchlistResponse) GetRawResponse() *http.Response {
if o == nil {
return nil
}
return o.RawResponse
}
func (o *GetWatchlistResponse) GetObject() *GetWatchlistResponseBody {
if o == nil {
return nil
}
return o.Object
}

View File

@@ -0,0 +1,49 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
package sdkerrors
import (
"encoding/json"
"net/http"
)
type GetHomeDataErrors struct {
Code *float64 `json:"code,omitempty"`
Message *string `json:"message,omitempty"`
Status *float64 `json:"status,omitempty"`
}
func (o *GetHomeDataErrors) GetCode() *float64 {
if o == nil {
return nil
}
return o.Code
}
func (o *GetHomeDataErrors) GetMessage() *string {
if o == nil {
return nil
}
return o.Message
}
func (o *GetHomeDataErrors) GetStatus() *float64 {
if o == nil {
return nil
}
return o.Status
}
// GetHomeDataResponseBody - Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
type GetHomeDataResponseBody struct {
Errors []GetHomeDataErrors `json:"errors,omitempty"`
// Raw HTTP response; suitable for custom response parsing
RawResponse *http.Response `json:"-"`
}
var _ error = &GetHomeDataResponseBody{}
func (e *GetHomeDataResponseBody) Error() string {
data, _ := json.Marshal(e)
return string(data)
}

View File

@@ -0,0 +1,49 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
package sdkerrors
import (
"encoding/json"
"net/http"
)
type GetWatchlistErrors struct {
Code *float64 `json:"code,omitempty"`
Message *string `json:"message,omitempty"`
Status *float64 `json:"status,omitempty"`
}
func (o *GetWatchlistErrors) GetCode() *float64 {
if o == nil {
return nil
}
return o.Code
}
func (o *GetWatchlistErrors) GetMessage() *string {
if o == nil {
return nil
}
return o.Message
}
func (o *GetWatchlistErrors) GetStatus() *float64 {
if o == nil {
return nil
}
return o.Status
}
// GetWatchlistResponseBody - Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
type GetWatchlistResponseBody struct {
Errors []GetWatchlistErrors `json:"errors,omitempty"`
// Raw HTTP response; suitable for custom response parsing
RawResponse *http.Response `json:"-"`
}
var _ error = &GetWatchlistResponseBody{}
func (e *GetWatchlistResponseBody) Error() string {
data, _ := json.Marshal(e)
return string(data)
}

126
plex.go
View File

@@ -12,6 +12,7 @@ import (
"github.com/LukeHagar/plexgo/models/sdkerrors"
"io"
"net/http"
"net/url"
)
// Plex - API Calls that perform operations directly against https://Plex.tv
@@ -25,9 +26,118 @@ func newPlex(sdkConfig sdkConfiguration) *Plex {
}
}
// GetHomeData - Get Plex Home Data
// Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status.
func (s *Plex) GetHomeData(ctx context.Context) (*operations.GetHomeDataResponse, error) {
hookCtx := hooks.HookContext{
Context: ctx,
OperationID: "getHomeData",
OAuth2Scopes: []string{},
SecuritySource: s.sdkConfiguration.Security,
}
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
opURL, err := url.JoinPath(baseURL, "/home")
if err != nil {
return nil, fmt.Errorf("error generating URL: %w", err)
}
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
}
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.GetHomeDataResponse{
StatusCode: httpRes.StatusCode,
ContentType: httpRes.Header.Get("Content-Type"),
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:
switch {
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
var out operations.GetHomeDataResponseBody
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
return nil, err
}
res.Object = &out
default:
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:
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(httpRes.Header.Get("Content-Type"), `application/json`):
var out sdkerrors.GetHomeDataResponseBody
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", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
}
default:
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
}
return res, nil
}
// GetPin - Get a Pin
// Retrieve a Pin from Plex.tv for authentication flows
func (s *Plex) GetPin(ctx context.Context, strong *bool, xPlexClientIdentifier *string, opts ...operations.Option) (*operations.GetPinResponse, error) {
func (s *Plex) GetPin(ctx context.Context, xPlexProduct string, strong *bool, xPlexClientIdentifier *string, opts ...operations.Option) (*operations.GetPinResponse, error) {
hookCtx := hooks.HookContext{
Context: ctx,
OperationID: "getPin",
@@ -38,6 +148,7 @@ func (s *Plex) GetPin(ctx context.Context, strong *bool, xPlexClientIdentifier *
request := operations.GetPinRequest{
Strong: strong,
XPlexClientIdentifier: xPlexClientIdentifier,
XPlexProduct: xPlexProduct,
}
globals := operations.GetPinGlobals{
@@ -120,7 +231,7 @@ func (s *Plex) GetPin(ctx context.Context, strong *bool, xPlexClientIdentifier *
httpRes.Body = io.NopCloser(bytes.NewBuffer(rawBody))
switch {
case httpRes.StatusCode == 200:
case httpRes.StatusCode == 201:
switch {
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
var out operations.GetPinResponseBody
@@ -253,6 +364,17 @@ func (s *Plex) GetToken(ctx context.Context, pinID string, xPlexClientIdentifier
switch {
case httpRes.StatusCode == 200:
switch {
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
var out operations.GetTokenResponseBody
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
return nil, err
}
res.Object = &out
default:
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`):

View File

@@ -91,6 +91,9 @@ type PlexAPI struct {
// Butler is the task manager of the Plex Media Server Ecosystem.
//
Butler *Butler
// API Calls that perform operations directly against https://Plex.tv
//
Plex *Plex
// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
//
Hubs *Hubs
@@ -103,9 +106,6 @@ type PlexAPI struct {
// Submit logs to the Log Handler for Plex Media Server
//
Log *Log
// API Calls that perform operations directly against https://Plex.tv
//
Plex *Plex
// Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017").
// They can be organized in (optionally nesting) folders.
// Retrieving a playlist, or its items, will trigger a refresh of its metadata.
@@ -125,6 +125,9 @@ type PlexAPI struct {
// Updates to the status can be observed via the Event API.
//
Updater *Updater
// API Calls that perform operations with Plex Media Server Watchlists
//
Watchlist *Watchlist
sdkConfiguration sdkConfiguration
}
@@ -269,9 +272,9 @@ func New(opts ...SDKOption) *PlexAPI {
sdkConfiguration: sdkConfiguration{
Language: "go",
OpenAPIDocVersion: "0.0.3",
SDKVersion: "0.8.1",
GenVersion: "2.338.12",
UserAgent: "speakeasy-sdk/go 0.8.1 2.338.12 0.0.3 github.com/LukeHagar/plexgo",
SDKVersion: "0.9.0",
GenVersion: "2.342.6",
UserAgent: "speakeasy-sdk/go 0.9.0 2.342.6 0.0.3 github.com/LukeHagar/plexgo",
Globals: globals.Globals{},
ServerDefaults: []map[string]string{
{
@@ -309,6 +312,8 @@ func New(opts ...SDKOption) *PlexAPI {
sdk.Butler = newButler(sdk.sdkConfiguration)
sdk.Plex = newPlex(sdk.sdkConfiguration)
sdk.Hubs = newHubs(sdk.sdkConfiguration)
sdk.Search = newSearch(sdk.sdkConfiguration)
@@ -317,8 +322,6 @@ func New(opts ...SDKOption) *PlexAPI {
sdk.Log = newLog(sdk.sdkConfiguration)
sdk.Plex = newPlex(sdk.sdkConfiguration)
sdk.Playlists = newPlaylists(sdk.sdkConfiguration)
sdk.Authentication = newAuthentication(sdk.sdkConfiguration)
@@ -329,5 +332,7 @@ func New(opts ...SDKOption) *PlexAPI {
sdk.Updater = newUpdater(sdk.sdkConfiguration)
sdk.Watchlist = newWatchlist(sdk.sdkConfiguration)
return sdk
}

153
watchlist.go Normal file
View File

@@ -0,0 +1,153 @@
// Code generated by Speakeasy (https://speakeasyapi.dev). 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"
"io"
"net/http"
)
// Watchlist - API Calls that perform operations with Plex Media Server Watchlists
type Watchlist struct {
sdkConfiguration sdkConfiguration
}
func newWatchlist(sdkConfig sdkConfiguration) *Watchlist {
return &Watchlist{
sdkConfiguration: sdkConfig,
}
}
// GetWatchlist - Get User Watchlist
// Get User Watchlist
func (s *Watchlist) GetWatchlist(ctx context.Context, request operations.GetWatchlistRequest, opts ...operations.Option) (*operations.GetWatchlistResponse, error) {
hookCtx := hooks.HookContext{
Context: ctx,
OperationID: "getWatchlist",
OAuth2Scopes: []string{},
SecuritySource: s.sdkConfiguration.Security,
}
o := operations.Options{}
supportedOptions := []string{
operations.SupportedOptionServerURL,
}
for _, opt := range opts {
if err := opt(&o, supportedOptions...); err != nil {
return nil, fmt.Errorf("error applying option: %w", err)
}
}
baseURL := utils.ReplaceParameters(operations.GetWatchlistServerList[0], map[string]string{})
if o.ServerURL != nil {
baseURL = *o.ServerURL
}
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/watchlist/{filter}", request, nil)
if err != nil {
return nil, fmt.Errorf("error generating URL: %w", err)
}
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
}
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.GetWatchlistResponse{
StatusCode: httpRes.StatusCode,
ContentType: httpRes.Header.Get("Content-Type"),
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:
switch {
case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`):
var out operations.GetWatchlistResponseBody
if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil {
return nil, err
}
res.Object = &out
default:
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:
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(httpRes.Header.Get("Content-Type"), `application/json`):
var out sdkerrors.GetWatchlistResponseBody
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", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
}
default:
return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes)
}
return res, nil
}