diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 956dab6b..1641e62d 100755
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: 1732900d-e173-47c1-a90d-d45182eb35d9
management:
- docChecksum: a643a64d282d705e3e24f61ed6f068c6
+ docChecksum: 14b35829d4be91a88269761c3ed01426
docVersion: 0.0.3
- speakeasyVersion: 1.476.1
- generationVersion: 2.495.1
- releaseVersion: 0.11.3
- configChecksum: 6395be3d833cb132a8994afd879a1f26
+ speakeasyVersion: 1.484.1
+ generationVersion: 2.503.2
+ releaseVersion: 0.11.4
+ configChecksum: 126ca5c605b680e9fad7993275f418f0
repoURL: https://github.com/LukeHagar/plexjava.git
published: true
features:
java:
additionalDependencies: 0.1.0
constsAndDefaults: 0.1.1
- core: 3.33.5
+ core: 3.33.8
deprecations: 2.81.1
downloadStreams: 0.1.1
enums: 2.81.2
@@ -92,6 +92,10 @@ generatedFiles:
- docs/models/errors/GetCompanionsDataErrors.md
- docs/models/errors/GetCompanionsDataPlexErrors.md
- docs/models/errors/GetCompanionsDataUnauthorized.md
+ - docs/models/errors/GetCountriesLibraryBadRequest.md
+ - docs/models/errors/GetCountriesLibraryErrors.md
+ - docs/models/errors/GetCountriesLibraryLibraryErrors.md
+ - docs/models/errors/GetCountriesLibraryUnauthorized.md
- docs/models/errors/GetDevicesBadRequest.md
- docs/models/errors/GetDevicesErrors.md
- docs/models/errors/GetDevicesServerErrors.md
@@ -100,6 +104,10 @@ generatedFiles:
- docs/models/errors/GetFileHashErrors.md
- docs/models/errors/GetFileHashLibraryErrors.md
- docs/models/errors/GetFileHashUnauthorized.md
+ - docs/models/errors/GetGenresLibraryBadRequest.md
+ - docs/models/errors/GetGenresLibraryErrors.md
+ - docs/models/errors/GetGenresLibraryLibraryErrors.md
+ - docs/models/errors/GetGenresLibraryUnauthorized.md
- docs/models/errors/GetGeoDataBadRequest.md
- docs/models/errors/GetGeoDataErrors.md
- docs/models/errors/GetGeoDataPlexErrors.md
@@ -399,11 +407,21 @@ generatedFiles:
- docs/models/operations/GetButlerTasksResponse.md
- docs/models/operations/GetButlerTasksResponseBody.md
- docs/models/operations/GetCompanionsDataResponse.md
+ - docs/models/operations/GetCountriesLibraryDirectory.md
+ - docs/models/operations/GetCountriesLibraryMediaContainer.md
+ - docs/models/operations/GetCountriesLibraryRequest.md
+ - docs/models/operations/GetCountriesLibraryResponse.md
+ - docs/models/operations/GetCountriesLibraryResponseBody.md
- docs/models/operations/GetDevicesMediaContainer.md
- docs/models/operations/GetDevicesResponse.md
- docs/models/operations/GetDevicesResponseBody.md
- docs/models/operations/GetFileHashRequest.md
- docs/models/operations/GetFileHashResponse.md
+ - docs/models/operations/GetGenresLibraryDirectory.md
+ - docs/models/operations/GetGenresLibraryMediaContainer.md
+ - docs/models/operations/GetGenresLibraryRequest.md
+ - docs/models/operations/GetGenresLibraryResponse.md
+ - docs/models/operations/GetGenresLibraryResponseBody.md
- docs/models/operations/GetGeoDataGeoData.md
- docs/models/operations/GetGeoDataResponse.md
- docs/models/operations/GetGlobalHubsMediaContainer.md
@@ -933,6 +951,10 @@ generatedFiles:
- src/main/java/dev/plexapi/sdk/models/errors/GetCompanionsDataErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetCompanionsDataPlexErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetCompanionsDataUnauthorized.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryBadRequest.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryErrors.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryLibraryErrors.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryUnauthorized.java
- src/main/java/dev/plexapi/sdk/models/errors/GetDevicesBadRequest.java
- src/main/java/dev/plexapi/sdk/models/errors/GetDevicesErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetDevicesServerErrors.java
@@ -941,6 +963,10 @@ generatedFiles:
- src/main/java/dev/plexapi/sdk/models/errors/GetFileHashErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetFileHashLibraryErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetFileHashUnauthorized.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryBadRequest.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryErrors.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryLibraryErrors.java
+ - src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryUnauthorized.java
- src/main/java/dev/plexapi/sdk/models/errors/GetGeoDataBadRequest.java
- src/main/java/dev/plexapi/sdk/models/errors/GetGeoDataErrors.java
- src/main/java/dev/plexapi/sdk/models/errors/GetGeoDataPlexErrors.java
@@ -1256,6 +1282,12 @@ generatedFiles:
- src/main/java/dev/plexapi/sdk/models/operations/GetButlerTasksResponseBody.java
- src/main/java/dev/plexapi/sdk/models/operations/GetCompanionsDataRequestBuilder.java
- src/main/java/dev/plexapi/sdk/models/operations/GetCompanionsDataResponse.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryDirectory.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryMediaContainer.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequest.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequestBuilder.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponse.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponseBody.java
- src/main/java/dev/plexapi/sdk/models/operations/GetDevicesMediaContainer.java
- src/main/java/dev/plexapi/sdk/models/operations/GetDevicesRequestBuilder.java
- src/main/java/dev/plexapi/sdk/models/operations/GetDevicesResponse.java
@@ -1263,6 +1295,12 @@ generatedFiles:
- src/main/java/dev/plexapi/sdk/models/operations/GetFileHashRequest.java
- src/main/java/dev/plexapi/sdk/models/operations/GetFileHashRequestBuilder.java
- src/main/java/dev/plexapi/sdk/models/operations/GetFileHashResponse.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryDirectory.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryMediaContainer.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequest.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequestBuilder.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponse.java
+ - src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponseBody.java
- src/main/java/dev/plexapi/sdk/models/operations/GetGeoDataGeoData.java
- src/main/java/dev/plexapi/sdk/models/operations/GetGeoDataRequestBuilder.java
- src/main/java/dev/plexapi/sdk/models/operations/GetGeoDataResponse.java
@@ -1774,6 +1812,7 @@ generatedFiles:
- src/main/java/dev/plexapi/sdk/utils/QueryParameter.java
- src/main/java/dev/plexapi/sdk/utils/QueryParameters.java
- src/main/java/dev/plexapi/sdk/utils/QueryParamsMetadata.java
+ - src/main/java/dev/plexapi/sdk/utils/RecordingClient.java
- src/main/java/dev/plexapi/sdk/utils/RequestBody.java
- src/main/java/dev/plexapi/sdk/utils/RequestMetadata.java
- src/main/java/dev/plexapi/sdk/utils/Response.java
@@ -2775,5 +2814,29 @@ examples:
application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]}
"401":
application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]}
+ get-genres-library:
+ speakeasy-default-get-genres-library:
+ parameters:
+ path:
+ sectionKey: 9518
+ responses:
+ "200":
+ application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Shows (Reality)", "title2": "By Genre", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/10/all?genre=89", "key": "89", "title": "Action", "type": "genre"}]}}
+ "400":
+ application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]}
+ "401":
+ application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]}
+ get-countries-library:
+ speakeasy-default-get-countries-library:
+ parameters:
+ path:
+ sectionKey: 9518
+ responses:
+ "200":
+ application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Country", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/2/all?country=15491", "key": "15491", "title": "Japan"}]}}
+ "400":
+ application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]}
+ "401":
+ application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]}
examplesVersion: 1.0.0
generatedTests: {}
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 37e72e25..5ac9d35f 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -13,7 +13,7 @@ generation:
oAuth2ClientCredentialsEnabled: true
oAuth2PasswordEnabled: false
java:
- version: 0.11.3
+ version: 0.11.4
additionalDependencies: []
additionalPlugins: []
artifactID: plexapi
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 5c3c255a..a495eefc 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,4 +1,4 @@
-speakeasyVersion: 1.476.1
+speakeasyVersion: 1.484.1
sources:
my-source:
sourceNamespace: my-source
@@ -8,19 +8,19 @@ sources:
- latest
plexapi:
sourceNamespace: plexapi
- sourceRevisionDigest: sha256:e73707dfae50d22dab2166b1661938446b9831bcee252ecd696a1172dfd6ae2c
- sourceBlobDigest: sha256:e06caa091ad527fd21714fc0d43e7ea385e181fbad8c4f60296457a89a23c696
+ sourceRevisionDigest: sha256:0b88c8bfc41def63e19e91fdd4d51bab07cb947cc3d39d2b44e8523a209cec10
+ sourceBlobDigest: sha256:89d5b8427d4fb61b25751aebbaf71f9613958e9e91073fc084fed2c2ec62ce55
tags:
- latest
- - speakeasy-sdk-regen-1737937609
+ - speakeasy-sdk-regen-1738715170
targets:
plexjava:
source: plexapi
sourceNamespace: plexapi
- sourceRevisionDigest: sha256:e73707dfae50d22dab2166b1661938446b9831bcee252ecd696a1172dfd6ae2c
- sourceBlobDigest: sha256:e06caa091ad527fd21714fc0d43e7ea385e181fbad8c4f60296457a89a23c696
+ sourceRevisionDigest: sha256:0b88c8bfc41def63e19e91fdd4d51bab07cb947cc3d39d2b44e8523a209cec10
+ sourceBlobDigest: sha256:89d5b8427d4fb61b25751aebbaf71f9613958e9e91073fc084fed2c2ec62ce55
codeSamplesNamespace: code-samples-java-plexjava
- codeSamplesRevisionDigest: sha256:88e5ff78d25261d63cd6b797a5176884e5606d54b7ff8bade974b8464a274a94
+ codeSamplesRevisionDigest: sha256:2aa7538a82c8a44f72d94eb4f26788f861508b856440d207b35e5160b54e9420
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/README.md b/README.md
index 46ccdaa1..6066cf4c 100644
--- a/README.md
+++ b/README.md
@@ -69,7 +69,7 @@ The samples below show how a published SDK artifact is used:
Gradle:
```groovy
-implementation 'dev.plexapi:plexapi:0.11.3'
+implementation 'dev.plexapi:plexapi:0.11.4'
```
Maven:
@@ -77,7 +77,7 @@ Maven:
dev.plexapi
plexapi
- 0.11.3
+ 0.11.4
```
@@ -171,6 +171,8 @@ public class Application {
* [getLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items
* [getRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library
* [getSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library
+* [getGenresLibrary](docs/sdks/library/README.md#getgenreslibrary) - Get Genres of library media
+* [getCountriesLibrary](docs/sdks/library/README.md#getcountrieslibrary) - Get Countries of library media
* [getSearchAllLibraries](docs/sdks/library/README.md#getsearchalllibraries) - Search All Libraries
* [getMetaDataByRatingKey](docs/sdks/library/README.md#getmetadatabyratingkey) - Get Metadata by RatingKey
* [getMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children
diff --git a/RELEASES.md b/RELEASES.md
index 6b1fe844..8a0fbe13 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -218,4 +218,14 @@ Based on:
### Generated
- [java v0.11.3] .
### Releases
-- [Maven Central v0.11.3] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.11.3 - .
\ No newline at end of file
+- [Maven Central v0.11.3] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.11.3 - .
+
+## 2025-02-05 00:25:55
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.484.1 (2.503.2) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [java v0.11.4] .
+### Releases
+- [Maven Central v0.11.4] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.11.4 - .
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 11a521f3..0a8dec69 100644
--- a/build.gradle
+++ b/build.gradle
@@ -63,7 +63,7 @@ tasks.withType(Javadoc) {
}
group = "dev.plexapi"
-version = "0.11.3"
+version = "0.11.4"
sourcesJar {
archiveBaseName = "plexapi"
@@ -101,7 +101,7 @@ publishing {
maven(MavenPublication) {
groupId = 'dev.plexapi'
artifactId = 'plexapi'
- version = '0.11.3'
+ version = '0.11.4'
from components.java
diff --git a/codeSamples.yaml b/codeSamples.yaml
index 739e3d0b..87d93487 100644
--- a/codeSamples.yaml
+++ b/codeSamples.yaml
@@ -624,7 +624,6 @@ actions:
import dev.plexapi.plexapi.PlexAPI;
import dev.plexapi.plexapi.models.operations.GetRecentlyAddedRequest;
import dev.plexapi.plexapi.models.operations.GetRecentlyAddedResponse;
- import dev.plexapi.plexapi.models.operations.IncludeMeta;
import dev.plexapi.plexapi.models.operations.Type;
import java.lang.Exception;
@@ -640,9 +639,6 @@ actions:
.contentDirectoryID(470161L)
.type(Type.TvShow)
.sectionID(2L)
- .includeMeta(IncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetRecentlyAddedResponse res = sdk.hubs().getRecentlyAdded()
@@ -1029,7 +1025,6 @@ actions:
import dev.plexapi.plexapi.models.errors.GetRecentlyAddedLibraryUnauthorized;
import dev.plexapi.plexapi.models.operations.GetRecentlyAddedLibraryRequest;
import dev.plexapi.plexapi.models.operations.GetRecentlyAddedLibraryResponse;
- import dev.plexapi.plexapi.models.operations.QueryParamIncludeMeta;
import dev.plexapi.plexapi.models.operations.QueryParamType;
import java.lang.Exception;
import java.util.List;
@@ -1059,9 +1054,6 @@ actions:
16L,
17L))
.sectionID(2L)
- .includeMeta(QueryParamIncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetRecentlyAddedLibraryResponse res = sdk.library().getRecentlyAddedLibrary()
@@ -1086,8 +1078,6 @@ actions:
import dev.plexapi.plexapi.models.errors.GetSearchAllLibrariesUnauthorized;
import dev.plexapi.plexapi.models.operations.GetSearchAllLibrariesRequest;
import dev.plexapi.plexapi.models.operations.GetSearchAllLibrariesResponse;
- import dev.plexapi.plexapi.models.operations.QueryParamIncludeCollections;
- import dev.plexapi.plexapi.models.operations.QueryParamIncludeExternalMedia;
import dev.plexapi.plexapi.models.operations.SearchTypes;
import java.lang.Exception;
import java.util.List;
@@ -1105,8 +1095,6 @@ actions:
.clientID("3381b62b-9ab7-4e37-827b-203e9809eb58")
.searchTypes(List.of(
SearchTypes.PEOPLE))
- .includeCollections(QueryParamIncludeCollections.Enable)
- .includeExternalMedia(QueryParamIncludeExternalMedia.Enable)
.build();
GetSearchAllLibrariesResponse res = sdk.library().getSearchAllLibraries()
@@ -1175,8 +1163,6 @@ actions:
GetWatchListRequest req = GetWatchListRequest.builder()
.filter(Filter.AVAILABLE)
.xPlexToken("CV5xoxjTpFKUzBTShsaf")
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetWatchListResponse res = sdk.watchlist().getWatchList()
@@ -1245,6 +1231,68 @@ actions:
.sectionKey(9518)
.call();
+ if (res.object().isPresent()) {
+ // handle response
+ }
+ }
+ }
+ - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"]
+ update:
+ x-codeSamples:
+ - lang: java
+ label: library
+ source: |-
+ package hello.world;
+
+ import dev.plexapi.plexapi.PlexAPI;
+ import dev.plexapi.plexapi.models.errors.GetCountriesLibraryBadRequest;
+ import dev.plexapi.plexapi.models.errors.GetCountriesLibraryUnauthorized;
+ import dev.plexapi.plexapi.models.operations.GetCountriesLibraryResponse;
+ import java.lang.Exception;
+
+ public class Application {
+
+ public static void main(String[] args) throws GetCountriesLibraryBadRequest, GetCountriesLibraryUnauthorized, Exception {
+
+ PlexAPI sdk = PlexAPI.builder()
+ .accessToken("")
+ .build();
+
+ GetCountriesLibraryResponse res = sdk.library().getCountriesLibrary()
+ .sectionKey(9518)
+ .call();
+
+ if (res.object().isPresent()) {
+ // handle response
+ }
+ }
+ }
+ - target: $["paths"]["/library/sections/{sectionKey}/genre"]["get"]
+ update:
+ x-codeSamples:
+ - lang: java
+ label: library
+ source: |-
+ package hello.world;
+
+ import dev.plexapi.plexapi.PlexAPI;
+ import dev.plexapi.plexapi.models.errors.GetGenresLibraryBadRequest;
+ import dev.plexapi.plexapi.models.errors.GetGenresLibraryUnauthorized;
+ import dev.plexapi.plexapi.models.operations.GetGenresLibraryResponse;
+ import java.lang.Exception;
+
+ public class Application {
+
+ public static void main(String[] args) throws GetGenresLibraryBadRequest, GetGenresLibraryUnauthorized, Exception {
+
+ PlexAPI sdk = PlexAPI.builder()
+ .accessToken("")
+ .build();
+
+ GetGenresLibraryResponse res = sdk.library().getGenresLibrary()
+ .sectionKey(9518)
+ .call();
+
if (res.object().isPresent()) {
// handle response
}
@@ -1325,11 +1373,9 @@ actions:
import dev.plexapi.plexapi.PlexAPI;
import dev.plexapi.plexapi.models.errors.GetLibraryItemsBadRequest;
import dev.plexapi.plexapi.models.errors.GetLibraryItemsUnauthorized;
- import dev.plexapi.plexapi.models.operations.GetLibraryItemsQueryParamIncludeMeta;
import dev.plexapi.plexapi.models.operations.GetLibraryItemsQueryParamType;
import dev.plexapi.plexapi.models.operations.GetLibraryItemsRequest;
import dev.plexapi.plexapi.models.operations.GetLibraryItemsResponse;
- import dev.plexapi.plexapi.models.operations.IncludeGuids;
import dev.plexapi.plexapi.models.operations.Tag;
import java.lang.Exception;
@@ -1344,11 +1390,7 @@ actions:
GetLibraryItemsRequest req = GetLibraryItemsRequest.builder()
.tag(Tag.EDITION)
.sectionKey(9518)
- .includeGuids(IncludeGuids.Enable)
.type(GetLibraryItemsQueryParamType.TvShow)
- .includeMeta(GetLibraryItemsQueryParamIncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetLibraryItemsResponse res = sdk.library().getLibraryItems()
@@ -1578,7 +1620,6 @@ actions:
GetPinRequest req = GetPinRequest.builder()
.clientID("3381b62b-9ab7-4e37-827b-203e9809eb58")
- .strong(false)
.clientName("Plex for Roku")
.deviceNickname("Roku 3")
.clientVersion("2.4.1")
@@ -2458,7 +2499,6 @@ actions:
.requestBody(PostUsersSignInDataRequestBody.builder()
.login("username@email.com")
.password("password123")
- .rememberMe(false)
.verificationCode("123456")
.build())
.build();
diff --git a/docs/models/errors/GetCountriesLibraryBadRequest.md b/docs/models/errors/GetCountriesLibraryBadRequest.md
new file mode 100644
index 00000000..d6b4576b
--- /dev/null
+++ b/docs/models/errors/GetCountriesLibraryBadRequest.md
@@ -0,0 +1,11 @@
+# GetCountriesLibraryBadRequest
+
+Bad Request - A parameter was not specified, or was specified incorrectly.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
+| `errors` | List\<[GetCountriesLibraryErrors](../../models/errors/GetCountriesLibraryErrors.md)> | :heavy_minus_sign: | N/A |
+| `rawResponse` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
\ No newline at end of file
diff --git a/docs/models/errors/GetCountriesLibraryErrors.md b/docs/models/errors/GetCountriesLibraryErrors.md
new file mode 100644
index 00000000..fc28903c
--- /dev/null
+++ b/docs/models/errors/GetCountriesLibraryErrors.md
@@ -0,0 +1,10 @@
+# GetCountriesLibraryErrors
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
+| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1000 |
+| `message` | *Optional\* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing |
+| `status` | *Optional\* | :heavy_minus_sign: | N/A | 400 |
\ No newline at end of file
diff --git a/docs/models/errors/GetCountriesLibraryLibraryErrors.md b/docs/models/errors/GetCountriesLibraryLibraryErrors.md
new file mode 100644
index 00000000..fc95fe1d
--- /dev/null
+++ b/docs/models/errors/GetCountriesLibraryLibraryErrors.md
@@ -0,0 +1,10 @@
+# GetCountriesLibraryLibraryErrors
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
+| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1001 |
+| `message` | *Optional\* | :heavy_minus_sign: | N/A | User could not be authenticated |
+| `status` | *Optional\* | :heavy_minus_sign: | N/A | 401 |
\ No newline at end of file
diff --git a/docs/models/errors/GetCountriesLibraryUnauthorized.md b/docs/models/errors/GetCountriesLibraryUnauthorized.md
new file mode 100644
index 00000000..a73a8247
--- /dev/null
+++ b/docs/models/errors/GetCountriesLibraryUnauthorized.md
@@ -0,0 +1,11 @@
+# GetCountriesLibraryUnauthorized
+
+Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
+| `errors` | List\<[GetCountriesLibraryLibraryErrors](../../models/errors/GetCountriesLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A |
+| `rawResponse` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
\ No newline at end of file
diff --git a/docs/models/errors/GetGenresLibraryBadRequest.md b/docs/models/errors/GetGenresLibraryBadRequest.md
new file mode 100644
index 00000000..611c08a2
--- /dev/null
+++ b/docs/models/errors/GetGenresLibraryBadRequest.md
@@ -0,0 +1,11 @@
+# GetGenresLibraryBadRequest
+
+Bad Request - A parameter was not specified, or was specified incorrectly.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
+| `errors` | List\<[GetGenresLibraryErrors](../../models/errors/GetGenresLibraryErrors.md)> | :heavy_minus_sign: | N/A |
+| `rawResponse` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
\ No newline at end of file
diff --git a/docs/models/errors/GetGenresLibraryErrors.md b/docs/models/errors/GetGenresLibraryErrors.md
new file mode 100644
index 00000000..0d945204
--- /dev/null
+++ b/docs/models/errors/GetGenresLibraryErrors.md
@@ -0,0 +1,10 @@
+# GetGenresLibraryErrors
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
+| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1000 |
+| `message` | *Optional\* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing |
+| `status` | *Optional\* | :heavy_minus_sign: | N/A | 400 |
\ No newline at end of file
diff --git a/docs/models/errors/GetGenresLibraryLibraryErrors.md b/docs/models/errors/GetGenresLibraryLibraryErrors.md
new file mode 100644
index 00000000..98b4b797
--- /dev/null
+++ b/docs/models/errors/GetGenresLibraryLibraryErrors.md
@@ -0,0 +1,10 @@
+# GetGenresLibraryLibraryErrors
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
+| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1001 |
+| `message` | *Optional\* | :heavy_minus_sign: | N/A | User could not be authenticated |
+| `status` | *Optional\* | :heavy_minus_sign: | N/A | 401 |
\ No newline at end of file
diff --git a/docs/models/errors/GetGenresLibraryUnauthorized.md b/docs/models/errors/GetGenresLibraryUnauthorized.md
new file mode 100644
index 00000000..944083ba
--- /dev/null
+++ b/docs/models/errors/GetGenresLibraryUnauthorized.md
@@ -0,0 +1,11 @@
+# GetGenresLibraryUnauthorized
+
+Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
+| `errors` | List\<[GetGenresLibraryLibraryErrors](../../models/errors/GetGenresLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A |
+| `rawResponse` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
\ No newline at end of file
diff --git a/docs/models/operations/GetCountriesLibraryDirectory.md b/docs/models/operations/GetCountriesLibraryDirectory.md
new file mode 100644
index 00000000..2a7168d9
--- /dev/null
+++ b/docs/models/operations/GetCountriesLibraryDirectory.md
@@ -0,0 +1,10 @@
+# GetCountriesLibraryDirectory
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- |
+| `fastKey` | *String* | :heavy_check_mark: | N/A | /library/sections/2/all?country=15491 |
+| `key` | *String* | :heavy_check_mark: | N/A | 15491 |
+| `title` | *String* | :heavy_check_mark: | N/A | Japan |
\ No newline at end of file
diff --git a/docs/models/operations/GetCountriesLibraryMediaContainer.md b/docs/models/operations/GetCountriesLibraryMediaContainer.md
new file mode 100644
index 00000000..e03e5733
--- /dev/null
+++ b/docs/models/operations/GetCountriesLibraryMediaContainer.md
@@ -0,0 +1,22 @@
+# GetCountriesLibraryMediaContainer
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
+| `size` | *double* | :heavy_check_mark: | N/A | 50 |
+| `offset` | *Optional\* | :heavy_minus_sign: | N/A | |
+| `totalSize` | *Optional\* | :heavy_minus_sign: | N/A | |
+| `identifier` | *String* | :heavy_check_mark: | N/A | com.plexapp.plugins.library |
+| `allowSync` | *boolean* | :heavy_check_mark: | N/A | false |
+| `art` | *String* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg |
+| `content` | *String* | :heavy_check_mark: | N/A | secondary |
+| `mediaTagPrefix` | *String* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ |
+| `mediaTagVersion` | *long* | :heavy_check_mark: | N/A | 1734362201 |
+| `nocache` | *boolean* | :heavy_check_mark: | N/A | true |
+| `thumb` | *String* | :heavy_check_mark: | N/A | /:/resources/show.png |
+| `title1` | *String* | :heavy_check_mark: | N/A | TV Series |
+| `title2` | *String* | :heavy_check_mark: | N/A | By Country |
+| `viewGroup` | *String* | :heavy_check_mark: | N/A | secondary |
+| `directory` | List\<[GetCountriesLibraryDirectory](../../models/operations/GetCountriesLibraryDirectory.md)> | :heavy_minus_sign: | N/A | |
\ No newline at end of file
diff --git a/docs/models/operations/GetCountriesLibraryRequest.md b/docs/models/operations/GetCountriesLibraryRequest.md
new file mode 100644
index 00000000..d52503e5
--- /dev/null
+++ b/docs/models/operations/GetCountriesLibraryRequest.md
@@ -0,0 +1,8 @@
+# GetCountriesLibraryRequest
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `sectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 |
\ No newline at end of file
diff --git a/docs/models/operations/GetCountriesLibraryResponse.md b/docs/models/operations/GetCountriesLibraryResponse.md
new file mode 100644
index 00000000..40755bd1
--- /dev/null
+++ b/docs/models/operations/GetCountriesLibraryResponse.md
@@ -0,0 +1,11 @@
+# GetCountriesLibraryResponse
+
+
+## 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` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
+| `object` | [Optional\](../../models/operations/GetCountriesLibraryResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. |
\ No newline at end of file
diff --git a/docs/models/operations/GetCountriesLibraryResponseBody.md b/docs/models/operations/GetCountriesLibraryResponseBody.md
new file mode 100644
index 00000000..d180d081
--- /dev/null
+++ b/docs/models/operations/GetCountriesLibraryResponseBody.md
@@ -0,0 +1,10 @@
+# GetCountriesLibraryResponseBody
+
+Successful response containing media container data.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
+| `mediaContainer` | [Optional\](../../models/operations/GetCountriesLibraryMediaContainer.md) | :heavy_minus_sign: | N/A |
\ No newline at end of file
diff --git a/docs/models/operations/GetGenresLibraryDirectory.md b/docs/models/operations/GetGenresLibraryDirectory.md
new file mode 100644
index 00000000..ea1e9701
--- /dev/null
+++ b/docs/models/operations/GetGenresLibraryDirectory.md
@@ -0,0 +1,11 @@
+# GetGenresLibraryDirectory
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- |
+| `fastKey` | *String* | :heavy_check_mark: | N/A | /library/sections/10/all?genre=89 |
+| `key` | *String* | :heavy_check_mark: | N/A | 89 |
+| `title` | *String* | :heavy_check_mark: | N/A | Action |
+| `type` | *String* | :heavy_check_mark: | N/A | genre |
\ No newline at end of file
diff --git a/docs/models/operations/GetGenresLibraryMediaContainer.md b/docs/models/operations/GetGenresLibraryMediaContainer.md
new file mode 100644
index 00000000..7229c5bd
--- /dev/null
+++ b/docs/models/operations/GetGenresLibraryMediaContainer.md
@@ -0,0 +1,22 @@
+# GetGenresLibraryMediaContainer
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+| `size` | *double* | :heavy_check_mark: | N/A | 50 |
+| `offset` | *Optional\* | :heavy_minus_sign: | N/A | |
+| `totalSize` | *Optional\* | :heavy_minus_sign: | N/A | |
+| `identifier` | *String* | :heavy_check_mark: | N/A | com.plexapp.plugins.library |
+| `allowSync` | *boolean* | :heavy_check_mark: | N/A | false |
+| `art` | *String* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg |
+| `content` | *String* | :heavy_check_mark: | N/A | secondary |
+| `mediaTagPrefix` | *String* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ |
+| `mediaTagVersion` | *long* | :heavy_check_mark: | N/A | 1734362201 |
+| `nocache` | *boolean* | :heavy_check_mark: | N/A | true |
+| `thumb` | *String* | :heavy_check_mark: | N/A | /:/resources/show.png |
+| `title1` | *String* | :heavy_check_mark: | N/A | TV Shows (Reality) |
+| `title2` | *String* | :heavy_check_mark: | N/A | By Genre |
+| `viewGroup` | *String* | :heavy_check_mark: | N/A | secondary |
+| `directory` | List\<[GetGenresLibraryDirectory](../../models/operations/GetGenresLibraryDirectory.md)> | :heavy_minus_sign: | N/A | |
\ No newline at end of file
diff --git a/docs/models/operations/GetGenresLibraryRequest.md b/docs/models/operations/GetGenresLibraryRequest.md
new file mode 100644
index 00000000..59c96272
--- /dev/null
+++ b/docs/models/operations/GetGenresLibraryRequest.md
@@ -0,0 +1,8 @@
+# GetGenresLibraryRequest
+
+
+## Fields
+
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `sectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 |
\ No newline at end of file
diff --git a/docs/models/operations/GetGenresLibraryResponse.md b/docs/models/operations/GetGenresLibraryResponse.md
new file mode 100644
index 00000000..ae399767
--- /dev/null
+++ b/docs/models/operations/GetGenresLibraryResponse.md
@@ -0,0 +1,11 @@
+# GetGenresLibraryResponse
+
+
+## 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` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
+| `object` | [Optional\](../../models/operations/GetGenresLibraryResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. |
\ No newline at end of file
diff --git a/docs/models/operations/GetGenresLibraryResponseBody.md b/docs/models/operations/GetGenresLibraryResponseBody.md
new file mode 100644
index 00000000..1161bc31
--- /dev/null
+++ b/docs/models/operations/GetGenresLibraryResponseBody.md
@@ -0,0 +1,10 @@
+# GetGenresLibraryResponseBody
+
+Successful response containing media container data.
+
+
+## Fields
+
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
+| `mediaContainer` | [Optional\](../../models/operations/GetGenresLibraryMediaContainer.md) | :heavy_minus_sign: | N/A |
\ No newline at end of file
diff --git a/docs/models/operations/GetRecentlyAddedMediaContainer.md b/docs/models/operations/GetRecentlyAddedMediaContainer.md
index a97dd238..5ed42bb2 100644
--- a/docs/models/operations/GetRecentlyAddedMediaContainer.md
+++ b/docs/models/operations/GetRecentlyAddedMediaContainer.md
@@ -9,6 +9,6 @@
| `offset` | *Optional\* | :heavy_minus_sign: | N/A | |
| `totalSize` | *Optional\* | :heavy_minus_sign: | N/A | |
| `identifier` | *Optional\* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library |
-| `allowSync` | *Optional\* | :heavy_minus_sign: | N/A | |
+| `allowSync` | *Optional\* | :heavy_minus_sign: | N/A | false |
| `meta` | [Optional\](../../models/operations/Meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| |
| `metadata` | List\<[GetRecentlyAddedMetadata](../../models/operations/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | N/A | |
\ No newline at end of file
diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md
index 18b6426d..ad9d3c98 100644
--- a/docs/sdks/authentication/README.md
+++ b/docs/sdks/authentication/README.md
@@ -204,7 +204,6 @@ public class Application {
.requestBody(PostUsersSignInDataRequestBody.builder()
.login("username@email.com")
.password("password123")
- .rememberMe(false)
.verificationCode("123456")
.build())
.build();
diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md
index 298f5bd7..e35da521 100644
--- a/docs/sdks/hubs/README.md
+++ b/docs/sdks/hubs/README.md
@@ -80,7 +80,6 @@ package hello.world;
import dev.plexapi.sdk.PlexAPI;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedRequest;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedResponse;
-import dev.plexapi.sdk.models.operations.IncludeMeta;
import dev.plexapi.sdk.models.operations.Type;
import java.lang.Exception;
@@ -96,9 +95,6 @@ public class Application {
.contentDirectoryID(470161L)
.type(Type.TvShow)
.sectionID(2L)
- .includeMeta(IncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetRecentlyAddedResponse res = sdk.hubs().getRecentlyAdded()
diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md
index 5388d4ac..ccf8fde0 100644
--- a/docs/sdks/library/README.md
+++ b/docs/sdks/library/README.md
@@ -16,6 +16,8 @@ API Calls interacting with Plex Media Server Libraries
* [getLibraryItems](#getlibraryitems) - Get Library Items
* [getRefreshLibraryMetadata](#getrefreshlibrarymetadata) - Refresh Metadata Of The Library
* [getSearchLibrary](#getsearchlibrary) - Search Library
+* [getGenresLibrary](#getgenreslibrary) - Get Genres of library media
+* [getCountriesLibrary](#getcountrieslibrary) - Get Countries of library media
* [getSearchAllLibraries](#getsearchalllibraries) - Search All Libraries
* [getMetaDataByRatingKey](#getmetadatabyratingkey) - Get Metadata by RatingKey
* [getMetadataChildren](#getmetadatachildren) - Get Items Children
@@ -89,7 +91,6 @@ import dev.plexapi.sdk.models.errors.GetRecentlyAddedLibraryBadRequest;
import dev.plexapi.sdk.models.errors.GetRecentlyAddedLibraryUnauthorized;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryRequest;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryResponse;
-import dev.plexapi.sdk.models.operations.QueryParamIncludeMeta;
import dev.plexapi.sdk.models.operations.QueryParamType;
import java.lang.Exception;
import java.util.List;
@@ -119,9 +120,6 @@ public class Application {
16L,
17L))
.sectionID(2L)
- .includeMeta(QueryParamIncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetRecentlyAddedLibraryResponse res = sdk.library().getRecentlyAddedLibrary()
@@ -381,11 +379,9 @@ package hello.world;
import dev.plexapi.sdk.PlexAPI;
import dev.plexapi.sdk.models.errors.GetLibraryItemsBadRequest;
import dev.plexapi.sdk.models.errors.GetLibraryItemsUnauthorized;
-import dev.plexapi.sdk.models.operations.GetLibraryItemsQueryParamIncludeMeta;
import dev.plexapi.sdk.models.operations.GetLibraryItemsQueryParamType;
import dev.plexapi.sdk.models.operations.GetLibraryItemsRequest;
import dev.plexapi.sdk.models.operations.GetLibraryItemsResponse;
-import dev.plexapi.sdk.models.operations.IncludeGuids;
import dev.plexapi.sdk.models.operations.Tag;
import java.lang.Exception;
@@ -400,11 +396,7 @@ public class Application {
GetLibraryItemsRequest req = GetLibraryItemsRequest.builder()
.tag(Tag.EDITION)
.sectionKey(9518)
- .includeGuids(IncludeGuids.Enable)
.type(GetLibraryItemsQueryParamType.TvShow)
- .includeMeta(GetLibraryItemsQueryParamIncludeMeta.Enable)
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetLibraryItemsResponse res = sdk.library().getLibraryItems()
@@ -563,6 +555,112 @@ public class Application {
| models/errors/GetSearchLibraryUnauthorized | 401 | application/json |
| models/errors/SDKError | 4XX, 5XX | \*/\* |
+## getGenresLibrary
+
+Retrieves a list of all the genres that are found for the media in this library.
+
+
+### Example Usage
+
+```java
+package hello.world;
+
+import dev.plexapi.sdk.PlexAPI;
+import dev.plexapi.sdk.models.errors.GetGenresLibraryBadRequest;
+import dev.plexapi.sdk.models.errors.GetGenresLibraryUnauthorized;
+import dev.plexapi.sdk.models.operations.GetGenresLibraryResponse;
+import java.lang.Exception;
+
+public class Application {
+
+ public static void main(String[] args) throws GetGenresLibraryBadRequest, GetGenresLibraryUnauthorized, Exception {
+
+ PlexAPI sdk = PlexAPI.builder()
+ .accessToken("")
+ .build();
+
+ GetGenresLibraryResponse res = sdk.library().getGenresLibrary()
+ .sectionKey(9518)
+ .call();
+
+ if (res.object().isPresent()) {
+ // handle response
+ }
+ }
+}
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `sectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 |
+
+### Response
+
+**[GetGenresLibraryResponse](../../models/operations/GetGenresLibraryResponse.md)**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ |
+| models/errors/GetGenresLibraryBadRequest | 400 | application/json |
+| models/errors/GetGenresLibraryUnauthorized | 401 | application/json |
+| models/errors/SDKError | 4XX, 5XX | \*/\* |
+
+## getCountriesLibrary
+
+Retrieves a list of all the countries that are found for the media in this library.
+
+
+### Example Usage
+
+```java
+package hello.world;
+
+import dev.plexapi.sdk.PlexAPI;
+import dev.plexapi.sdk.models.errors.GetCountriesLibraryBadRequest;
+import dev.plexapi.sdk.models.errors.GetCountriesLibraryUnauthorized;
+import dev.plexapi.sdk.models.operations.GetCountriesLibraryResponse;
+import java.lang.Exception;
+
+public class Application {
+
+ public static void main(String[] args) throws GetCountriesLibraryBadRequest, GetCountriesLibraryUnauthorized, Exception {
+
+ PlexAPI sdk = PlexAPI.builder()
+ .accessToken("")
+ .build();
+
+ GetCountriesLibraryResponse res = sdk.library().getCountriesLibrary()
+ .sectionKey(9518)
+ .call();
+
+ if (res.object().isPresent()) {
+ // handle response
+ }
+ }
+}
+```
+
+### Parameters
+
+| Parameter | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `sectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 |
+
+### Response
+
+**[GetCountriesLibraryResponse](../../models/operations/GetCountriesLibraryResponse.md)**
+
+### Errors
+
+| Error Type | Status Code | Content Type |
+| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- |
+| models/errors/GetCountriesLibraryBadRequest | 400 | application/json |
+| models/errors/GetCountriesLibraryUnauthorized | 401 | application/json |
+| models/errors/SDKError | 4XX, 5XX | \*/\* |
+
## getSearchAllLibraries
Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.
@@ -578,8 +676,6 @@ import dev.plexapi.sdk.models.errors.GetSearchAllLibrariesBadRequest;
import dev.plexapi.sdk.models.errors.GetSearchAllLibrariesUnauthorized;
import dev.plexapi.sdk.models.operations.GetSearchAllLibrariesRequest;
import dev.plexapi.sdk.models.operations.GetSearchAllLibrariesResponse;
-import dev.plexapi.sdk.models.operations.QueryParamIncludeCollections;
-import dev.plexapi.sdk.models.operations.QueryParamIncludeExternalMedia;
import dev.plexapi.sdk.models.operations.SearchTypes;
import java.lang.Exception;
import java.util.List;
@@ -597,8 +693,6 @@ public class Application {
.clientID("3381b62b-9ab7-4e37-827b-203e9809eb58")
.searchTypes(List.of(
SearchTypes.PEOPLE))
- .includeCollections(QueryParamIncludeCollections.Enable)
- .includeExternalMedia(QueryParamIncludeExternalMedia.Enable)
.build();
GetSearchAllLibrariesResponse res = sdk.library().getSearchAllLibraries()
diff --git a/docs/sdks/plex/README.md b/docs/sdks/plex/README.md
index 7e6aaabd..d698c7be 100644
--- a/docs/sdks/plex/README.md
+++ b/docs/sdks/plex/README.md
@@ -299,7 +299,6 @@ public class Application {
GetPinRequest req = GetPinRequest.builder()
.clientID("3381b62b-9ab7-4e37-827b-203e9809eb58")
- .strong(false)
.clientName("Plex for Roku")
.deviceNickname("Roku 3")
.clientVersion("2.4.1")
diff --git a/docs/sdks/watchlist/README.md b/docs/sdks/watchlist/README.md
index 0dbafce7..4b643056 100644
--- a/docs/sdks/watchlist/README.md
+++ b/docs/sdks/watchlist/README.md
@@ -38,8 +38,6 @@ public class Application {
GetWatchListRequest req = GetWatchListRequest.builder()
.filter(Filter.AVAILABLE)
.xPlexToken("CV5xoxjTpFKUzBTShsaf")
- .xPlexContainerStart(0)
- .xPlexContainerSize(50)
.build();
GetWatchListResponse res = sdk.watchlist().getWatchList()
diff --git a/src/main/java/dev/plexapi/sdk/Library.java b/src/main/java/dev/plexapi/sdk/Library.java
index afcb0c9a..58a6f900 100644
--- a/src/main/java/dev/plexapi/sdk/Library.java
+++ b/src/main/java/dev/plexapi/sdk/Library.java
@@ -9,8 +9,12 @@ import dev.plexapi.sdk.models.errors.DeleteLibraryBadRequest;
import dev.plexapi.sdk.models.errors.DeleteLibraryUnauthorized;
import dev.plexapi.sdk.models.errors.GetAllLibrariesBadRequest;
import dev.plexapi.sdk.models.errors.GetAllLibrariesUnauthorized;
+import dev.plexapi.sdk.models.errors.GetCountriesLibraryBadRequest;
+import dev.plexapi.sdk.models.errors.GetCountriesLibraryUnauthorized;
import dev.plexapi.sdk.models.errors.GetFileHashBadRequest;
import dev.plexapi.sdk.models.errors.GetFileHashUnauthorized;
+import dev.plexapi.sdk.models.errors.GetGenresLibraryBadRequest;
+import dev.plexapi.sdk.models.errors.GetGenresLibraryUnauthorized;
import dev.plexapi.sdk.models.errors.GetLibraryDetailsBadRequest;
import dev.plexapi.sdk.models.errors.GetLibraryDetailsUnauthorized;
import dev.plexapi.sdk.models.errors.GetLibraryItemsBadRequest;
@@ -39,9 +43,17 @@ import dev.plexapi.sdk.models.operations.Force;
import dev.plexapi.sdk.models.operations.GetAllLibrariesRequestBuilder;
import dev.plexapi.sdk.models.operations.GetAllLibrariesResponse;
import dev.plexapi.sdk.models.operations.GetAllLibrariesResponseBody;
+import dev.plexapi.sdk.models.operations.GetCountriesLibraryRequest;
+import dev.plexapi.sdk.models.operations.GetCountriesLibraryRequestBuilder;
+import dev.plexapi.sdk.models.operations.GetCountriesLibraryResponse;
+import dev.plexapi.sdk.models.operations.GetCountriesLibraryResponseBody;
import dev.plexapi.sdk.models.operations.GetFileHashRequest;
import dev.plexapi.sdk.models.operations.GetFileHashRequestBuilder;
import dev.plexapi.sdk.models.operations.GetFileHashResponse;
+import dev.plexapi.sdk.models.operations.GetGenresLibraryRequest;
+import dev.plexapi.sdk.models.operations.GetGenresLibraryRequestBuilder;
+import dev.plexapi.sdk.models.operations.GetGenresLibraryResponse;
+import dev.plexapi.sdk.models.operations.GetGenresLibraryResponseBody;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsRequest;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsRequestBuilder;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsResponse;
@@ -113,6 +125,8 @@ public class Library implements
MethodCallGetLibraryItems,
MethodCallGetRefreshLibraryMetadata,
MethodCallGetSearchLibrary,
+ MethodCallGetGenresLibrary,
+ MethodCallGetCountriesLibrary,
MethodCallGetSearchAllLibraries,
MethodCallGetMetaDataByRatingKey,
MethodCallGetMetadataChildren,
@@ -1697,6 +1711,344 @@ public class Library implements
+ /**
+ * Get Genres of library media
+ * Retrieves a list of all the genres that are found for the media in this library.
+ *
+ * @return The call builder
+ */
+ public GetGenresLibraryRequestBuilder getGenresLibrary() {
+ return new GetGenresLibraryRequestBuilder(this);
+ }
+
+ /**
+ * Get Genres of library media
+ * Retrieves a list of all the genres that are found for the media in this library.
+ *
+ * @param sectionKey The unique key of the Plex library.
+ Note: This is unique in the context of the Plex server.
+
+ * @return The response from the API call
+ * @throws Exception if the API call fails
+ */
+ public GetGenresLibraryResponse getGenresLibrary(
+ int sectionKey) throws Exception {
+ GetGenresLibraryRequest request =
+ GetGenresLibraryRequest
+ .builder()
+ .sectionKey(sectionKey)
+ .build();
+
+ String _baseUrl = Utils.templateUrl(
+ this.sdkConfiguration.serverUrl, this.sdkConfiguration.getServerVariableDefaults());
+ String _url = Utils.generateURL(
+ GetGenresLibraryRequest.class,
+ _baseUrl,
+ "/library/sections/{sectionKey}/genre",
+ request, null);
+
+ HTTPRequest _req = new HTTPRequest(_url, "GET");
+ _req.addHeader("Accept", "application/json")
+ .addHeader("user-agent",
+ SDKConfiguration.USER_AGENT);
+
+ Optional _hookSecuritySource = this.sdkConfiguration.securitySource();
+ Utils.configureSecurity(_req,
+ this.sdkConfiguration.securitySource.getSecurity());
+ HTTPClient _client = this.sdkConfiguration.defaultClient;
+ HttpRequest _r =
+ sdkConfiguration.hooks()
+ .beforeRequest(
+ new BeforeRequestContextImpl(
+ "get-genres-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ _req.build());
+ HttpResponse _httpRes;
+ try {
+ _httpRes = _client.send(_r);
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "404", "4XX", "5XX")) {
+ _httpRes = sdkConfiguration.hooks()
+ .afterError(
+ new AfterErrorContextImpl(
+ "get-genres-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ Optional.of(_httpRes),
+ Optional.empty());
+ } else {
+ _httpRes = sdkConfiguration.hooks()
+ .afterSuccess(
+ new AfterSuccessContextImpl(
+ "get-genres-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ _httpRes);
+ }
+ } catch (Exception _e) {
+ _httpRes = sdkConfiguration.hooks()
+ .afterError(
+ new AfterErrorContextImpl(
+ "get-genres-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ Optional.empty(),
+ Optional.of(_e));
+ }
+ String _contentType = _httpRes
+ .headers()
+ .firstValue("Content-Type")
+ .orElse("application/octet-stream");
+ GetGenresLibraryResponse.Builder _resBuilder =
+ GetGenresLibraryResponse
+ .builder()
+ .contentType(_contentType)
+ .statusCode(_httpRes.statusCode())
+ .rawResponse(_httpRes);
+
+ GetGenresLibraryResponse _res = _resBuilder.build();
+
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetGenresLibraryResponseBody _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _res.withObject(Optional.ofNullable(_out));
+ return _res;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetGenresLibraryBadRequest _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _out.withRawResponse(Optional.ofNullable(_httpRes));
+
+ throw _out;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetGenresLibraryUnauthorized _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _out.withRawResponse(Optional.ofNullable(_httpRes));
+
+ throw _out;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "404", "4XX")) {
+ // no content
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "API error occurred",
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
+ // no content
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "API error occurred",
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected status code received: " + _httpRes.statusCode(),
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+
+
+
+ /**
+ * Get Countries of library media
+ * Retrieves a list of all the countries that are found for the media in this library.
+ *
+ * @return The call builder
+ */
+ public GetCountriesLibraryRequestBuilder getCountriesLibrary() {
+ return new GetCountriesLibraryRequestBuilder(this);
+ }
+
+ /**
+ * Get Countries of library media
+ * Retrieves a list of all the countries that are found for the media in this library.
+ *
+ * @param sectionKey The unique key of the Plex library.
+ Note: This is unique in the context of the Plex server.
+
+ * @return The response from the API call
+ * @throws Exception if the API call fails
+ */
+ public GetCountriesLibraryResponse getCountriesLibrary(
+ int sectionKey) throws Exception {
+ GetCountriesLibraryRequest request =
+ GetCountriesLibraryRequest
+ .builder()
+ .sectionKey(sectionKey)
+ .build();
+
+ String _baseUrl = Utils.templateUrl(
+ this.sdkConfiguration.serverUrl, this.sdkConfiguration.getServerVariableDefaults());
+ String _url = Utils.generateURL(
+ GetCountriesLibraryRequest.class,
+ _baseUrl,
+ "/library/sections/{sectionKey}/country",
+ request, null);
+
+ HTTPRequest _req = new HTTPRequest(_url, "GET");
+ _req.addHeader("Accept", "application/json")
+ .addHeader("user-agent",
+ SDKConfiguration.USER_AGENT);
+
+ Optional _hookSecuritySource = this.sdkConfiguration.securitySource();
+ Utils.configureSecurity(_req,
+ this.sdkConfiguration.securitySource.getSecurity());
+ HTTPClient _client = this.sdkConfiguration.defaultClient;
+ HttpRequest _r =
+ sdkConfiguration.hooks()
+ .beforeRequest(
+ new BeforeRequestContextImpl(
+ "get-countries-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ _req.build());
+ HttpResponse _httpRes;
+ try {
+ _httpRes = _client.send(_r);
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "404", "4XX", "5XX")) {
+ _httpRes = sdkConfiguration.hooks()
+ .afterError(
+ new AfterErrorContextImpl(
+ "get-countries-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ Optional.of(_httpRes),
+ Optional.empty());
+ } else {
+ _httpRes = sdkConfiguration.hooks()
+ .afterSuccess(
+ new AfterSuccessContextImpl(
+ "get-countries-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ _httpRes);
+ }
+ } catch (Exception _e) {
+ _httpRes = sdkConfiguration.hooks()
+ .afterError(
+ new AfterErrorContextImpl(
+ "get-countries-library",
+ Optional.of(List.of()),
+ _hookSecuritySource),
+ Optional.empty(),
+ Optional.of(_e));
+ }
+ String _contentType = _httpRes
+ .headers()
+ .firstValue("Content-Type")
+ .orElse("application/octet-stream");
+ GetCountriesLibraryResponse.Builder _resBuilder =
+ GetCountriesLibraryResponse
+ .builder()
+ .contentType(_contentType)
+ .statusCode(_httpRes.statusCode())
+ .rawResponse(_httpRes);
+
+ GetCountriesLibraryResponse _res = _resBuilder.build();
+
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetCountriesLibraryResponseBody _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _res.withObject(Optional.ofNullable(_out));
+ return _res;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetCountriesLibraryBadRequest _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _out.withRawResponse(Optional.ofNullable(_httpRes));
+
+ throw _out;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
+ if (Utils.contentTypeMatches(_contentType, "application/json")) {
+ GetCountriesLibraryUnauthorized _out = Utils.mapper().readValue(
+ Utils.toUtf8AndClose(_httpRes.body()),
+ new TypeReference() {});
+ _out.withRawResponse(Optional.ofNullable(_httpRes));
+
+ throw _out;
+ } else {
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected content-type received: " + _contentType,
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "404", "4XX")) {
+ // no content
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "API error occurred",
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
+ // no content
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "API error occurred",
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+ throw new SDKError(
+ _httpRes,
+ _httpRes.statusCode(),
+ "Unexpected status code received: " + _httpRes.statusCode(),
+ Utils.extractByteArrayFromBody(_httpRes));
+ }
+
+
+
/**
* Search All Libraries
* Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.
diff --git a/src/main/java/dev/plexapi/sdk/SDKConfiguration.java b/src/main/java/dev/plexapi/sdk/SDKConfiguration.java
index e160248d..de1bf519 100644
--- a/src/main/java/dev/plexapi/sdk/SDKConfiguration.java
+++ b/src/main/java/dev/plexapi/sdk/SDKConfiguration.java
@@ -43,8 +43,8 @@ class SDKConfiguration {
} };
private static final String LANGUAGE = "java";
public static final String OPENAPI_DOC_VERSION = "0.0.3";
- public static final String SDK_VERSION = "0.11.3";
- public static final String GEN_VERSION = "2.495.1";
+ public static final String SDK_VERSION = "0.11.4";
+ public static final String GEN_VERSION = "2.503.2";
private static final String BASE_PACKAGE = "dev.plexapi.sdk";
public static final String USER_AGENT =
String.format("speakeasy-sdk/%s %s %s %s %s",
diff --git a/src/main/java/dev/plexapi/sdk/Updater.java b/src/main/java/dev/plexapi/sdk/Updater.java
index ed0a40f9..59b3b145 100644
--- a/src/main/java/dev/plexapi/sdk/Updater.java
+++ b/src/main/java/dev/plexapi/sdk/Updater.java
@@ -526,7 +526,7 @@ public class Updater implements
Utils.extractByteArrayFromBody(_httpRes));
}
}
- if (Utils.statusCodeMatches(_httpRes.statusCode(), "500", "5XX")) {
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
// no content
throw new SDKError(
_httpRes,
@@ -534,7 +534,7 @@ public class Updater implements
"API error occurred",
Utils.extractByteArrayFromBody(_httpRes));
}
- if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
+ if (Utils.statusCodeMatches(_httpRes.statusCode(), "500", "5XX")) {
// no content
throw new SDKError(
_httpRes,
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryBadRequest.java b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryBadRequest.java
new file mode 100644
index 00000000..9bce461d
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryBadRequest.java
@@ -0,0 +1,173 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetCountriesLibraryBadRequest - Bad Request - A parameter was not specified, or was specified incorrectly.
+ */
+@SuppressWarnings("serial")
+public class GetCountriesLibraryBadRequest extends RuntimeException {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("errors")
+ private Optional extends List> errors;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("RawResponse")
+ private Optional extends HttpResponse> rawResponse;
+
+ @JsonCreator
+ public GetCountriesLibraryBadRequest(
+ @JsonProperty("errors") Optional extends List> errors,
+ @JsonProperty("RawResponse") Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(errors, "errors");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.errors = errors;
+ this.rawResponse = rawResponse;
+ }
+
+ public GetCountriesLibraryBadRequest() {
+ this(Optional.empty(), Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ public Optional> errors(){
+ return (Optional>) errors;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @SuppressWarnings("unchecked")
+ public Optional> rawResponse(){
+ return (Optional>) rawResponse;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryBadRequest withErrors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public GetCountriesLibraryBadRequest withErrors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetCountriesLibraryBadRequest withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetCountriesLibraryBadRequest withRawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryBadRequest other = (GetCountriesLibraryBadRequest) o;
+ return
+ Objects.deepEquals(this.errors, other.errors) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse);
+ }
+
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(
+ errors,
+ rawResponse);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryBadRequest.class,
+ "errors", errors,
+ "rawResponse", rawResponse);
+ }
+
+ public final static class Builder {
+
+ private Optional extends List> errors = Optional.empty();
+
+ private Optional extends HttpResponse> rawResponse;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder errors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public Builder errors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ public GetCountriesLibraryBadRequest build() {
+ return new GetCountriesLibraryBadRequest(
+ errors,
+ rawResponse);
+ }
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryErrors.java
new file mode 100644
index 00000000..b68d534b
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryErrors.java
@@ -0,0 +1,194 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetCountriesLibraryErrors {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("code")
+ private Optional code;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("message")
+ private Optional message;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("status")
+ private Optional status;
+
+ @JsonCreator
+ public GetCountriesLibraryErrors(
+ @JsonProperty("code") Optional code,
+ @JsonProperty("message") Optional message,
+ @JsonProperty("status") Optional status) {
+ Utils.checkNotNull(code, "code");
+ Utils.checkNotNull(message, "message");
+ Utils.checkNotNull(status, "status");
+ this.code = code;
+ this.message = message;
+ this.status = status;
+ }
+
+ public GetCountriesLibraryErrors() {
+ this(Optional.empty(), Optional.empty(), Optional.empty());
+ }
+
+ @JsonIgnore
+ public Optional code() {
+ return code;
+ }
+
+ @JsonIgnore
+ public Optional message() {
+ return message;
+ }
+
+ @JsonIgnore
+ public Optional status() {
+ return status;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryErrors withCode(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public GetCountriesLibraryErrors withCode(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public GetCountriesLibraryErrors withMessage(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public GetCountriesLibraryErrors withMessage(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public GetCountriesLibraryErrors withStatus(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public GetCountriesLibraryErrors withStatus(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryErrors other = (GetCountriesLibraryErrors) o;
+ return
+ Objects.deepEquals(this.code, other.code) &&
+ Objects.deepEquals(this.message, other.message) &&
+ Objects.deepEquals(this.status, other.status);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ code,
+ message,
+ status);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryErrors.class,
+ "code", code,
+ "message", message,
+ "status", status);
+ }
+
+ public final static class Builder {
+
+ private Optional code = Optional.empty();
+
+ private Optional message = Optional.empty();
+
+ private Optional status = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder code(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public Builder code(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public Builder message(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public Builder message(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public Builder status(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public Builder status(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ public GetCountriesLibraryErrors build() {
+ return new GetCountriesLibraryErrors(
+ code,
+ message,
+ status);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryLibraryErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryLibraryErrors.java
new file mode 100644
index 00000000..26990d9d
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryLibraryErrors.java
@@ -0,0 +1,194 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetCountriesLibraryLibraryErrors {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("code")
+ private Optional code;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("message")
+ private Optional message;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("status")
+ private Optional status;
+
+ @JsonCreator
+ public GetCountriesLibraryLibraryErrors(
+ @JsonProperty("code") Optional code,
+ @JsonProperty("message") Optional message,
+ @JsonProperty("status") Optional status) {
+ Utils.checkNotNull(code, "code");
+ Utils.checkNotNull(message, "message");
+ Utils.checkNotNull(status, "status");
+ this.code = code;
+ this.message = message;
+ this.status = status;
+ }
+
+ public GetCountriesLibraryLibraryErrors() {
+ this(Optional.empty(), Optional.empty(), Optional.empty());
+ }
+
+ @JsonIgnore
+ public Optional code() {
+ return code;
+ }
+
+ @JsonIgnore
+ public Optional message() {
+ return message;
+ }
+
+ @JsonIgnore
+ public Optional status() {
+ return status;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryLibraryErrors withCode(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors withCode(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors withMessage(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors withMessage(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors withStatus(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors withStatus(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryLibraryErrors other = (GetCountriesLibraryLibraryErrors) o;
+ return
+ Objects.deepEquals(this.code, other.code) &&
+ Objects.deepEquals(this.message, other.message) &&
+ Objects.deepEquals(this.status, other.status);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ code,
+ message,
+ status);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryLibraryErrors.class,
+ "code", code,
+ "message", message,
+ "status", status);
+ }
+
+ public final static class Builder {
+
+ private Optional code = Optional.empty();
+
+ private Optional message = Optional.empty();
+
+ private Optional status = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder code(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public Builder code(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public Builder message(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public Builder message(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public Builder status(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public Builder status(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ public GetCountriesLibraryLibraryErrors build() {
+ return new GetCountriesLibraryLibraryErrors(
+ code,
+ message,
+ status);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryUnauthorized.java b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryUnauthorized.java
new file mode 100644
index 00000000..4120d84a
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetCountriesLibraryUnauthorized.java
@@ -0,0 +1,173 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetCountriesLibraryUnauthorized - Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
+ */
+@SuppressWarnings("serial")
+public class GetCountriesLibraryUnauthorized extends RuntimeException {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("errors")
+ private Optional extends List> errors;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("RawResponse")
+ private Optional extends HttpResponse> rawResponse;
+
+ @JsonCreator
+ public GetCountriesLibraryUnauthorized(
+ @JsonProperty("errors") Optional extends List> errors,
+ @JsonProperty("RawResponse") Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(errors, "errors");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.errors = errors;
+ this.rawResponse = rawResponse;
+ }
+
+ public GetCountriesLibraryUnauthorized() {
+ this(Optional.empty(), Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ public Optional> errors(){
+ return (Optional>) errors;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @SuppressWarnings("unchecked")
+ public Optional> rawResponse(){
+ return (Optional>) rawResponse;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryUnauthorized withErrors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public GetCountriesLibraryUnauthorized withErrors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetCountriesLibraryUnauthorized withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetCountriesLibraryUnauthorized withRawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryUnauthorized other = (GetCountriesLibraryUnauthorized) o;
+ return
+ Objects.deepEquals(this.errors, other.errors) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse);
+ }
+
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(
+ errors,
+ rawResponse);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryUnauthorized.class,
+ "errors", errors,
+ "rawResponse", rawResponse);
+ }
+
+ public final static class Builder {
+
+ private Optional extends List> errors = Optional.empty();
+
+ private Optional extends HttpResponse> rawResponse;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder errors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public Builder errors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ public GetCountriesLibraryUnauthorized build() {
+ return new GetCountriesLibraryUnauthorized(
+ errors,
+ rawResponse);
+ }
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryBadRequest.java b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryBadRequest.java
new file mode 100644
index 00000000..b5a786df
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryBadRequest.java
@@ -0,0 +1,173 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetGenresLibraryBadRequest - Bad Request - A parameter was not specified, or was specified incorrectly.
+ */
+@SuppressWarnings("serial")
+public class GetGenresLibraryBadRequest extends RuntimeException {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("errors")
+ private Optional extends List> errors;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("RawResponse")
+ private Optional extends HttpResponse> rawResponse;
+
+ @JsonCreator
+ public GetGenresLibraryBadRequest(
+ @JsonProperty("errors") Optional extends List> errors,
+ @JsonProperty("RawResponse") Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(errors, "errors");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.errors = errors;
+ this.rawResponse = rawResponse;
+ }
+
+ public GetGenresLibraryBadRequest() {
+ this(Optional.empty(), Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ public Optional> errors(){
+ return (Optional>) errors;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @SuppressWarnings("unchecked")
+ public Optional> rawResponse(){
+ return (Optional>) rawResponse;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryBadRequest withErrors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public GetGenresLibraryBadRequest withErrors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetGenresLibraryBadRequest withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetGenresLibraryBadRequest withRawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryBadRequest other = (GetGenresLibraryBadRequest) o;
+ return
+ Objects.deepEquals(this.errors, other.errors) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse);
+ }
+
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(
+ errors,
+ rawResponse);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryBadRequest.class,
+ "errors", errors,
+ "rawResponse", rawResponse);
+ }
+
+ public final static class Builder {
+
+ private Optional extends List> errors = Optional.empty();
+
+ private Optional extends HttpResponse> rawResponse;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder errors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public Builder errors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ public GetGenresLibraryBadRequest build() {
+ return new GetGenresLibraryBadRequest(
+ errors,
+ rawResponse);
+ }
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryErrors.java
new file mode 100644
index 00000000..ed9d6c9e
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryErrors.java
@@ -0,0 +1,194 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetGenresLibraryErrors {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("code")
+ private Optional code;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("message")
+ private Optional message;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("status")
+ private Optional status;
+
+ @JsonCreator
+ public GetGenresLibraryErrors(
+ @JsonProperty("code") Optional code,
+ @JsonProperty("message") Optional message,
+ @JsonProperty("status") Optional status) {
+ Utils.checkNotNull(code, "code");
+ Utils.checkNotNull(message, "message");
+ Utils.checkNotNull(status, "status");
+ this.code = code;
+ this.message = message;
+ this.status = status;
+ }
+
+ public GetGenresLibraryErrors() {
+ this(Optional.empty(), Optional.empty(), Optional.empty());
+ }
+
+ @JsonIgnore
+ public Optional code() {
+ return code;
+ }
+
+ @JsonIgnore
+ public Optional message() {
+ return message;
+ }
+
+ @JsonIgnore
+ public Optional status() {
+ return status;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryErrors withCode(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public GetGenresLibraryErrors withCode(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public GetGenresLibraryErrors withMessage(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public GetGenresLibraryErrors withMessage(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public GetGenresLibraryErrors withStatus(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public GetGenresLibraryErrors withStatus(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryErrors other = (GetGenresLibraryErrors) o;
+ return
+ Objects.deepEquals(this.code, other.code) &&
+ Objects.deepEquals(this.message, other.message) &&
+ Objects.deepEquals(this.status, other.status);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ code,
+ message,
+ status);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryErrors.class,
+ "code", code,
+ "message", message,
+ "status", status);
+ }
+
+ public final static class Builder {
+
+ private Optional code = Optional.empty();
+
+ private Optional message = Optional.empty();
+
+ private Optional status = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder code(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public Builder code(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public Builder message(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public Builder message(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public Builder status(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public Builder status(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ public GetGenresLibraryErrors build() {
+ return new GetGenresLibraryErrors(
+ code,
+ message,
+ status);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryLibraryErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryLibraryErrors.java
new file mode 100644
index 00000000..9ff449f1
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryLibraryErrors.java
@@ -0,0 +1,194 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetGenresLibraryLibraryErrors {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("code")
+ private Optional code;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("message")
+ private Optional message;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("status")
+ private Optional status;
+
+ @JsonCreator
+ public GetGenresLibraryLibraryErrors(
+ @JsonProperty("code") Optional code,
+ @JsonProperty("message") Optional message,
+ @JsonProperty("status") Optional status) {
+ Utils.checkNotNull(code, "code");
+ Utils.checkNotNull(message, "message");
+ Utils.checkNotNull(status, "status");
+ this.code = code;
+ this.message = message;
+ this.status = status;
+ }
+
+ public GetGenresLibraryLibraryErrors() {
+ this(Optional.empty(), Optional.empty(), Optional.empty());
+ }
+
+ @JsonIgnore
+ public Optional code() {
+ return code;
+ }
+
+ @JsonIgnore
+ public Optional message() {
+ return message;
+ }
+
+ @JsonIgnore
+ public Optional status() {
+ return status;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryLibraryErrors withCode(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors withCode(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors withMessage(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors withMessage(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors withStatus(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors withStatus(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryLibraryErrors other = (GetGenresLibraryLibraryErrors) o;
+ return
+ Objects.deepEquals(this.code, other.code) &&
+ Objects.deepEquals(this.message, other.message) &&
+ Objects.deepEquals(this.status, other.status);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ code,
+ message,
+ status);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryLibraryErrors.class,
+ "code", code,
+ "message", message,
+ "status", status);
+ }
+
+ public final static class Builder {
+
+ private Optional code = Optional.empty();
+
+ private Optional message = Optional.empty();
+
+ private Optional status = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder code(int code) {
+ Utils.checkNotNull(code, "code");
+ this.code = Optional.ofNullable(code);
+ return this;
+ }
+
+ public Builder code(Optional code) {
+ Utils.checkNotNull(code, "code");
+ this.code = code;
+ return this;
+ }
+
+ public Builder message(String message) {
+ Utils.checkNotNull(message, "message");
+ this.message = Optional.ofNullable(message);
+ return this;
+ }
+
+ public Builder message(Optional message) {
+ Utils.checkNotNull(message, "message");
+ this.message = message;
+ return this;
+ }
+
+ public Builder status(int status) {
+ Utils.checkNotNull(status, "status");
+ this.status = Optional.ofNullable(status);
+ return this;
+ }
+
+ public Builder status(Optional status) {
+ Utils.checkNotNull(status, "status");
+ this.status = status;
+ return this;
+ }
+
+ public GetGenresLibraryLibraryErrors build() {
+ return new GetGenresLibraryLibraryErrors(
+ code,
+ message,
+ status);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryUnauthorized.java b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryUnauthorized.java
new file mode 100644
index 00000000..60062f94
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/errors/GetGenresLibraryUnauthorized.java
@@ -0,0 +1,173 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.errors;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetGenresLibraryUnauthorized - Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
+ */
+@SuppressWarnings("serial")
+public class GetGenresLibraryUnauthorized extends RuntimeException {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("errors")
+ private Optional extends List> errors;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("RawResponse")
+ private Optional extends HttpResponse> rawResponse;
+
+ @JsonCreator
+ public GetGenresLibraryUnauthorized(
+ @JsonProperty("errors") Optional extends List> errors,
+ @JsonProperty("RawResponse") Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(errors, "errors");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.errors = errors;
+ this.rawResponse = rawResponse;
+ }
+
+ public GetGenresLibraryUnauthorized() {
+ this(Optional.empty(), Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ public Optional> errors(){
+ return (Optional>) errors;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @SuppressWarnings("unchecked")
+ public Optional> rawResponse(){
+ return (Optional>) rawResponse;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryUnauthorized withErrors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public GetGenresLibraryUnauthorized withErrors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetGenresLibraryUnauthorized withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetGenresLibraryUnauthorized withRawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryUnauthorized other = (GetGenresLibraryUnauthorized) o;
+ return
+ Objects.deepEquals(this.errors, other.errors) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse);
+ }
+
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(
+ errors,
+ rawResponse);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryUnauthorized.class,
+ "errors", errors,
+ "rawResponse", rawResponse);
+ }
+
+ public final static class Builder {
+
+ private Optional extends List> errors = Optional.empty();
+
+ private Optional extends HttpResponse> rawResponse;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder errors(List errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = Optional.ofNullable(errors);
+ return this;
+ }
+
+ public Builder errors(Optional extends List> errors) {
+ Utils.checkNotNull(errors, "errors");
+ this.errors = errors;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = Optional.ofNullable(rawResponse);
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(Optional extends HttpResponse> rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ public GetGenresLibraryUnauthorized build() {
+ return new GetGenresLibraryUnauthorized(
+ errors,
+ rawResponse);
+ }
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryDirectory.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryDirectory.java
new file mode 100644
index 00000000..aefca01d
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryDirectory.java
@@ -0,0 +1,147 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+
+
+public class GetCountriesLibraryDirectory {
+
+ @JsonProperty("fastKey")
+ private String fastKey;
+
+ @JsonProperty("key")
+ private String key;
+
+ @JsonProperty("title")
+ private String title;
+
+ @JsonCreator
+ public GetCountriesLibraryDirectory(
+ @JsonProperty("fastKey") String fastKey,
+ @JsonProperty("key") String key,
+ @JsonProperty("title") String title) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ Utils.checkNotNull(key, "key");
+ Utils.checkNotNull(title, "title");
+ this.fastKey = fastKey;
+ this.key = key;
+ this.title = title;
+ }
+
+ @JsonIgnore
+ public String fastKey() {
+ return fastKey;
+ }
+
+ @JsonIgnore
+ public String key() {
+ return key;
+ }
+
+ @JsonIgnore
+ public String title() {
+ return title;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryDirectory withFastKey(String fastKey) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ this.fastKey = fastKey;
+ return this;
+ }
+
+ public GetCountriesLibraryDirectory withKey(String key) {
+ Utils.checkNotNull(key, "key");
+ this.key = key;
+ return this;
+ }
+
+ public GetCountriesLibraryDirectory withTitle(String title) {
+ Utils.checkNotNull(title, "title");
+ this.title = title;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryDirectory other = (GetCountriesLibraryDirectory) o;
+ return
+ Objects.deepEquals(this.fastKey, other.fastKey) &&
+ Objects.deepEquals(this.key, other.key) &&
+ Objects.deepEquals(this.title, other.title);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ fastKey,
+ key,
+ title);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryDirectory.class,
+ "fastKey", fastKey,
+ "key", key,
+ "title", title);
+ }
+
+ public final static class Builder {
+
+ private String fastKey;
+
+ private String key;
+
+ private String title;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder fastKey(String fastKey) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ this.fastKey = fastKey;
+ return this;
+ }
+
+ public Builder key(String key) {
+ Utils.checkNotNull(key, "key");
+ this.key = key;
+ return this;
+ }
+
+ public Builder title(String title) {
+ Utils.checkNotNull(title, "title");
+ this.title = title;
+ return this;
+ }
+
+ public GetCountriesLibraryDirectory build() {
+ return new GetCountriesLibraryDirectory(
+ fastKey,
+ key,
+ title);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryMediaContainer.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryMediaContainer.java
new file mode 100644
index 00000000..3e12a572
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryMediaContainer.java
@@ -0,0 +1,560 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Boolean;
+import java.lang.Double;
+import java.lang.Integer;
+import java.lang.Long;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetCountriesLibraryMediaContainer {
+
+ @JsonProperty("size")
+ private double size;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("offset")
+ private Optional offset;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("totalSize")
+ private Optional totalSize;
+
+ @JsonProperty("identifier")
+ private String identifier;
+
+ @JsonProperty("allowSync")
+ private boolean allowSync;
+
+ @JsonProperty("art")
+ private String art;
+
+ @JsonProperty("content")
+ private String content;
+
+ @JsonProperty("mediaTagPrefix")
+ private String mediaTagPrefix;
+
+ @JsonProperty("mediaTagVersion")
+ private long mediaTagVersion;
+
+ @JsonProperty("nocache")
+ private boolean nocache;
+
+ @JsonProperty("thumb")
+ private String thumb;
+
+ @JsonProperty("title1")
+ private String title1;
+
+ @JsonProperty("title2")
+ private String title2;
+
+ @JsonProperty("viewGroup")
+ private String viewGroup;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("Directory")
+ private Optional extends List> directory;
+
+ @JsonCreator
+ public GetCountriesLibraryMediaContainer(
+ @JsonProperty("size") double size,
+ @JsonProperty("offset") Optional offset,
+ @JsonProperty("totalSize") Optional totalSize,
+ @JsonProperty("identifier") String identifier,
+ @JsonProperty("allowSync") boolean allowSync,
+ @JsonProperty("art") String art,
+ @JsonProperty("content") String content,
+ @JsonProperty("mediaTagPrefix") String mediaTagPrefix,
+ @JsonProperty("mediaTagVersion") long mediaTagVersion,
+ @JsonProperty("nocache") boolean nocache,
+ @JsonProperty("thumb") String thumb,
+ @JsonProperty("title1") String title1,
+ @JsonProperty("title2") String title2,
+ @JsonProperty("viewGroup") String viewGroup,
+ @JsonProperty("Directory") Optional extends List> directory) {
+ Utils.checkNotNull(size, "size");
+ Utils.checkNotNull(offset, "offset");
+ Utils.checkNotNull(totalSize, "totalSize");
+ Utils.checkNotNull(identifier, "identifier");
+ Utils.checkNotNull(allowSync, "allowSync");
+ Utils.checkNotNull(art, "art");
+ Utils.checkNotNull(content, "content");
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ Utils.checkNotNull(nocache, "nocache");
+ Utils.checkNotNull(thumb, "thumb");
+ Utils.checkNotNull(title1, "title1");
+ Utils.checkNotNull(title2, "title2");
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ Utils.checkNotNull(directory, "directory");
+ this.size = size;
+ this.offset = offset;
+ this.totalSize = totalSize;
+ this.identifier = identifier;
+ this.allowSync = allowSync;
+ this.art = art;
+ this.content = content;
+ this.mediaTagPrefix = mediaTagPrefix;
+ this.mediaTagVersion = mediaTagVersion;
+ this.nocache = nocache;
+ this.thumb = thumb;
+ this.title1 = title1;
+ this.title2 = title2;
+ this.viewGroup = viewGroup;
+ this.directory = directory;
+ }
+
+ public GetCountriesLibraryMediaContainer(
+ double size,
+ String identifier,
+ boolean allowSync,
+ String art,
+ String content,
+ String mediaTagPrefix,
+ long mediaTagVersion,
+ boolean nocache,
+ String thumb,
+ String title1,
+ String title2,
+ String viewGroup) {
+ this(size, Optional.empty(), Optional.empty(), identifier, allowSync, art, content, mediaTagPrefix, mediaTagVersion, nocache, thumb, title1, title2, viewGroup, Optional.empty());
+ }
+
+ @JsonIgnore
+ public double size() {
+ return size;
+ }
+
+ @JsonIgnore
+ public Optional offset() {
+ return offset;
+ }
+
+ @JsonIgnore
+ public Optional totalSize() {
+ return totalSize;
+ }
+
+ @JsonIgnore
+ public String identifier() {
+ return identifier;
+ }
+
+ @JsonIgnore
+ public boolean allowSync() {
+ return allowSync;
+ }
+
+ @JsonIgnore
+ public String art() {
+ return art;
+ }
+
+ @JsonIgnore
+ public String content() {
+ return content;
+ }
+
+ @JsonIgnore
+ public String mediaTagPrefix() {
+ return mediaTagPrefix;
+ }
+
+ @JsonIgnore
+ public long mediaTagVersion() {
+ return mediaTagVersion;
+ }
+
+ @JsonIgnore
+ public boolean nocache() {
+ return nocache;
+ }
+
+ @JsonIgnore
+ public String thumb() {
+ return thumb;
+ }
+
+ @JsonIgnore
+ public String title1() {
+ return title1;
+ }
+
+ @JsonIgnore
+ public String title2() {
+ return title2;
+ }
+
+ @JsonIgnore
+ public String viewGroup() {
+ return viewGroup;
+ }
+
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional> directory() {
+ return (Optional>) directory;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryMediaContainer withSize(double size) {
+ Utils.checkNotNull(size, "size");
+ this.size = size;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withOffset(int offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = Optional.ofNullable(offset);
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withOffset(Optional offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = offset;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withTotalSize(int totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = Optional.ofNullable(totalSize);
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withTotalSize(Optional totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = totalSize;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withIdentifier(String identifier) {
+ Utils.checkNotNull(identifier, "identifier");
+ this.identifier = identifier;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withAllowSync(boolean allowSync) {
+ Utils.checkNotNull(allowSync, "allowSync");
+ this.allowSync = allowSync;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withArt(String art) {
+ Utils.checkNotNull(art, "art");
+ this.art = art;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withContent(String content) {
+ Utils.checkNotNull(content, "content");
+ this.content = content;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withMediaTagPrefix(String mediaTagPrefix) {
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ this.mediaTagPrefix = mediaTagPrefix;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withMediaTagVersion(long mediaTagVersion) {
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ this.mediaTagVersion = mediaTagVersion;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withNocache(boolean nocache) {
+ Utils.checkNotNull(nocache, "nocache");
+ this.nocache = nocache;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withThumb(String thumb) {
+ Utils.checkNotNull(thumb, "thumb");
+ this.thumb = thumb;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withTitle1(String title1) {
+ Utils.checkNotNull(title1, "title1");
+ this.title1 = title1;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withTitle2(String title2) {
+ Utils.checkNotNull(title2, "title2");
+ this.title2 = title2;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withViewGroup(String viewGroup) {
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ this.viewGroup = viewGroup;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withDirectory(List directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = Optional.ofNullable(directory);
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer withDirectory(Optional extends List> directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = directory;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryMediaContainer other = (GetCountriesLibraryMediaContainer) o;
+ return
+ Objects.deepEquals(this.size, other.size) &&
+ Objects.deepEquals(this.offset, other.offset) &&
+ Objects.deepEquals(this.totalSize, other.totalSize) &&
+ Objects.deepEquals(this.identifier, other.identifier) &&
+ Objects.deepEquals(this.allowSync, other.allowSync) &&
+ Objects.deepEquals(this.art, other.art) &&
+ Objects.deepEquals(this.content, other.content) &&
+ Objects.deepEquals(this.mediaTagPrefix, other.mediaTagPrefix) &&
+ Objects.deepEquals(this.mediaTagVersion, other.mediaTagVersion) &&
+ Objects.deepEquals(this.nocache, other.nocache) &&
+ Objects.deepEquals(this.thumb, other.thumb) &&
+ Objects.deepEquals(this.title1, other.title1) &&
+ Objects.deepEquals(this.title2, other.title2) &&
+ Objects.deepEquals(this.viewGroup, other.viewGroup) &&
+ Objects.deepEquals(this.directory, other.directory);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ size,
+ offset,
+ totalSize,
+ identifier,
+ allowSync,
+ art,
+ content,
+ mediaTagPrefix,
+ mediaTagVersion,
+ nocache,
+ thumb,
+ title1,
+ title2,
+ viewGroup,
+ directory);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryMediaContainer.class,
+ "size", size,
+ "offset", offset,
+ "totalSize", totalSize,
+ "identifier", identifier,
+ "allowSync", allowSync,
+ "art", art,
+ "content", content,
+ "mediaTagPrefix", mediaTagPrefix,
+ "mediaTagVersion", mediaTagVersion,
+ "nocache", nocache,
+ "thumb", thumb,
+ "title1", title1,
+ "title2", title2,
+ "viewGroup", viewGroup,
+ "directory", directory);
+ }
+
+ public final static class Builder {
+
+ private Double size;
+
+ private Optional offset = Optional.empty();
+
+ private Optional totalSize = Optional.empty();
+
+ private String identifier;
+
+ private Boolean allowSync;
+
+ private String art;
+
+ private String content;
+
+ private String mediaTagPrefix;
+
+ private Long mediaTagVersion;
+
+ private Boolean nocache;
+
+ private String thumb;
+
+ private String title1;
+
+ private String title2;
+
+ private String viewGroup;
+
+ private Optional extends List> directory = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder size(double size) {
+ Utils.checkNotNull(size, "size");
+ this.size = size;
+ return this;
+ }
+
+ public Builder offset(int offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = Optional.ofNullable(offset);
+ return this;
+ }
+
+ public Builder offset(Optional offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = offset;
+ return this;
+ }
+
+ public Builder totalSize(int totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = Optional.ofNullable(totalSize);
+ return this;
+ }
+
+ public Builder totalSize(Optional totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = totalSize;
+ return this;
+ }
+
+ public Builder identifier(String identifier) {
+ Utils.checkNotNull(identifier, "identifier");
+ this.identifier = identifier;
+ return this;
+ }
+
+ public Builder allowSync(boolean allowSync) {
+ Utils.checkNotNull(allowSync, "allowSync");
+ this.allowSync = allowSync;
+ return this;
+ }
+
+ public Builder art(String art) {
+ Utils.checkNotNull(art, "art");
+ this.art = art;
+ return this;
+ }
+
+ public Builder content(String content) {
+ Utils.checkNotNull(content, "content");
+ this.content = content;
+ return this;
+ }
+
+ public Builder mediaTagPrefix(String mediaTagPrefix) {
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ this.mediaTagPrefix = mediaTagPrefix;
+ return this;
+ }
+
+ public Builder mediaTagVersion(long mediaTagVersion) {
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ this.mediaTagVersion = mediaTagVersion;
+ return this;
+ }
+
+ public Builder nocache(boolean nocache) {
+ Utils.checkNotNull(nocache, "nocache");
+ this.nocache = nocache;
+ return this;
+ }
+
+ public Builder thumb(String thumb) {
+ Utils.checkNotNull(thumb, "thumb");
+ this.thumb = thumb;
+ return this;
+ }
+
+ public Builder title1(String title1) {
+ Utils.checkNotNull(title1, "title1");
+ this.title1 = title1;
+ return this;
+ }
+
+ public Builder title2(String title2) {
+ Utils.checkNotNull(title2, "title2");
+ this.title2 = title2;
+ return this;
+ }
+
+ public Builder viewGroup(String viewGroup) {
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ this.viewGroup = viewGroup;
+ return this;
+ }
+
+ public Builder directory(List directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = Optional.ofNullable(directory);
+ return this;
+ }
+
+ public Builder directory(Optional extends List> directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = directory;
+ return this;
+ }
+
+ public GetCountriesLibraryMediaContainer build() {
+ return new GetCountriesLibraryMediaContainer(
+ size,
+ offset,
+ totalSize,
+ identifier,
+ allowSync,
+ art,
+ content,
+ mediaTagPrefix,
+ mediaTagVersion,
+ nocache,
+ thumb,
+ title1,
+ title2,
+ viewGroup,
+ directory);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequest.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequest.java
new file mode 100644
index 00000000..d5ac43a3
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequest.java
@@ -0,0 +1,110 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import dev.plexapi.sdk.utils.SpeakeasyMetadata;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+
+
+public class GetCountriesLibraryRequest {
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ @SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")
+ private int sectionKey;
+
+ @JsonCreator
+ public GetCountriesLibraryRequest(
+ int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ @JsonIgnore
+ public int sectionKey() {
+ return sectionKey;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ public GetCountriesLibraryRequest withSectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryRequest other = (GetCountriesLibraryRequest) o;
+ return
+ Objects.deepEquals(this.sectionKey, other.sectionKey);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ sectionKey);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryRequest.class,
+ "sectionKey", sectionKey);
+ }
+
+ public final static class Builder {
+
+ private Integer sectionKey;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ public Builder sectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ public GetCountriesLibraryRequest build() {
+ return new GetCountriesLibraryRequest(
+ sectionKey);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequestBuilder.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequestBuilder.java
new file mode 100644
index 00000000..786fd4e5
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryRequestBuilder.java
@@ -0,0 +1,30 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+
+public class GetCountriesLibraryRequestBuilder {
+
+ private Integer sectionKey;
+ private final SDKMethodInterfaces.MethodCallGetCountriesLibrary sdk;
+
+ public GetCountriesLibraryRequestBuilder(SDKMethodInterfaces.MethodCallGetCountriesLibrary sdk) {
+ this.sdk = sdk;
+ }
+
+ public GetCountriesLibraryRequestBuilder sectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ public GetCountriesLibraryResponse call() throws Exception {
+
+ return sdk.getCountriesLibrary(
+ sectionKey);
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponse.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponse.java
new file mode 100644
index 00000000..4283bac2
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponse.java
@@ -0,0 +1,251 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import dev.plexapi.sdk.utils.Response;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetCountriesLibraryResponse implements Response {
+
+ /**
+ * HTTP response content type for this operation
+ */
+ private String contentType;
+
+ /**
+ * HTTP response status code for this operation
+ */
+ private int statusCode;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ private HttpResponse rawResponse;
+
+ /**
+ * Successful response containing media container data.
+ */
+ private Optional extends GetCountriesLibraryResponseBody> object;
+
+ @JsonCreator
+ public GetCountriesLibraryResponse(
+ String contentType,
+ int statusCode,
+ HttpResponse rawResponse,
+ Optional extends GetCountriesLibraryResponseBody> object) {
+ Utils.checkNotNull(contentType, "contentType");
+ Utils.checkNotNull(statusCode, "statusCode");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ Utils.checkNotNull(object, "object");
+ this.contentType = contentType;
+ this.statusCode = statusCode;
+ this.rawResponse = rawResponse;
+ this.object = object;
+ }
+
+ public GetCountriesLibraryResponse(
+ String contentType,
+ int statusCode,
+ HttpResponse rawResponse) {
+ this(contentType, statusCode, rawResponse, Optional.empty());
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ @JsonIgnore
+ public String contentType() {
+ return contentType;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ @JsonIgnore
+ public int statusCode() {
+ return statusCode;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonIgnore
+ public HttpResponse rawResponse() {
+ return rawResponse;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional object() {
+ return (Optional) object;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ public GetCountriesLibraryResponse withContentType(String contentType) {
+ Utils.checkNotNull(contentType, "contentType");
+ this.contentType = contentType;
+ return this;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ public GetCountriesLibraryResponse withStatusCode(int statusCode) {
+ Utils.checkNotNull(statusCode, "statusCode");
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetCountriesLibraryResponse withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public GetCountriesLibraryResponse withObject(GetCountriesLibraryResponseBody object) {
+ Utils.checkNotNull(object, "object");
+ this.object = Optional.ofNullable(object);
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public GetCountriesLibraryResponse withObject(Optional extends GetCountriesLibraryResponseBody> object) {
+ Utils.checkNotNull(object, "object");
+ this.object = object;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryResponse other = (GetCountriesLibraryResponse) o;
+ return
+ Objects.deepEquals(this.contentType, other.contentType) &&
+ Objects.deepEquals(this.statusCode, other.statusCode) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse) &&
+ Objects.deepEquals(this.object, other.object);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ contentType,
+ statusCode,
+ rawResponse,
+ object);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryResponse.class,
+ "contentType", contentType,
+ "statusCode", statusCode,
+ "rawResponse", rawResponse,
+ "object", object);
+ }
+
+ public final static class Builder {
+
+ private String contentType;
+
+ private Integer statusCode;
+
+ private HttpResponse rawResponse;
+
+ private Optional extends GetCountriesLibraryResponseBody> object = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ public Builder contentType(String contentType) {
+ Utils.checkNotNull(contentType, "contentType");
+ this.contentType = contentType;
+ return this;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ public Builder statusCode(int statusCode) {
+ Utils.checkNotNull(statusCode, "statusCode");
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public Builder object(GetCountriesLibraryResponseBody object) {
+ Utils.checkNotNull(object, "object");
+ this.object = Optional.ofNullable(object);
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public Builder object(Optional extends GetCountriesLibraryResponseBody> object) {
+ Utils.checkNotNull(object, "object");
+ this.object = object;
+ return this;
+ }
+
+ public GetCountriesLibraryResponse build() {
+ return new GetCountriesLibraryResponse(
+ contentType,
+ statusCode,
+ rawResponse,
+ object);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponseBody.java b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponseBody.java
new file mode 100644
index 00000000..2ae9ab4a
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetCountriesLibraryResponseBody.java
@@ -0,0 +1,114 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetCountriesLibraryResponseBody - Successful response containing media container data.
+ */
+
+public class GetCountriesLibraryResponseBody {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("MediaContainer")
+ private Optional extends GetCountriesLibraryMediaContainer> mediaContainer;
+
+ @JsonCreator
+ public GetCountriesLibraryResponseBody(
+ @JsonProperty("MediaContainer") Optional extends GetCountriesLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ }
+
+ public GetCountriesLibraryResponseBody() {
+ this(Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional mediaContainer() {
+ return (Optional) mediaContainer;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetCountriesLibraryResponseBody withMediaContainer(GetCountriesLibraryMediaContainer mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = Optional.ofNullable(mediaContainer);
+ return this;
+ }
+
+ public GetCountriesLibraryResponseBody withMediaContainer(Optional extends GetCountriesLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetCountriesLibraryResponseBody other = (GetCountriesLibraryResponseBody) o;
+ return
+ Objects.deepEquals(this.mediaContainer, other.mediaContainer);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ mediaContainer);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetCountriesLibraryResponseBody.class,
+ "mediaContainer", mediaContainer);
+ }
+
+ public final static class Builder {
+
+ private Optional extends GetCountriesLibraryMediaContainer> mediaContainer = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder mediaContainer(GetCountriesLibraryMediaContainer mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = Optional.ofNullable(mediaContainer);
+ return this;
+ }
+
+ public Builder mediaContainer(Optional extends GetCountriesLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ return this;
+ }
+
+ public GetCountriesLibraryResponseBody build() {
+ return new GetCountriesLibraryResponseBody(
+ mediaContainer);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryDirectory.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryDirectory.java
new file mode 100644
index 00000000..de089835
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryDirectory.java
@@ -0,0 +1,176 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+
+
+public class GetGenresLibraryDirectory {
+
+ @JsonProperty("fastKey")
+ private String fastKey;
+
+ @JsonProperty("key")
+ private String key;
+
+ @JsonProperty("title")
+ private String title;
+
+ @JsonProperty("type")
+ private String type;
+
+ @JsonCreator
+ public GetGenresLibraryDirectory(
+ @JsonProperty("fastKey") String fastKey,
+ @JsonProperty("key") String key,
+ @JsonProperty("title") String title,
+ @JsonProperty("type") String type) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ Utils.checkNotNull(key, "key");
+ Utils.checkNotNull(title, "title");
+ Utils.checkNotNull(type, "type");
+ this.fastKey = fastKey;
+ this.key = key;
+ this.title = title;
+ this.type = type;
+ }
+
+ @JsonIgnore
+ public String fastKey() {
+ return fastKey;
+ }
+
+ @JsonIgnore
+ public String key() {
+ return key;
+ }
+
+ @JsonIgnore
+ public String title() {
+ return title;
+ }
+
+ @JsonIgnore
+ public String type() {
+ return type;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryDirectory withFastKey(String fastKey) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ this.fastKey = fastKey;
+ return this;
+ }
+
+ public GetGenresLibraryDirectory withKey(String key) {
+ Utils.checkNotNull(key, "key");
+ this.key = key;
+ return this;
+ }
+
+ public GetGenresLibraryDirectory withTitle(String title) {
+ Utils.checkNotNull(title, "title");
+ this.title = title;
+ return this;
+ }
+
+ public GetGenresLibraryDirectory withType(String type) {
+ Utils.checkNotNull(type, "type");
+ this.type = type;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryDirectory other = (GetGenresLibraryDirectory) o;
+ return
+ Objects.deepEquals(this.fastKey, other.fastKey) &&
+ Objects.deepEquals(this.key, other.key) &&
+ Objects.deepEquals(this.title, other.title) &&
+ Objects.deepEquals(this.type, other.type);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ fastKey,
+ key,
+ title,
+ type);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryDirectory.class,
+ "fastKey", fastKey,
+ "key", key,
+ "title", title,
+ "type", type);
+ }
+
+ public final static class Builder {
+
+ private String fastKey;
+
+ private String key;
+
+ private String title;
+
+ private String type;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder fastKey(String fastKey) {
+ Utils.checkNotNull(fastKey, "fastKey");
+ this.fastKey = fastKey;
+ return this;
+ }
+
+ public Builder key(String key) {
+ Utils.checkNotNull(key, "key");
+ this.key = key;
+ return this;
+ }
+
+ public Builder title(String title) {
+ Utils.checkNotNull(title, "title");
+ this.title = title;
+ return this;
+ }
+
+ public Builder type(String type) {
+ Utils.checkNotNull(type, "type");
+ this.type = type;
+ return this;
+ }
+
+ public GetGenresLibraryDirectory build() {
+ return new GetGenresLibraryDirectory(
+ fastKey,
+ key,
+ title,
+ type);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryMediaContainer.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryMediaContainer.java
new file mode 100644
index 00000000..15390758
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryMediaContainer.java
@@ -0,0 +1,560 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Boolean;
+import java.lang.Double;
+import java.lang.Integer;
+import java.lang.Long;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetGenresLibraryMediaContainer {
+
+ @JsonProperty("size")
+ private double size;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("offset")
+ private Optional offset;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("totalSize")
+ private Optional totalSize;
+
+ @JsonProperty("identifier")
+ private String identifier;
+
+ @JsonProperty("allowSync")
+ private boolean allowSync;
+
+ @JsonProperty("art")
+ private String art;
+
+ @JsonProperty("content")
+ private String content;
+
+ @JsonProperty("mediaTagPrefix")
+ private String mediaTagPrefix;
+
+ @JsonProperty("mediaTagVersion")
+ private long mediaTagVersion;
+
+ @JsonProperty("nocache")
+ private boolean nocache;
+
+ @JsonProperty("thumb")
+ private String thumb;
+
+ @JsonProperty("title1")
+ private String title1;
+
+ @JsonProperty("title2")
+ private String title2;
+
+ @JsonProperty("viewGroup")
+ private String viewGroup;
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("Directory")
+ private Optional extends List> directory;
+
+ @JsonCreator
+ public GetGenresLibraryMediaContainer(
+ @JsonProperty("size") double size,
+ @JsonProperty("offset") Optional offset,
+ @JsonProperty("totalSize") Optional totalSize,
+ @JsonProperty("identifier") String identifier,
+ @JsonProperty("allowSync") boolean allowSync,
+ @JsonProperty("art") String art,
+ @JsonProperty("content") String content,
+ @JsonProperty("mediaTagPrefix") String mediaTagPrefix,
+ @JsonProperty("mediaTagVersion") long mediaTagVersion,
+ @JsonProperty("nocache") boolean nocache,
+ @JsonProperty("thumb") String thumb,
+ @JsonProperty("title1") String title1,
+ @JsonProperty("title2") String title2,
+ @JsonProperty("viewGroup") String viewGroup,
+ @JsonProperty("Directory") Optional extends List> directory) {
+ Utils.checkNotNull(size, "size");
+ Utils.checkNotNull(offset, "offset");
+ Utils.checkNotNull(totalSize, "totalSize");
+ Utils.checkNotNull(identifier, "identifier");
+ Utils.checkNotNull(allowSync, "allowSync");
+ Utils.checkNotNull(art, "art");
+ Utils.checkNotNull(content, "content");
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ Utils.checkNotNull(nocache, "nocache");
+ Utils.checkNotNull(thumb, "thumb");
+ Utils.checkNotNull(title1, "title1");
+ Utils.checkNotNull(title2, "title2");
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ Utils.checkNotNull(directory, "directory");
+ this.size = size;
+ this.offset = offset;
+ this.totalSize = totalSize;
+ this.identifier = identifier;
+ this.allowSync = allowSync;
+ this.art = art;
+ this.content = content;
+ this.mediaTagPrefix = mediaTagPrefix;
+ this.mediaTagVersion = mediaTagVersion;
+ this.nocache = nocache;
+ this.thumb = thumb;
+ this.title1 = title1;
+ this.title2 = title2;
+ this.viewGroup = viewGroup;
+ this.directory = directory;
+ }
+
+ public GetGenresLibraryMediaContainer(
+ double size,
+ String identifier,
+ boolean allowSync,
+ String art,
+ String content,
+ String mediaTagPrefix,
+ long mediaTagVersion,
+ boolean nocache,
+ String thumb,
+ String title1,
+ String title2,
+ String viewGroup) {
+ this(size, Optional.empty(), Optional.empty(), identifier, allowSync, art, content, mediaTagPrefix, mediaTagVersion, nocache, thumb, title1, title2, viewGroup, Optional.empty());
+ }
+
+ @JsonIgnore
+ public double size() {
+ return size;
+ }
+
+ @JsonIgnore
+ public Optional offset() {
+ return offset;
+ }
+
+ @JsonIgnore
+ public Optional totalSize() {
+ return totalSize;
+ }
+
+ @JsonIgnore
+ public String identifier() {
+ return identifier;
+ }
+
+ @JsonIgnore
+ public boolean allowSync() {
+ return allowSync;
+ }
+
+ @JsonIgnore
+ public String art() {
+ return art;
+ }
+
+ @JsonIgnore
+ public String content() {
+ return content;
+ }
+
+ @JsonIgnore
+ public String mediaTagPrefix() {
+ return mediaTagPrefix;
+ }
+
+ @JsonIgnore
+ public long mediaTagVersion() {
+ return mediaTagVersion;
+ }
+
+ @JsonIgnore
+ public boolean nocache() {
+ return nocache;
+ }
+
+ @JsonIgnore
+ public String thumb() {
+ return thumb;
+ }
+
+ @JsonIgnore
+ public String title1() {
+ return title1;
+ }
+
+ @JsonIgnore
+ public String title2() {
+ return title2;
+ }
+
+ @JsonIgnore
+ public String viewGroup() {
+ return viewGroup;
+ }
+
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional> directory() {
+ return (Optional>) directory;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryMediaContainer withSize(double size) {
+ Utils.checkNotNull(size, "size");
+ this.size = size;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withOffset(int offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = Optional.ofNullable(offset);
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withOffset(Optional offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = offset;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withTotalSize(int totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = Optional.ofNullable(totalSize);
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withTotalSize(Optional totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = totalSize;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withIdentifier(String identifier) {
+ Utils.checkNotNull(identifier, "identifier");
+ this.identifier = identifier;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withAllowSync(boolean allowSync) {
+ Utils.checkNotNull(allowSync, "allowSync");
+ this.allowSync = allowSync;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withArt(String art) {
+ Utils.checkNotNull(art, "art");
+ this.art = art;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withContent(String content) {
+ Utils.checkNotNull(content, "content");
+ this.content = content;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withMediaTagPrefix(String mediaTagPrefix) {
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ this.mediaTagPrefix = mediaTagPrefix;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withMediaTagVersion(long mediaTagVersion) {
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ this.mediaTagVersion = mediaTagVersion;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withNocache(boolean nocache) {
+ Utils.checkNotNull(nocache, "nocache");
+ this.nocache = nocache;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withThumb(String thumb) {
+ Utils.checkNotNull(thumb, "thumb");
+ this.thumb = thumb;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withTitle1(String title1) {
+ Utils.checkNotNull(title1, "title1");
+ this.title1 = title1;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withTitle2(String title2) {
+ Utils.checkNotNull(title2, "title2");
+ this.title2 = title2;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withViewGroup(String viewGroup) {
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ this.viewGroup = viewGroup;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withDirectory(List directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = Optional.ofNullable(directory);
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer withDirectory(Optional extends List> directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = directory;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryMediaContainer other = (GetGenresLibraryMediaContainer) o;
+ return
+ Objects.deepEquals(this.size, other.size) &&
+ Objects.deepEquals(this.offset, other.offset) &&
+ Objects.deepEquals(this.totalSize, other.totalSize) &&
+ Objects.deepEquals(this.identifier, other.identifier) &&
+ Objects.deepEquals(this.allowSync, other.allowSync) &&
+ Objects.deepEquals(this.art, other.art) &&
+ Objects.deepEquals(this.content, other.content) &&
+ Objects.deepEquals(this.mediaTagPrefix, other.mediaTagPrefix) &&
+ Objects.deepEquals(this.mediaTagVersion, other.mediaTagVersion) &&
+ Objects.deepEquals(this.nocache, other.nocache) &&
+ Objects.deepEquals(this.thumb, other.thumb) &&
+ Objects.deepEquals(this.title1, other.title1) &&
+ Objects.deepEquals(this.title2, other.title2) &&
+ Objects.deepEquals(this.viewGroup, other.viewGroup) &&
+ Objects.deepEquals(this.directory, other.directory);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ size,
+ offset,
+ totalSize,
+ identifier,
+ allowSync,
+ art,
+ content,
+ mediaTagPrefix,
+ mediaTagVersion,
+ nocache,
+ thumb,
+ title1,
+ title2,
+ viewGroup,
+ directory);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryMediaContainer.class,
+ "size", size,
+ "offset", offset,
+ "totalSize", totalSize,
+ "identifier", identifier,
+ "allowSync", allowSync,
+ "art", art,
+ "content", content,
+ "mediaTagPrefix", mediaTagPrefix,
+ "mediaTagVersion", mediaTagVersion,
+ "nocache", nocache,
+ "thumb", thumb,
+ "title1", title1,
+ "title2", title2,
+ "viewGroup", viewGroup,
+ "directory", directory);
+ }
+
+ public final static class Builder {
+
+ private Double size;
+
+ private Optional offset = Optional.empty();
+
+ private Optional totalSize = Optional.empty();
+
+ private String identifier;
+
+ private Boolean allowSync;
+
+ private String art;
+
+ private String content;
+
+ private String mediaTagPrefix;
+
+ private Long mediaTagVersion;
+
+ private Boolean nocache;
+
+ private String thumb;
+
+ private String title1;
+
+ private String title2;
+
+ private String viewGroup;
+
+ private Optional extends List> directory = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder size(double size) {
+ Utils.checkNotNull(size, "size");
+ this.size = size;
+ return this;
+ }
+
+ public Builder offset(int offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = Optional.ofNullable(offset);
+ return this;
+ }
+
+ public Builder offset(Optional offset) {
+ Utils.checkNotNull(offset, "offset");
+ this.offset = offset;
+ return this;
+ }
+
+ public Builder totalSize(int totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = Optional.ofNullable(totalSize);
+ return this;
+ }
+
+ public Builder totalSize(Optional totalSize) {
+ Utils.checkNotNull(totalSize, "totalSize");
+ this.totalSize = totalSize;
+ return this;
+ }
+
+ public Builder identifier(String identifier) {
+ Utils.checkNotNull(identifier, "identifier");
+ this.identifier = identifier;
+ return this;
+ }
+
+ public Builder allowSync(boolean allowSync) {
+ Utils.checkNotNull(allowSync, "allowSync");
+ this.allowSync = allowSync;
+ return this;
+ }
+
+ public Builder art(String art) {
+ Utils.checkNotNull(art, "art");
+ this.art = art;
+ return this;
+ }
+
+ public Builder content(String content) {
+ Utils.checkNotNull(content, "content");
+ this.content = content;
+ return this;
+ }
+
+ public Builder mediaTagPrefix(String mediaTagPrefix) {
+ Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix");
+ this.mediaTagPrefix = mediaTagPrefix;
+ return this;
+ }
+
+ public Builder mediaTagVersion(long mediaTagVersion) {
+ Utils.checkNotNull(mediaTagVersion, "mediaTagVersion");
+ this.mediaTagVersion = mediaTagVersion;
+ return this;
+ }
+
+ public Builder nocache(boolean nocache) {
+ Utils.checkNotNull(nocache, "nocache");
+ this.nocache = nocache;
+ return this;
+ }
+
+ public Builder thumb(String thumb) {
+ Utils.checkNotNull(thumb, "thumb");
+ this.thumb = thumb;
+ return this;
+ }
+
+ public Builder title1(String title1) {
+ Utils.checkNotNull(title1, "title1");
+ this.title1 = title1;
+ return this;
+ }
+
+ public Builder title2(String title2) {
+ Utils.checkNotNull(title2, "title2");
+ this.title2 = title2;
+ return this;
+ }
+
+ public Builder viewGroup(String viewGroup) {
+ Utils.checkNotNull(viewGroup, "viewGroup");
+ this.viewGroup = viewGroup;
+ return this;
+ }
+
+ public Builder directory(List directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = Optional.ofNullable(directory);
+ return this;
+ }
+
+ public Builder directory(Optional extends List> directory) {
+ Utils.checkNotNull(directory, "directory");
+ this.directory = directory;
+ return this;
+ }
+
+ public GetGenresLibraryMediaContainer build() {
+ return new GetGenresLibraryMediaContainer(
+ size,
+ offset,
+ totalSize,
+ identifier,
+ allowSync,
+ art,
+ content,
+ mediaTagPrefix,
+ mediaTagVersion,
+ nocache,
+ thumb,
+ title1,
+ title2,
+ viewGroup,
+ directory);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequest.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequest.java
new file mode 100644
index 00000000..d5567d8e
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequest.java
@@ -0,0 +1,110 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import dev.plexapi.sdk.utils.SpeakeasyMetadata;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.util.Objects;
+
+
+public class GetGenresLibraryRequest {
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ @SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")
+ private int sectionKey;
+
+ @JsonCreator
+ public GetGenresLibraryRequest(
+ int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ @JsonIgnore
+ public int sectionKey() {
+ return sectionKey;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ public GetGenresLibraryRequest withSectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryRequest other = (GetGenresLibraryRequest) o;
+ return
+ Objects.deepEquals(this.sectionKey, other.sectionKey);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ sectionKey);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryRequest.class,
+ "sectionKey", sectionKey);
+ }
+
+ public final static class Builder {
+
+ private Integer sectionKey;
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ /**
+ * The unique key of the Plex library.
+ * Note: This is unique in the context of the Plex server.
+ *
+ */
+ public Builder sectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ public GetGenresLibraryRequest build() {
+ return new GetGenresLibraryRequest(
+ sectionKey);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequestBuilder.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequestBuilder.java
new file mode 100644
index 00000000..7dd7175b
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryRequestBuilder.java
@@ -0,0 +1,30 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Integer;
+
+public class GetGenresLibraryRequestBuilder {
+
+ private Integer sectionKey;
+ private final SDKMethodInterfaces.MethodCallGetGenresLibrary sdk;
+
+ public GetGenresLibraryRequestBuilder(SDKMethodInterfaces.MethodCallGetGenresLibrary sdk) {
+ this.sdk = sdk;
+ }
+
+ public GetGenresLibraryRequestBuilder sectionKey(int sectionKey) {
+ Utils.checkNotNull(sectionKey, "sectionKey");
+ this.sectionKey = sectionKey;
+ return this;
+ }
+
+ public GetGenresLibraryResponse call() throws Exception {
+
+ return sdk.getGenresLibrary(
+ sectionKey);
+ }
+}
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponse.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponse.java
new file mode 100644
index 00000000..c200caf1
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponse.java
@@ -0,0 +1,251 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import dev.plexapi.sdk.utils.Response;
+import dev.plexapi.sdk.utils.Utils;
+import java.io.InputStream;
+import java.lang.Integer;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.net.http.HttpResponse;
+import java.util.Objects;
+import java.util.Optional;
+
+
+public class GetGenresLibraryResponse implements Response {
+
+ /**
+ * HTTP response content type for this operation
+ */
+ private String contentType;
+
+ /**
+ * HTTP response status code for this operation
+ */
+ private int statusCode;
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ private HttpResponse rawResponse;
+
+ /**
+ * Successful response containing media container data.
+ */
+ private Optional extends GetGenresLibraryResponseBody> object;
+
+ @JsonCreator
+ public GetGenresLibraryResponse(
+ String contentType,
+ int statusCode,
+ HttpResponse rawResponse,
+ Optional extends GetGenresLibraryResponseBody> object) {
+ Utils.checkNotNull(contentType, "contentType");
+ Utils.checkNotNull(statusCode, "statusCode");
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ Utils.checkNotNull(object, "object");
+ this.contentType = contentType;
+ this.statusCode = statusCode;
+ this.rawResponse = rawResponse;
+ this.object = object;
+ }
+
+ public GetGenresLibraryResponse(
+ String contentType,
+ int statusCode,
+ HttpResponse rawResponse) {
+ this(contentType, statusCode, rawResponse, Optional.empty());
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ @JsonIgnore
+ public String contentType() {
+ return contentType;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ @JsonIgnore
+ public int statusCode() {
+ return statusCode;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ @JsonIgnore
+ public HttpResponse rawResponse() {
+ return rawResponse;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional object() {
+ return (Optional) object;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ public GetGenresLibraryResponse withContentType(String contentType) {
+ Utils.checkNotNull(contentType, "contentType");
+ this.contentType = contentType;
+ return this;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ public GetGenresLibraryResponse withStatusCode(int statusCode) {
+ Utils.checkNotNull(statusCode, "statusCode");
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public GetGenresLibraryResponse withRawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public GetGenresLibraryResponse withObject(GetGenresLibraryResponseBody object) {
+ Utils.checkNotNull(object, "object");
+ this.object = Optional.ofNullable(object);
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public GetGenresLibraryResponse withObject(Optional extends GetGenresLibraryResponseBody> object) {
+ Utils.checkNotNull(object, "object");
+ this.object = object;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryResponse other = (GetGenresLibraryResponse) o;
+ return
+ Objects.deepEquals(this.contentType, other.contentType) &&
+ Objects.deepEquals(this.statusCode, other.statusCode) &&
+ Objects.deepEquals(this.rawResponse, other.rawResponse) &&
+ Objects.deepEquals(this.object, other.object);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ contentType,
+ statusCode,
+ rawResponse,
+ object);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryResponse.class,
+ "contentType", contentType,
+ "statusCode", statusCode,
+ "rawResponse", rawResponse,
+ "object", object);
+ }
+
+ public final static class Builder {
+
+ private String contentType;
+
+ private Integer statusCode;
+
+ private HttpResponse rawResponse;
+
+ private Optional extends GetGenresLibraryResponseBody> object = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ /**
+ * HTTP response content type for this operation
+ */
+ public Builder contentType(String contentType) {
+ Utils.checkNotNull(contentType, "contentType");
+ this.contentType = contentType;
+ return this;
+ }
+
+ /**
+ * HTTP response status code for this operation
+ */
+ public Builder statusCode(int statusCode) {
+ Utils.checkNotNull(statusCode, "statusCode");
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Raw HTTP response; suitable for custom response parsing
+ */
+ public Builder rawResponse(HttpResponse rawResponse) {
+ Utils.checkNotNull(rawResponse, "rawResponse");
+ this.rawResponse = rawResponse;
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public Builder object(GetGenresLibraryResponseBody object) {
+ Utils.checkNotNull(object, "object");
+ this.object = Optional.ofNullable(object);
+ return this;
+ }
+
+ /**
+ * Successful response containing media container data.
+ */
+ public Builder object(Optional extends GetGenresLibraryResponseBody> object) {
+ Utils.checkNotNull(object, "object");
+ this.object = object;
+ return this;
+ }
+
+ public GetGenresLibraryResponse build() {
+ return new GetGenresLibraryResponse(
+ contentType,
+ statusCode,
+ rawResponse,
+ object);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponseBody.java b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponseBody.java
new file mode 100644
index 00000000..bce0fb5c
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/models/operations/GetGenresLibraryResponseBody.java
@@ -0,0 +1,114 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.models.operations;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import dev.plexapi.sdk.utils.Utils;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * GetGenresLibraryResponseBody - Successful response containing media container data.
+ */
+
+public class GetGenresLibraryResponseBody {
+
+ @JsonInclude(Include.NON_ABSENT)
+ @JsonProperty("MediaContainer")
+ private Optional extends GetGenresLibraryMediaContainer> mediaContainer;
+
+ @JsonCreator
+ public GetGenresLibraryResponseBody(
+ @JsonProperty("MediaContainer") Optional extends GetGenresLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ }
+
+ public GetGenresLibraryResponseBody() {
+ this(Optional.empty());
+ }
+
+ @SuppressWarnings("unchecked")
+ @JsonIgnore
+ public Optional mediaContainer() {
+ return (Optional) mediaContainer;
+ }
+
+ public final static Builder builder() {
+ return new Builder();
+ }
+
+ public GetGenresLibraryResponseBody withMediaContainer(GetGenresLibraryMediaContainer mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = Optional.ofNullable(mediaContainer);
+ return this;
+ }
+
+ public GetGenresLibraryResponseBody withMediaContainer(Optional extends GetGenresLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ return this;
+ }
+
+ @Override
+ public boolean equals(java.lang.Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ GetGenresLibraryResponseBody other = (GetGenresLibraryResponseBody) o;
+ return
+ Objects.deepEquals(this.mediaContainer, other.mediaContainer);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ mediaContainer);
+ }
+
+ @Override
+ public String toString() {
+ return Utils.toString(GetGenresLibraryResponseBody.class,
+ "mediaContainer", mediaContainer);
+ }
+
+ public final static class Builder {
+
+ private Optional extends GetGenresLibraryMediaContainer> mediaContainer = Optional.empty();
+
+ private Builder() {
+ // force use of static builder() method
+ }
+
+ public Builder mediaContainer(GetGenresLibraryMediaContainer mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = Optional.ofNullable(mediaContainer);
+ return this;
+ }
+
+ public Builder mediaContainer(Optional extends GetGenresLibraryMediaContainer> mediaContainer) {
+ Utils.checkNotNull(mediaContainer, "mediaContainer");
+ this.mediaContainer = mediaContainer;
+ return this;
+ }
+
+ public GetGenresLibraryResponseBody build() {
+ return new GetGenresLibraryResponseBody(
+ mediaContainer);
+ }
+ }
+}
+
diff --git a/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java b/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java
index 13a1bff2..4847cda0 100644
--- a/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java
+++ b/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java
@@ -283,6 +283,18 @@ public class SDKMethodInterfaces {
}
+ public interface MethodCallGetGenresLibrary {
+ GetGenresLibraryResponse getGenresLibrary(
+ int sectionKey) throws Exception;
+ }
+
+
+ public interface MethodCallGetCountriesLibrary {
+ GetCountriesLibraryResponse getCountriesLibrary(
+ int sectionKey) throws Exception;
+ }
+
+
public interface MethodCallGetSearchAllLibraries {
GetSearchAllLibrariesResponse getSearchAllLibraries(
GetSearchAllLibrariesRequest request) throws Exception;
diff --git a/src/main/java/dev/plexapi/sdk/utils/HTTPRequest.java b/src/main/java/dev/plexapi/sdk/utils/HTTPRequest.java
index d372a878..910012cc 100644
--- a/src/main/java/dev/plexapi/sdk/utils/HTTPRequest.java
+++ b/src/main/java/dev/plexapi/sdk/utils/HTTPRequest.java
@@ -46,7 +46,9 @@ public class HTTPRequest {
headerValues = new ArrayList<>();
headers.put(key, headerValues);
}
- headerValues.add(value);
+ if (!headerValues.contains(value)) {
+ headerValues.add(value);
+ }
return this;
}
diff --git a/src/main/java/dev/plexapi/sdk/utils/RecordingClient.java b/src/main/java/dev/plexapi/sdk/utils/RecordingClient.java
new file mode 100644
index 00000000..dfb58d28
--- /dev/null
+++ b/src/main/java/dev/plexapi/sdk/utils/RecordingClient.java
@@ -0,0 +1,51 @@
+/*
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
+ */
+
+package dev.plexapi.sdk.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Function;
+
+// internal testing use
+public final class RecordingClient implements HTTPClient {
+
+ private final List requests = new CopyOnWriteArrayList<>();
+ private final HTTPClient client;
+ private final List